白小兔的小小站

既然选择了远方,便只顾风雨兼程

0%

CentOS7:编译安装Nginx

Nginx是目前非常流行的高性能的web服务器。它可以为我们的web应用提供反向代理、负载均衡等功能。它的安装方法有很多,这里介绍编译安装的方式。

Nginx下载与安装

1
2
3
4
5
6
7
8
9
10
11
# 下载nginx
wget http://nginx.org/download/nginx-1.14.2.tar.gz
# 解压缩
tar -zvxf nginx-1.14.2.tar.gz
# 编译 & 安装
cd nginx-1.14.2
# --with-http_ssl_module表示使用ssl模块,--with-http_gzip_static_module表示使用gzip模块
./configure --with-http_ssl_module --with-http_gzip_static_module --with-http_v2_module
# 如果执行configure出错,说明缺少依赖,可执行下面命令安装相关依赖
# yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
make && make install

注意,安装包最好保留,后续如果需要添加模块时,需要用于编译安装

Nginx默认位置

1
2
程序位置:/usr/local/nginx/sbin/nginx 
配置文件位置:/usr/local/nginx/conf/nginx.conf

Nginx命令

进入nginx目录:cd /usr/local/nginx/sbin/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动
./nginx
# 停止
./nginx -s stop
# 重启
./nginx -s reload
# 检查配置文件是否正确:
./nginx -t
# 查看nginx的pid:
cat /usr/local/nginx/logs/nginx.pid
# 查看nginx版本
./nginx -v
# 查看编译配置
./nginx -V

Nginx开机启动

开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:/lib/systemd/system/

  1. 在系统服务目录里创建nginx.service文件

    1
    vi /lib/systemd/system/nginx.service

    内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Unit]
    Description=nginx
    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

    [Unit]:服务的说明
    Description:描述服务
    After:描述服务类别
    [Service]:服务运行参数的设置
    Type=forking:后台运行的形式
    ExecStart:服务的具体运行命令
    ExecReload:重启命令
    ExecStop:停止命令
    PrivateTmp=True:给服务分配独立的临时空间
    注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
    [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

  2. 设置开机启动

    1
    systemctl enable nginx.service
  3. 其他命令

    • 启动nginx服务

      1
      systemctl start nginx.service
    • 设置开机自启动

      1
      systemctl enable nginx.service
    • 停止开机自启动

      1
      systemctl disable nginx.service
    • 查看服务当前状态

      1
      systemctl status nginx.service
    • 重新启动服务

      1
      systemctl restart nginx.service
    • 查看所有已启动的服务

      1
      systemctl list-units --type=service