linux系统离线安装nginx

在服务器国产化的浪潮下,我们公司的业务系统服务器改成了龙蜥7.9(AnolisOS 7.9)。为了实现业务迁移,需要重新安装一下nginx,而且是内网服务器,只能使用安装包安装了。

目录

安装流程

1. 上传安装包

2. 解压源代码包

3. 进入解压后的目录:

4. 配置编译参数

4.1. --prefix=/usr/local/nginx

4.2. --with-http_stub_status_module

4.3. --with-http_ssl_module

4.4. --user=nginx 和 --group=nginx

5. 编译并安装 Nginx

6. 修改文件夹归属

7. 启动 Nginx

7.1. 检查进程

7.2. 访问 Nginx 默认页面

8. 设置开机启动

8.1. 创建服务文件

8.2. 启用服务

8.3. 停止当前的nginx服务

8.4. 重启 Nginx 服务

8.5. 查看 Nginx 服务状态

8.6. 查看是否开机自启

9. 疑难解答

9.1. 启动时,提示“nginx: [emerg] getpwnam("nginx") failed”

9.2. stub_status 模块的使用

9.2.1. 编辑 Nginx 配置文件: 打开 Nginx 的配置文件(通常是 /usr/local/nginx/conf/nginx.conf),在 server 部分添加以下配置:

9.2.2. 重启 Nginx: 执行以下命令重启 Nginx:

9.2.3. 访问状态页面: 在浏览器中访问 http://your_server_ip/nginx_status,你将看到类似以下的状态信息:

9.2.4. 控制访问权限(可选): 如果你想限制访问状态页面的 IP 地址,可以在配置中调整 allow 和 deny 部分。

9.2.4.1. allow 配置

9.2.4.2. deny 配置

9.2.4.3. 默认值


安装流程

在此附上我使用的安装包

通过网盘分享的文件:nginx-1.24.0.tar.gz
链接: https://pan.baidu.com/s/13S05ThEVm6O6qEhAe0dJIQ?pwd=9xbf 提取码: 9xbf 
 

1. 上传安装包

比如放到/home/software下。

2. 解压源代码包

进入你下载的目录,执行以下命令解压 Nginx 源代码包:

tar -zxf nginx-1.24.0.tar.gz

3. 进入解压后的目录:

cd nginx-1.24.0

4. 配置编译参数

./configure --prefix=/usr/local/nginx 

可以根据需求添加不同的参数:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx

4.1. --prefix=/usr/local/nginx

  • 这个参数指定了 Nginx 的安装目录。在这里,Nginx 将被安装到 /usr/local/nginx 目录下。

4.2. --with-http_stub_status_module

  • 这个参数启用了 Nginx 的 stub_status 模块。该模块提供了一个简单的状态页面,显示当前 Nginx 工作进程的活动状态、连接数等信息。如果你不需要这个模块,可以不加这个参数。

4.3. --with-http_ssl_module

  • 这个参数启用了 Nginx 的 SSL/TLS 支持。如果你的网站需要使用 HTTPS,那么必须加上这个参数。否则,可以不加。

4.4. --user=nginx--group=nginx

  • 这两个参数分别指定了 Nginx 运行时的用户和组。如果你不指定,Nginx 将使用默认的用户和组(通常是 nobody)。如果你不关心用户和组,可以不加这两个参数。

5. 编译并安装 Nginx

make && make install

6. 修改文件夹归属

(如果没有创建nginx用户的打算,可以跳过): 修改 Nginx 文件夹的归属,确保它属于 nginx 用户和组:

chown -R nginx:nginx /usr/local/nginx

7. 启动 Nginx

/usr/local/nginx/sbin/nginx

如果执行命令后没有任何输出,通常表示命令成功执行。在这种情况下,Nginx 已经在后台启动了。

你可以通过以下方式来验证 Nginx 是否正在运行:

7.1. 检查进程

执行以下命令,查看是否有 Nginx 进程在运行:

ps aux | grep nginx

如果看到类似于以下的输出,说明 Nginx 正在运行:

root      1234  0.0  0.1  12345  6789 ?        Ss   09:00   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx    5678  0.0  0.2  23456  9876 ?        S    09:01   0:00 nginx: worker process

7.2. 访问 Nginx 默认页面

打开浏览器并访问你的服务器 IP 地址或域名,应该能够看到 Nginx 的启动页面。如果能够访问,说明 Nginx 正在运行。

8. 设置开机启动

8.1. 创建服务文件

echo -e "[Unit]\nDescription=nginx\nAfter=network.target\n\n[Service]\nType=forking\nExecStart=/usr/local/nginx/sbin/nginx\nExecReload=/usr/local/nginx/sbin/nginx reload\nExecStop=/usr/local/nginx/sbin/nginx quit\nPrivateTmp=true\n\n[Install]\nWantedBy=multi-user.target" > /lib/systemd/system/nginx.service

创建一个 systemd 服务文件,该文件定义了 Nginx 服务的启动、重启和停止行为,以及其他相关配置。让我解释一下这段内容:

  • [Unit] 部分:
    • Description=nginx:描述了该服务的名称,这里是 “nginx”。
    • After=network.target:指定了服务在网络已启动后才启动。
  • [Service] 部分:
    • Type=forking:指定了服务的启动类型为 fork 模式,即在后台运行。
    • ExecStart=/usr/local/nginx/sbin/nginx:定义了启动 Nginx 服务的命令。
    • ExecReload=/usr/local/nginx/sbin/nginx reload:定义了重新加载配置的命令。
    • ExecStop=/usr/local/nginx/sbin/nginx quit:定义了停止 Nginx 服务的命令。
    • PrivateTmp=true:启用了私有临时目录。
  • [Install] 部分:
    • WantedBy=multi-user.target:指定了服务在多用户模式下启动。

这个文件将被保存到 /lib/systemd/system/nginx.service,并且在系统启动时会自动加载。

8.2. 启用服务

systemctl enable nginx.service

8.3. 停止当前的nginx服务

避免因为端口占用无法启动

/usr/local/nginx/sbin/nginx -s stop

8.4. 重启 Nginx 服务

systemctl restart nginx

8.5. 查看 Nginx 服务状态

systemctl status nginx

8.6. 查看是否开机自启

systemctl is-enabled nginx

此命令将返回以下之一:

  • enabled:服务已启用,将在启动时自动启动。
  • disabled:服务已禁用,不会在启动时启动。
  • static:服务已启用,但不会自行启动。

9. 疑难解答

9.1. 启动时,提示“nginx: [emerg] getpwnam("nginx") failed”

这个错误是因为在编译配置中配置了用户与组为nginx,但是 Nginx 无法找到名为 “nginx” 的用户。

解决方案一:

可以尝试创建一个nginx的用户

useradd nginx

然后,重新启动 Nginx:

/usr/local/nginx/sbin/nginx

解决方案二:

修改 Nginx 运行用户: 编辑 Nginx 配置文件(通常是 /usr/local/nginx/conf/nginx.conf),找到 user 配置项,将其设置为你当前登录用户或其他已有用户。

此处可能会发现Nginx 配置文件中的 #user nobody; 行被注释掉了。这意味着 Nginx 将使用默认的用户和组来运行。可以考虑直接将此行注释放开,Nginx 将使用默认的 nobody 用户来运行。这意味着所有用户都可以访问 Nginx 服务。

然而,请注意以下几点:

  1. 默认情况下,nobody 用户通常没有权限访问其他用户的文件或目录。如果你的网站需要读取或写入某些文件,你需要确保这些文件的权限允许 nobody 用户进行操作。
  2. nobody 用户运行 Nginx 可能存在一些安全风险,因为它是一个通用的、低权限的用户。如果你关心安全性,你可以考虑创建一个专门的用户来运行 Nginx,然后在配置文件中指定该用户。

9.2. stub_status 模块的使用

9.2.1. 编辑 Nginx 配置文件: 打开 Nginx 的配置文件(通常是 /usr/local/nginx/conf/nginx.conf),在 server 部分添加以下配置:
location /nginx_status {
    stub_status;
    allow 127.0.0.1;  # 允许访问的 IP 地址,可以根据需要修改
    deny all;         # 禁止其他 IP 访问
}
9.2.2. 重启 Nginx: 执行以下命令重启 Nginx:
/usr/local/nginx/sbin/nginx -s reload
9.2.3. 访问状态页面: 在浏览器中访问 http://your_server_ip/nginx_status,你将看到类似以下的状态信息:

    • Active connections:当前活跃的连接数。
    • server accepts handled requests:总连接数、成功处理的连接数、总请求数。
    • ReadingWritingWaiting:Nginx 工作进程的状态。
9.2.4. 控制访问权限(可选): 如果你想限制访问状态页面的 IP 地址,可以在配置中调整 allowdeny 部分。
9.2.4.1. allow 配置

allow 指定了允许访问 stub_status 页面的 IP 地址。你可以指定一个或多个 IP 地址,用空格分隔。

如果你只想允许特定的 IP 地址访问状态页面,可以这样配置:

location /nginx_status {
    stub_status;
    allow 192.168.1.10;  # 允许访问的 IP 地址
    deny all;            # 禁止其他 IP 访问
}
    • 如果你想允许多个 IP 地址访问,可以这样配置:
location /nginx_status {
    stub_status;
    allow 192.168.1.10 192.168.1.20;  # 允许访问的多个 IP 地址
    deny all;                         # 禁止其他 IP 访问
}
9.2.4.2. deny 配置

deny 指定了禁止访问 stub_status 页面的 IP 地址。如果某个 IP 地址在 allowdeny 中都有配置,deny 优先级更高。

如果你不想限制 IP 地址,可以只配置 allow all; 或者省略 allowdeny 部分:

location /nginx_status {
    stub_status;
    allow all;  # 允许所有 IP 访问
}
9.2.4.3. 默认值

如果你不配置 allowdeny,默认情况下,所有 IP 地址都可以访问 stub_status 页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值