书到用时方恨少。之前配置过nginx,但没有记录。今天在重新配置nginx的时候,遇到了问题还要重新去找一遍。
此文定义适用干货篇
准备包
要配置服务器,怎么也得有个包吧。这也就是第一步了。
准备包有两种方式,一种是自己手动下载包,然后将包上传到服务器。一种是通过wget指令从指定URL下载包到服务器位置。
如果当前系统有FTP工具,可以使用方式一。如果没有FTP工具或者不想这么麻烦,可以使用方式二。
方式一: 将包上传到服务器
1. 从官网下载包:官网链接
这里下载nginx-1.12.2这个版本:下载链接。当然,也可以下载其它版本。
2. 下载完成后,通过ftp工具将包上传到服务器
如果所使用的系统有ftp工具,那么通过工具将包传到服务器的指定位置。
这里可以推荐一个很好用的ftp工具:FillZilla
这个工具支持Mac、Ubuntu、Windows。在没有好的FTP工具的Ubuntu下可谓是神器。附一个官网链接
方式二: 通过wget
笔者在部署配置Nginx的时候,是使用的该方式,所以就通过该方式来讲解准备包的完整步骤。
1. 登陆服务器,在服务器上创建一个文件夹(主要是方便管理)
➜ ~ mkdir /usr/local/nginx
2. 进入上面创建的文件夹,下载安装包
➜ ~ cd /usr/local/nginx
➜ ~ wget http://nginx.org/download/nginx-1.12.2.tar.gz
## 执行ls -l 指令查看当前文件夹下文件
-rwxr-xr-x 1 root root 981687 Jun 5 22:30 nginx-1.12.2.tar.gz*
3. 解压nginx-1.12.2.tar.gz
➜ ~ tar -xvf nginx-1.12.2.tar.gz
## 这里可以看到解压的文件信息
## 解压完成之后执行ls -l
drwxr-xr-x 9 1001 1001 4096 May 7 22:32 nginx-1.12.2/
-rwxr-xr-x 1 root root 981687 Jun 5 22:30 nginx-1.12.2.tar.gz*
## 在nginx-1.12.2目录下可以看到以下文件
total 1400
-rw-r--r-- 1 1001 1001 272K 10 17 2017 CHANGES
-rw-r--r-- 1 1001 1001 414K 10 17 2017 CHANGES.ru
-rw-r--r-- 1 1001 1001 1.4K 10 17 2017 LICENSE
-rw-r--r-- 1 1001 1001 49B 10 17 2017 README
drwxr-xr-x 25 1001 1001 800B 10 17 2017 auto
drwxr-xr-x 11 1001 1001 352B 10 17 2017 conf
-rwxr-xr-x 1 1001 1001 2.4K 10 17 2017 configure
drwxr-xr-x 6 1001 1001 192B 10 17 2017 contrib
drwxr-xr-x 4 1001 1001 128B 10 17 2017 html
drwxr-xr-x 3 1001 1001 96B 10 17 2017 man
drwxr-xr-x 9 1001 1001 288B 10 17 2017 src
4. 进入nginx-1.12.2,这时候就可以来编译安装了
➜ ~ ./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module
➜ ~ make
➜ ~ make install
./configure 说明
如果不想指定安装的目录,就不用指定--prefix
如果不想额外的添加编译包,也不用添加后面额--with*
这里使用--with*是配置https需要的编译包
我部署在服务器上面的nginx还额外编译了http_gzip_static_module的包,这里没有同时编译,放到后面需要新添加模块的时候
5. 查看nginx版本
➜ ~ /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.12.2
## 使用-V可以查看更详细的信息
➜ ~ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built with OpenSSL 1.0.2g 1 Mar 2016
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module
问题处理
你认为这样子就结束了吗? 不是这么简单的,当时执行是*./configure*命令之后,你会发现会有一堆错误信息....What?接下来,笔者列出我自己遇到和网上收集到的错误信息,并说明解决办法。
问题一:缺少PCRE错误
问题核心描述:error: the HTTP rewrite module requires the PCRE library.
问题解决办法:
➜ ~ sudo apt-get install libpcre3 libpcre3-dev
其他下载地址:PCRE
PCRE 作用是让 Nginx 支持 Rewrite 功能。
问题二: 缺少zlib错误
问题核心描述: error: the HTTP gzip module requires the zlib library.
问题解决办法:
➜ ~ sudo apt-get install zlib1g-dev
其他下载地址:Zlib
以上两个问题是笔者自己在部署过程中遇到的问题,也是考这两个解决办法解决了问题。分享给大家!
问题三:缺少OpenSSL错误
这个问题没有真实遇到,但是在网上收集到的,如有错误请指出。
问题解决:
➜ ~ sudo apt-get install openssl libssl-dev
其他问题: 缺少GCC GCC-C++
之前在CentOS上面安装Nginx安装时遇到这个问题
问题核心描述:checking for C compiler ... not found. ./configure: error: C compiler cc is not found
问题解决办法:
➜ ~ yum -y install gcc gcc-c++
问题解决之后,就可以继续执行以下命令完成部署。
➜ ~ ./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module
➜ ~ make
➜ ~ make install
nginx相关指令
启动nginx
➜ ~ /usr/local/nginx/sbin/nginx
每次这样子启动是不是很麻烦,来讲这个执行命令放到启动脚本中吧。
## 笔者是在放到/etc/profile
➜ ~ sudo echo "alias nginx=/usr/local/nginx/sbin/nginx" >> /etc/profile
## 以后就可以直接通过下面指令来启动nginx了
➜ ~ nginx
可以使用service的服务器可以通过以下方式
➜ ~ service nginx start
其实还可以通过制定配置文件的方式来启动nginx
➜ ~ nginx -c /usr/local/nginx/conf/nginx.conf
重新加载配置文件
每次修改nginx.conf配置文件之后,通过下面文件加载新配置文件.
➜ ~ nginx -s reload
可以使用service的服务器可以通过以下方式
➜ ~ service nginx reload
停止nginx
➜ ~ nginx -s stop
## 当然,也可以使用杀掉进程的方式来停止nginx
可以使用service的服务器可以通过以下方式
➜ ~ service nginx stop
汇总
## 启动
➜ ~ nginx
## 重新加载配置文件
➜ ~ nginx -s reload
## 停止
➜ ~ nginx -s stop
添加新模块
在上面的编译安装讲解模块,笔者故意留了一个坑,没有添加安装http_gzip_static_module模块。这里就来讲讲怎么安装这个模块。
添加新模块和编译安装过程基本一致,只是要在*./configure后面新增--with-http_gzip_static_module*就可以。
➜ ~ ./configure --prefix=/usr/local/nginx --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
➜ ~ make
## 这里很多人说直接make就可以,因为make install会覆盖安装,但是不知道为什么,我每次make之后都不可以,所以都只执行完make之后,还会执行make install命令.我没有找到原因,如果有同学知道了, 可以在评论中说明?
➜ ~ make install
添加该模块可以支持gzip_static on;