在windows上安装nginx并注册
一、前言
最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下。
二、在windows下面安装
首先需要到nginx的官网上下载最新版的nginx:http://nginx.org/en/download.html
找到最新版本下载即可:
至于后面的pgp,其实是一种密钥机制(pretty good privacy)。
下载之后,我们发现这个文件是不用安装的,也就是不需要在windows的注册表中注册的,因此我们可以直接使用,如果大家有使用过masm之类的汇编软件,相信大家会理解的,之后,我们就可以直接在cmd中运行了,这个时候可能会出现问题,其中一个问题是闪退。
闪退的原因有很多种,我们要注意查看日志文件:
如果大家遇到下图中我画出的问题:
1 2017/12/13 12:44:23 [emerg] 7260#2152: CreateFile() "C:\Users\爱好妹子的朱\Desktop\nginx-1.13.7/conf/nginx.conf" failed (1113: No mapping for the Unicode character exists in the target multi-byte code page)
那么原因其实很简单,我们读了日志之后就能理解,不能映射编码,说明我们肯定是在路径中有中文字符,也就是我们的文件存放目录一定不能是中文的,要不然肯定会闪退的。
解决办法就是把下载的文件放到全英文的目录之中。
还有一个错误是:
绑定端口异常,那肯定呀,80端口是默认让http协议使用的,我们这里肯定不能占用,同时我们也可以回忆一下常用的端口,比如HTTPS(443),ftp(20,21)等等。
解决办法也很简单,只需要在NGINX中修改一下配置即可:
我们在sublime中打开该文件:
就可以看到相应的配置信息,比如IP地址和端口,这里笔者已经改成了一个大于1024的端口了(其他任意)。
让我们仔细看一下配置文件,我们以后的很多操作都可以从中配置:
1 #user nobody;
2 worker_processes 1;
3
4 #error_log logs/error.log;
5 #error_log logs/error.log notice;
6 #error_log logs/error.log info;
7
8 #pid logs/nginx.pid;
9
10
11 events {
12 worker_connections 1024;
13 }
14
15
16 http {
17 include mime.types;
18 default_type application/octet-stream;
19
20 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
21 # '$status $body_bytes_sent "$http_referer" '
22 # '"$http_user_agent" "$http_x_forwarded_for"';
23
24 #access_log logs/access.log main;
25
26 sendfile on;
27 #tcp_nopush on;
28
29 #keepalive_timeout 0;
30 keepalive_timeout 65;
31
32 #gzip on;
33
34 server {
35 listen 31000;
36 server_name localhost;
37
38 #charset koi8-r;
39
40 #access_log logs/host.access.log main;
41
42 location / {
43 root html;
44 index index.html index.htm;
45 }
46
47 #error_page 404 /404.html;
48
49 # redirect server error pages to the static page /50x.html
50 #
51 error_page 500 502 503 504 /50x.html;
52 location = /50x.html {
53 root html;
54 }
55
56 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
57 #
58 #location ~ \.php$ {
59 # proxy_pass http://127.0.0.1;
60 #}
61
62 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
63 #
64 #location ~ \.php$ {
65 # root html;
66 # fastcgi_pass 127.0.0.1:9000;
67 # fastcgi_index index.php;
68 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
69 # include fastcgi_params;
70 #}
71
72 # deny access to .htaccess files, if Apache's document root
73 # concurs with nginx's one
74 #
75 #location ~ /\.ht {
76 # deny all;
77 #}
78 }
79
80
81 # another virtual host using mix of IP-, name-, and port-based configuration
82 #
83 #server {
84 # listen 8000;
85 # listen somename:8080;
86 # server_name somename alias another.alias;
87
88 # location / {
89 # root html;
90 # index index.html index.htm;
91 # }
92 #}
93
94
95 # HTTPS server
96 #
97 #server {
98 # listen 443 ssl;
99 # server_name localhost;
100
101 # ssl_certificate cert.pem;
102 # ssl_certificate_key cert.key;
103
104 # ssl_session_cache shared:SSL:1m;
105 # ssl_session_timeout 5m;
106
107 # ssl_ciphers HIGH:!aNULL:!MD5;
108 # ssl_prefer_server_ciphers on;
109
110 # location / {
111 # root html;
112 # index index.html index.htm;
113 # }
114 #}
115
116 }
三、将nignx注册成服务
如果我们经常使用,那么在cmd之中启动是非常不方便的,因此,我们可以将其注册成服务。
首先我们下载Windows Service Wrapper(比如winsw-1.8-bin.exe)服务注册工具,然后将这个工具放到ngnix安装目录之下,然后新建一个文件,这个文件的文件名需要和我们的服务注册工具一致,也就是说如果把服务注册工具重命名,那么这个文件也需要重命名(winsw-1.8-bin.xml):
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <service>
3 <id>nginx</id>
4 <name>zyrNginx Service</name>
5 <description>High Performance Nginx Service 朱彦荣 zyr</description>
6 <executable>D:\nginx-1.14.0\nginx.exe</executable>
7 <logpath>D:\nginx-1.14.0\</logpath>
8 <logmode>roll</logmode>
9 <depend></depend>
10 <startargument>-p D:\nginx-1.14.0</startargument>
11 <stopargument>-p D:\nginx-1.14.0 -s stop</stopargument>
12
注意上面的文件我们要修改nginx存放的目录,以及相关的配置。
管理员模式,不然权限不够)中,将该服务注册到windows系统之中:
最后我们打开任务管理器中的服务,可以发现我们自己命名的服务已经出现了: