linux怎么编译安装nginx

发布时间:2021-07-15 15:42:59 作者:chen
来源:亿速云 阅读:187
# Linux怎么编译安装Nginx

## 前言

Nginx是一款高性能的HTTP和反向代理服务器,以其稳定性、丰富的功能集和低资源消耗而闻名。虽然大多数Linux发行版提供预编译的Nginx包,但通过源码编译安装可以获得以下优势:

1. 使用最新版本(官方源可能滞后)
2. 自定义模块和功能
3. 优化特定硬件环境
4. 深度定制安装路径

本文将详细介绍从源码编译安装Nginx的完整流程。

---

## 一、准备工作

### 1.1 系统要求
- Linux操作系统(本文以Ubuntu 22.04/CentOS 7为例)
- root或sudo权限
- 至少100MB可用磁盘空间
- 基础开发工具

### 1.2 安装依赖项

```bash
# Ubuntu/Debian
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev \
libssl-dev wget git

# CentOS/RHEL
sudo yum groupinstall -y "Development Tools"
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel wget

1.3 下载Nginx源码

推荐从官网获取稳定版:

wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3

二、配置编译选项

2.1 基本配置

运行configure脚本检测系统环境:

./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-threads

2.2 常用可选模块

模块名称 作用 参数
http_gzip_module Gzip压缩支持 --with-http_gzip_static_module
http_geoip_module 地理定位 需先安装GeoIP库
http_image_filter_module 图像处理 需先安装GD库
stream_module TCP/UDP代理 --with-stream

2.3 第三方模块添加

例如添加echo-nginx-module

git clone https://github.com/openresty/echo-nginx-module.git
./configure --add-module=../echo-nginx-module

三、编译与安装

3.1 执行编译

make -j$(nproc)  # 使用所有CPU核心加速编译

3.2 安装到系统

sudo make install

3.3 创建系统用户

sudo useradd -r -s /sbin/nologin nginx

四、系统集成

4.1 环境变量配置

echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> ~/.bashrc
source ~/.bashrc

4.2 创建Systemd服务

创建/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MNPID
PrivateTmp=true
User=nginx
Group=nginx

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx

五、验证安装

5.1 检查版本

nginx -v

5.2 测试配置文件

nginx -t

5.3 访问测试页

浏览器访问 http://服务器IP 应看到欢迎页面。


六、常见问题解决

6.1 端口冲突

如果80端口被占用:

sudo netstat -tulnp | grep 80
kill -9 <PID>

6.2 权限问题

sudo chown -R nginx:nginx /var/log/nginx

6.3 模块加载失败

检查编译时是否包含所需模块,重新编译安装。


七、升级与卸载

7.1 平滑升级

# 备份旧版本
cp /usr/sbin/nginx /usr/sbin/nginx.old

# 编译新版本后执行
make install
kill -USR2 $(cat /var/run/nginx.pid)

7.2 完全卸载

sudo rm -rf /usr/local/nginx
sudo rm /usr/sbin/nginx
sudo rm -rf /etc/nginx

结语

通过源码编译安装Nginx虽然步骤较多,但能获得完全可控的定制化服务。建议生产环境使用此方式前,先在测试环境充分验证。如需更简便的安装,可考虑OpenResty或官方预编译包。

注意:本文所有操作应在理解命令含义后执行,不当操作可能导致系统服务异常。 “`

推荐阅读:
  1. nginx的编译安装和启动
  2. nginx的编译安装

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux nginx

上一篇:ASP.NET中怎么为子控件添加样式

下一篇:ASP.NET中怎么处理复合控件事件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》