Linux安装nginx
序言
由于测试环境的nginx是已经搭建完成的,把搭建完成的nginx打包后传到生产的主机上,在sbin目录下测试nginx,就会报错找不到路径,所以我决定自己重新安装,于是经过不断的踩坑和请教,诞生了这篇文章。
参考的文章:Nginx安装与使用
一、下载依赖包
nginx:http://nginx.org/en/download.html (版本:nginx-1.16.1 tar.gz)
pcre:https://sourceforge.net/projects/pcre/files/pcre/8.41/(版本:pcre-8.41.tar.gz)
zlib:http://www.zlib.net/(版本:zlib-1.2.11.tar.gz)
oppenssl:https://www.openssl.org/source/(版本:openssl-1.1.1g.tar.gz)
下载说明
我之所以没有在生产中用yum或wget,是由于用不了,所以只能下载到本地后传到生产中。
1、下载zlib的位置:
2、下载openssl:
二、解压
tar -zxvf nginx-1.16.1.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz
tar -zxvf pcre-8.41.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
三、安装nginx
1、进入解压后的nginx的目录
cd nginx-1.16.1
2、创建安装目录
由于我是安装在普通用户下的,所以需要创建安装目录。
建议:最好是安装在普通目录,
因为:我们这边的规定是:所有生产的nginx都必需在普通用户下编译和启停。
mkdir installs
3、编译nginx的安装目录
./configure --prefix=/home/nginxsrv/nginx/nginx-1.16.1/installs --with-pcre=../pcre-8.41 --with-openssl=../openssl-1.1.1g --with-zlib=../zlib-1.2.11
4、安装nginx
make && make install
四、修改配置文件
cp nginx.conf nginx.conf.bak.fanhf.202006021600.orig
vim nginx.conf
先备份原来的,再将端口号80修改为8081
修改后的部分配置如下:
server {
listen 8081;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
nginx.conf只修改了端口号,其他的不曾做任何修改!
五、查看版本和检测
1、查看版本
cd /home/nginxsrv/nginx/nginx-1.16.1/installs/sbin
./nginx -V
显示:
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
configure arguments: --prefix=/home/nginxsrv/nginx/nginx-1.16.1/installs --with-pcre=../pcre-8.41 --with-openssl=../openssl-1.1.1g --with-zlib=../zlib-1.2.11
2、检测
./nginx -t
显示:
nginx: the configuration file /home/nginxsrv/nginx/nginx-1.16.1/installs/conf/nginx.conf syntax is ok
nginx: configuration file /home/nginxsrv/nginx/nginx-1.16.1/installs/conf/nginx.conf test is successful
六、启动nginx
cd /home/nginxsrv/nginx/nginx-1.16.1/installs/sbin
./nginx
查看启动情况:
七、遇到的坑
1、nginx的版本
我原本在测试环境用的是nginx-1.9.9的版本,而且是没有问题的,但是同事说还是用1.16.1的版本,比较稳定,所以就改成了1.16.1。
2、下载依赖包
由于下载的prce是最新版本的pcre2-10.33.tar.gz,而不是pcre-8.41.tar.gz,导致在nginx的解压目录下执行:make && make install 的时候报错:
src/core/ngx_regex.h:15:18: fatal error:pcre.h No such file or directory
于是查了一下,参考了这篇文章说是要把pcre的版本降低,于是就是改为pcre-8.41.tar.gz,解压后,重新编译和安装,就可以了。
3、编译nginx
在第一次编译nginx的时候,
编译指令:
./configure --prefix=/home/nginxsrv/nginx/nginx-1.16.1/installs
报错如下:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
查了之后说是少依赖包,于是一步一步查,一步一步下载需要的3个依赖包,然后就想着把这3个依赖包都编译和安装,但是反复尝试了之后依旧不行,删了安,安了删,甚至在root里面也试了,都无果。于是问一位大神,他说3个依赖包不需要编译和安装,直接在编译nginx的时候指定3个依赖包的路径就可以,这才安装成功。
八、补充nginx的相关命令
1、停止nginx
cd /home/nginxsrv/nginx/nginx-1.16.1/installs/sbin
./nginx -s stop
2、nginx重新加载
cd /home/nginxsrv/nginx/nginx-1.16.1/installs/sbin
./nginx –s reload
至此,nginx的安装和配置就完成了,关于nginx的配置还有其他的一些内容,我这里就不赘述了,网上有很多资料,可自行查找和学习。
九、安装过程中可能遇到的问题
解决nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)错误
nginx: [emerg] open() “/usr/local/nginx/logs/access.log” failed (21: Is a directory)
Nginx的安装,以及总是出现找不到pcre library的解决方法
与君共勉!!!