Linux 安装多个 Nginx 【源码安装】记录

302 阅读3分钟

由于公司环境复杂,需要在服务器安装不同版本的 nginx 所以在测试服务器测试,并记录安装 多个nginx 的过程。

一. 要求的环境

1.1 安装 gcc 环境

# nginx 编译时依赖 gcc 环境
sudo yum -y install gcc gcc-c++

image.png

image.png

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

image.png

1.3 安装 zlib

zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库

sudo yum -y install zlib zlib-devel

image.png

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

image.png

2.2 安装 多个 nginx

# 分别解压两个不同的 nginx 源码包
tar -zxvf nginx-1.18.0.tar.gz
tar -zxvf nginx-1.22.0.tar.gz

image.png

## 第一个 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 版本安装 image.png

image.png

nginx 1.22 版本安装

image.png

因为已经安装了 nginx1.18版本,所以 nginx1.22 启动失败

image.png

# 修改 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;
        }

image.png

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 # 停止开机自启动

image.png

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

image.png

三. 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 # 要设置文件访问权限