在windows上安装nginx并注册
在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 </service>
注意上面的文件我们要修改nginx存放的目录,以及相关的配置。
然后我们在命令行(管理员模式,不然权限不够)中,将该服务注册到windows系统之中:
最后我们打开任务管理器中的服务,可以发现我们自己命名的服务已经出现了: