从零开始编译安装Nginx:详细步骤与实战配置(附避坑指南)——基于CentOS 7的保姆级教程

从零开始编译安装Nginx:详细步骤与实战配置(附避坑指南)——基于CentOS 7的保姆级教程


从零开始编译安装Nginx:详细步骤与实战配置(附避坑指南)——基于CentOS 7的保姆级教程-洛秋小站

一、为什么需要创建专用Nginx用户?

在Linux系统中,为服务创建独立的运行用户是安全最佳实践。Nginx默认以nobody​用户运行,但通过创建专用用户nginx​,可以限制其权限,防止潜在的安全漏洞影响系统其他部分。

操作步骤:

# 创建不可登录的nginx用户(-M不创建家目录,-s指定不可登录的Shell)
useradd nginx -s /sbin/nologin -M

二、安装前的依赖准备

Nginx编译依赖多个开发库,缺一不可。以下是核心依赖包的作用:

  • pcre-devel:正则表达式支持(用于URL重写)
  • openssl-devel:启用HTTPS协议(SSL/TLS加密)
  • zlib-devel:Gzip压缩功能

一键安装依赖:

yum -y install openssl openssl-devel pcre-devel zlib-devel

注:若缺少依赖,编译时会报错提示缺少的库文件。


三、源码编译与安装

  1. 解压源码包
tar zxf nginx-1.20.1.tar.gz
cd nginx-1.20.1/
  1. 配置编译参数(关键!)
./configure \
--prefix=/usr/local/nginx \        # 安装目录
--user=nginx \                     # 运行用户
--group=nginx \                    # 运行组
--with-http_ssl_module \           # 启用HTTPS
--with-stream \                    # TCP/UDP反向代理
--with-mail \                      # 邮件代理支持
--with-mail_ssl_module             # 邮件SSL加密

参数解读

  • --with-stream​:允许Nginx代理TCP/UDP协议(如数据库连接)
  • --with-http_ssl_module​:必须启用,否则无法配置SSL证书
  1. 编译并安装
make && make install

编译时间约1-3分钟,若出现make: *** No targets specified.错误,说明configure配置失败,需检查依赖是否完整。


四、安装后验证与启动

  1. 检查安装目录
ls /usr/local/nginx/
# 输出应有conf(配置)、html(网页)、logs(日志)、sbin(可执行文件)
  1. 启动Nginx
/usr/local/nginx/sbin/nginx
  1. 验证服务状态
ps -ef | grep nginx
# 应看到1个master进程和多个worker进程
curl http://localhost
# 若返回Welcome to nginx!则成功

五、高级配置技巧

  1. 开机自启动(Systemd服务)
    创建/usr/lib/systemd/system/nginx.service​文件:
[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

执行:

systemctl daemon-reload
systemctl enable nginx
  1. 配置文件语法检查
/usr/local/nginx/sbin/nginx -t
# 输出应为"successful"(避免配置错误导致服务崩溃)

六、常见问题解决

  • 端口占用:若80端口被占用,修改/usr/local/nginx/conf/nginx.conf​中的listen​端口号。
  • 权限问题:确保/usr/local/nginx​目录属于nginx​用户:
chown -R nginx:nginx /usr/local/nginx
  • 模块遗漏:若需新增模块(如HTTP/2),需重新configure并编译,不可直接覆盖安装。

七、为什么推荐源码安装?

  1. 灵活性:可自定义模块(如第三方模块ngx_lua​)
  2. 性能优化:针对服务器CPU架构优化编译参数
  3. 版本控制:自由选择稳定版或尝鲜新特性

参考文档

原创声明:转载请保留原文链接,禁止用于商业用途。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容