centos7 源碼編譯安裝 nginx

安裝步驟

  1. 下載 nginx 源碼包 官網linux

    $ wget http://nginx.org/download/nginx-1.16.0.tar.gz
  2. 解壓 nginx 壓縮包nginx

    $ tar -zxvf nginx-1.16.0.tar.gz
  3. 建立 www 用戶 (已存在能夠跳過)c++

    $ groupadd www
    $ useradd -g www -s /sbin/nologin -M www
  4. 運行 configure 文件檢測程序vim

    $ cd nginx-1.16.0 
    
    $ ./configure --prefix=/usr/local/nginx --user=www --group=www
    
    checking for OS 
    
    + Linux 3.10.0-957.12.2.el7.x86_64 x86_64 
    
    checking for C compiler ... not found 
    
    ./configure: error: C compiler cc is not found 
    # 此處是由於沒有 gcc 和 gcc-c++ 依賴包,因爲我是 centos 能夠直接經過yum進行安裝 
    $ yum -y install gcc gcc-c++
    ... 此處省略安裝步奏
    # 再次執行上面的 configure 步驟
    $ ./configure --prefix=/usr/local/nginx --user=www --group=www
    ... 此處省略一部分
    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.
    # 此次根據提示是由於沒有 PCRE 庫 ,執行 yum 安裝 pcre-devel便可
    $ yum -y install pcre-devel
    ... 此處省略一部分
    Running transaction
      正在安裝    : pcre-devel-8.32-17.el7.x86_64                               1/1
      驗證中      : pcre-devel-8.32-17.el7.x86_64                               1/1
    
    已安裝:
      pcre-devel.x86_64 0:8.32-17.el7
    
    完畢!
    # 再次執行 configure 步驟
    $ ./configure --prefix=/usr/local/nginx --user=www --group=www
    ... 此處省略一部分
    ./configure: error: the HTTP gzip module requires the zlib library.
    You can either disable the module by using --without-http_gzip_module
    option, or install the zlib library into the system, or build the zlib library
    statically from the source with nginx by using --with-zlib=<path> option.
    # 這此根據提示是由於沒有 zlib 庫 ,執行 yum 安裝 zlib 和 zlib-devel 便可
    $ yum -y install zlib zlib-devel
    ... 此處省略一部分
    Running transaction
      正在安裝    : zlib-devel-1.2.7-18.el7.x86_64                          1/1
      驗證中      : zlib-devel-1.2.7-18.el7.x86_64                              1/1
    
    已安裝:
      zlib-devel.x86_64 0:1.2.7-18.el7
    
    完畢!
    # 再次執行 configure 步驟
    $ ./configure --prefix=/usr/local/nginx --user=www --group=www
    ... 此處省略一部分
    Configuration summary
      + using system PCRE library
      + OpenSSL library is not used
      + using system zlib library
    
      nginx path prefix: "/usr/local/nginx"
      nginx binary file: "/usr/local/nginx/sbin/nginx"
      nginx modules path: "/usr/local/nginx/modules"
      nginx configuration prefix: "/usr/local/nginx/conf"
      nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
      nginx pid file: "/usr/local/nginx/logs/nginx.pid"
      nginx error log file: "/usr/local/nginx/logs/error.log"
      nginx http access log file: "/usr/local/nginx/logs/access.log"
      nginx http client request body temporary files: "client_body_temp"
      nginx http proxy temporary files: "proxy_temp"
      nginx http fastcgi temporary files: "fastcgi_temp"
      nginx http uwsgi temporary files: "uwsgi_temp"
      nginx http scgi temporary files: "scgi_temp"
    # 總算經過了下面進行編譯和安裝
    $ make && make install
    # 檢測是否安裝成功
    $ /usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    # 辛苦總算沒有白費,成功了.
  5. 啓動 nginx 服務centos

    $ /usr/local/nginx/sbin/nginx
    # 啓動了一個nginx服務,然我測試下是否啓動成功
    $ lsof -i:80
    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   17440   root    6u  IPv4  35217      0t0  TCP *:http (LISTEN)
    nginx   17441 nobody    6u  IPv4  35217      0t0  TCP *:http (LISTEN)
    # 完成。
    # PS:若是 lsof 沒有這個操做能夠使用 yum -y install lsof 安裝
  6. 配置防火牆80端口bash

    $ firewall-cmd --zone=public --add-port=80/tcp --permanent  
    $ systemctl restart firewalld

安裝總結

# 下載、解壓 源碼包
$ wget http://nginx.org/download/nginx-1.16.0.tar.gz 
$ tar -zxvf nginx-1.16.0.tar.gz 

# 建立 www 用戶 (已存在能夠跳過)
$ groupadd www
$ useradd -g www -s /sbin/nologin -M www

# 安裝 前置服務
$ yum -y install gcc gcc-c++ pcre-devel zlib zlib-devel

# 檢測安裝環境
$ ./configure --prefix=/usr/local/nginx --user=www --group=www

# 編譯 和 安裝
$ make && make install

# 啓動服務
$ /usr/local/nginx/sbin/nginx

# 打開防火牆
$ firewall-cmd --zone=public --add-port=80/tcp --permanent  
$ systemctl restart firewalld

操做命令

# 中止
[1]
$ pkill -9 nginx
[2]
$ nginx -s stop
# 檢查配置是否正確
$ nginx -t
# 重啓
$ nginx -s reload

配置開機自啓

因爲我是 centos 7 ,我打算用 systemctl 做爲個人管理工具,下面是個人操做步驟。tcp

還有一個緣由是由於我配置 nginx 啓動腳本老是報錯,我懶得去弄官網給的那個腳本了。工具

$ vim /lib/systemd/system/nginx.service
# 輸入如下代碼,而且保存
[Unit]
Description=nginx 
After=network.target 
   
[Service] 
Type=forking 
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true 
   
[Install] 
WantedBy=multi-user.target
$ systemctl start nginx.service
Failed to execute operation: Access denied
# 這裏報了一個錯誤,提示我沒有權限
$ setenforce 0 # 臨時關閉 selinux ,若是想長久關閉請自行搜索
$ systemctl start nginx
# 沒有報錯,測試一下 
$ lsof -i:80
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1398 root    6u  IPv4  19609      0t0  TCP *:http (LISTEN)
nginx   1399  www    6u  IPv4  19609      0t0  TCP *:http (LISTEN)
# 成功,設置爲開機自動啓動
$ systemctl enable nginx.service
相關文章
相關標籤/搜索