由于公司环境复杂,需要在服务器安装不同版本的 nginx 所以在测试服务器测试,并记录安装 多个nginx 的过程。
一. 要求的环境
1.1 安装 gcc 环境
# nginx 编译时依赖 gcc 环境
sudo yum -y install gcc gcc-c++
1.2 安装 PERE
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库;pcre-devel 是使用 pcre 开发的一个二次开发库;因此 nginx 也需要此库
sudo yum -y install pcre pcre-devel
1.3 安装 zlib
zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库
sudo yum -y install zlib zlib-devel
1.4 安装 openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https,所以需要在 linux 安装 openssl 库
sudo yum -y install openssl openssl-devel
二. 下载并安装 nginx
2.1 下载 nginx
# nginx 源码下载地址
http://nginx.org/en/download.html
# 下载 源码包
wget http://nginx.org/download/nginx-1.22.0.tar.gz
2.2 安装 多个 nginx
# 分别解压两个不同的 nginx 源码包
tar -zxvf nginx-1.18.0.tar.gz
tar -zxvf nginx-1.22.0.tar.gz
## 第一个 nginx
# 解压完成后进入解压目录执行以下代码,进行安装
cd nginx-1.18.0
# 创建nginx用户,防止nginx运行权限过高
useradd nginx
# 预配置
./configure \--prefix=/usr/local/nginx1.18 \--user=nginx \--group=nginx \--with-http_ssl_module
# 安装
sudo make && sudo make install
## 第二个 nginx
# 解压完成后进入解压目录执行以下代码,进行安装
cd nginx-1.22.0
# 创建nginx用户,防止nginx运行权限过高
useradd nginx
# 预配置
# ./configure \--prefix=/usr/local/nginx1.22 \--user=nginx \--group=nginx \--with-http_ssl_module
# 安装
sudo make && sudo make install
nginx 1.18 版本安装
nginx 1.22 版本安装
因为已经安装了 nginx1.18版本,所以 nginx1.22 启动失败
# 修改 nginx1.22 监听的端口
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
2.3 设置 nginx 开机自启动
# 进入/usr/lib/systemd/system目录下
cd /usr/lib/systemd/system
# 新建 nginx.service,文件内容如下:
[Unit] # 服务的说明
Description=nginx # 描述服务
After=network.target remote-fs.target nss-lookup.target # 描述服务类别
[Service] # 服务运行参数的设置
Type=forking #后台运行的形式
ExecStart=/usr/local/nginx1.22/sbin/nginx -c /usr/local/nginx1.22/conf/nginx.conf # ExecStart为服务的具体运行命令
ExecReload=/usr/local/nginx1.22/sbin/nginx -s reload -c /usr/local/nginx1.22/conf/nginx.conf # ExecReload为重启命令
ExecStop=/usr/local/nginx1.22/sbin/nginx -s quit # ExecStop为停止命令
PrivateTmp=true # 表示给服务分配独立的临时空间
[Install] # 运行级别下服务安装的相关设置
WantedBy=multi-user.target # 可设置为多用户,即系统运行级别为3
# 相关命令
systemctl start nginx # 启动nginx服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重新启动服务
systemctl list-units --type=service # 查看所有已启动的服务
systemctl status nginx # 查看服务当前状态
systemctl enable nginx # 设置开机自启动
systemctl disable nginx # 停止开机自启动
2.4 配置多域名
# 新建域名配置目录
sudo mkdir vhost
# 在配置目录新增域名配置文件
vi test1.conf
# 文件配置
server {
listen 8081;
location / {
root /home/Jane/www/test1;
index index.html index.htm;
}
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
}
# 在 nginx.conf 文件配置域名目录
include vhost/*;
# 重启 nginx
systemctl start nginx
三. Nginx 配置
# 开启 nginx 可以检测 nginx.conf 的配置文件语法
/usr/local/nginx1.22/sbin/nginx -t
# 语法错误
open() “/usr/local/var/run/nginx.pid” failed (13: Permission denied)
# 解决方法
chmod 777 /usr/local/var/run # 要设置文件访问权限