一、环境准备
先说几个前置工具的安装
1.1:gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc-c++
1.2: PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
1.3: zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
1.4: OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
二、开始安装
首先,到官网找到stable版本 https://nginx.org/en/download.html ,如下图所示
下载并解压:
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
解压后得到一个nginx-1.16.1目录。进入它,执行以下命令
./configure
make
make install
如果有需要,可以根据需要执行自定义的配置
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
如上所示,如果临时目录“/var/temp/nginx”不存在,记得创建呦
启动Nginx:/usr/local/nginx/sbin/nginx
退出Nginx:/usr/local/nginx/sbin/nginx -s stop
退出Nginx:/usr/local/nginx/sbin/nginx -s quit(quit与stop的区别在于,quit是等待Nginx任务完毕才退出,stop是强杀进程)
重载Nginx:/usr/local/nginx/sbin/nginx -s reload(一般用于让被修改的配置文件生效时使用)
如果看到下图,说明你的Nginx已经顺利安装并启动了。
三、踩坑
说说我在安装时遇到的问题吧
3.1:make异常
在make的时候,报如下错误
make: *** No rule to make target `build', needed by `default'. Stop.
我只说我的环境和我最终的解决方法
3.1.1:首先,重新安装了一遍gcc本文的1.1到1.4的内容,问题没有解决
3.1.2:然后,更新yum,这一步可能会耗时比较长的时间,请耐心等待
yum update
3.1.3:再次安装1.1到1.4步骤的内容,这次合并命令,如下所示
yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel
3.1.4:最后,重新执行 ./configure后,再make,问题解决
3.2:无法访问Nginx欢迎页
众所周知,当我们的Nginx启动后,正常情况下,只需要在浏览器上访问Nginx服务器的ip即可看到欢迎页
我遇到这个问题时,参考这两个方法解决的
3.2.1:检查进程与端口是否正常
进程:ps -ef | grep nginx | grep -v grep
端口:lsof -i :80
端口:netstat -lnt |grep 80
若系统没有lsof命令可以执行如下命令解决
yum install lsof
若系统没有netstat命令,可执行如下命令解决
yum provides */netstat
yum install net-tools
3.2.2:使用wget和curl命令确认能否访问
wget 你的IP
这一步的目的,就是使用wget方式获取Nginx的欢迎页,用来判断欢迎页本身是否存在
如果可以获取到,那么再考察欢迎页的内容是否正确,这一步可以使用curl命令来确认
curl 你的IP
如上图所示,欢迎页的内容也没问题。。。那就考虑是否防火墙的问题吧
3.2.3:检查防火墙
因为我的系统是CentOS7,因此不存在IPtables的问题,最简单的方法,直接关闭firewalld即可
systemctl stop firewalld
关闭后,再次从页面访问安装Nginx的服务器IP,就可以访问到了。问题解决。
或者,开启防火墙对80、443端口的限制也能解决问题,操作如下所示
#开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#开放443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
#重启firewall以便使上述配置生效
firewall-cmd --reload
#注意,以上操作需要在firewall处于开启状态下执行