Nginx的安装安装之前需要提前准备好Nginx的必备软件/库。2.1、安装PCRE库这里安装8.44版本。代码语言javascriptAI代码解释wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz tar -zxvf pcre-8.44.tar.gz cd pcre-8.44/ ./configure make sudo make install2.2、安装zlib库代码语言javascriptAI代码解释wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11/ ./configure make sudo make install2.3、安装OpenSSL开发库代码语言javascriptAI代码解释wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz tar -zxvf openssl-1.1.1g.tar.gz cd openssl-1.1.1g/ ./config make sudo make install2.4、安装Nginx这里安装1.16版本。代码语言javascriptAI代码解释wget http://nginx.org/download/nginx-1.16.1.tar.gz tar -zxvf nginx-1.16.1.tar.gz cd nginx-1.16.1/ ./configure --prefix/usr/local/nginx --with-http_stub_status_module --withhttp_ssl_module --with-http_realip_module --with-http_v2_module --withopenssl../openssl-1.1.1g make make install三、Nginx的启动默认情况下Nginx被安装在目录/usr/local/nginx中。代码语言javascriptAI代码解释cd usr/local/nginx ls显示代码语言javascriptAI代码解释conf html logs sbin其中Nginx的配置文件存放于conf/nginx.confbin文件是位于sbin目录下的nginx文件logs是存放的启动日志、错误日志、运行日志等。1默认方式启动Nginx服务器需要sudo权限代码语言javascriptAI代码解释sudo /usr/local/nginx/sbin/nginx这时会自动读取配置文件/usr/local/nginx/conf/nginx.conf打开浏览器访问此机器的IP如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功显示结果2查看nginx进程代码语言javascriptAI代码解释sudo ps -ef|grep nginx显示代码语言javascriptAI代码解释root 35768 1 0 11:12 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 35769 35768 0 11:12 ? 00:00:00 nginx: worker process fly 35771 2396 0 11:12 pts/1 00:00:00 grep --colorauto nginx注意grep --colorauto nginx不是代表nginx启动前面两行才是。 3指定配置文件启动服务器代码语言javascriptAI代码解释sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf4测试配置信息代码语言javascriptAI代码解释sudo /usr/local/nginx/sbin/nginx -t提示代码语言javascriptAI代码解释nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful5关于nginx启动出现报错 比如代码语言javascriptAI代码解释nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] still could not bind()这可能是nginx已经启动了也可能是80端口被占用了。 可以使用lsof命令查询端口状态代码语言javascriptAI代码解释sudo lsof -i:80代码语言javascriptAI代码解释COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 35768 root 6u IPv4 62470 0t0 TCP *:http (LISTEN) nginx 35769 nobody 6u IPv4 62470 0t0 TCP *:http (LISTEN)如果是其他进程占用使用kill命令杀死进程就好比如代码语言javascriptAI代码解释kill -9 35768 kill -9 357693.1、error.log查看Nginx错误信息当项目出现报错比如上传文件可以通过tail命令查看error.log文件排除问题。代码语言javascriptAI代码解释sudo tail -f /usr/local/nginx/logs/error.log3.2、重启nginx代码语言javascriptAI代码解释# 停 止 sudo /usr/local/nginx/sbin/nginx -s stop # 启动 sudo /usr/local/nginx/sbin/nginx