下載 nginx 源碼包 官網linux
$ wget http://nginx.org/download/nginx-1.16.0.tar.gz
解壓 nginx 壓縮包nginx
$ tar -zxvf nginx-1.16.0.tar.gz
建立 www 用戶 (已存在能夠跳過)c++
$ groupadd www $ useradd -g www -s /sbin/nologin -M www
運行 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 # 辛苦總算沒有白費,成功了.
啓動 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 安裝
配置防火牆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