nginx 編譯安裝


nginx 的安裝

windows版本

直接官方下載地址根據需求下載對應的版本(推薦Stable version(穩定版))下載安裝,安裝很簡單,就直接略過

linux 版本(源碼安裝)

依賴

安裝nginx之前了解我們所需要的

  1. gcc gcc-c++ (因為安裝nginx需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境的話,需要安裝gcc)
  2. pcre pcre-devel (Perl庫,包括 perl 兼容的正則表達式庫。nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝pcre庫)
  3. zlib zlib-devel (zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫)
  4. openssl openssl-devel (OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫)
  5. nginx 源碼到官網下載,參考windows版下載的介紹
yum 安裝依賴
# 安裝依賴
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 下載nginx源碼到/user/local/src下, 這里下載的是1.18版,可以根據需要到官方找適合的版本
wget -P /user/local/src http://nginx.org/download/nginx-1.18.0.tar.gz
離線安裝

由於服務器是內網的無法通過yum下載依賴的,可以通過先在具備外網環境的系統(盡量與目標服務器版本保存一致)下載rpm包,上傳到目標服務器,然后安裝,步驟如下:

  1. 修改yum配置
# 修改yum配置
vim /etc/yum.conf
# cachedir 及yum下載的rpm包緩存地址,原地址中可能已經緩存有東西,所以注釋掉原本的cachedir,為此次下載nginx相關rpm單獨建立一個文件夾,設置為cachedir
cachedir=/data/nginx/rpms/yum/$basearch/$releasever
# keepcache 是否緩存改為1
keepcache=1
# 保存退出
  1. 下載依賴
    使用yum下載編譯環境、依賴以及wget 下載nginx源碼,這里不再重復

  2. 根據本文后面的方法在系統上先安裝一遍nginx,確定所有依賴和環境可以正常安裝

  3. 連接目標服務器,mkdir /user/nginx,將nginx源碼放入其中,nginx下再新建rpms文件夾,放下載的rpm文件

  4. rpm 安裝

# 進入/data/nginx/rpms,執行rpm命令將所有的rpm包進行安裝
rpm -Uvh *.rpm --nodeps --force
編譯安裝nginx
# 解壓縮
cd /user/nginx
tar -zxvf nginx-1.18.0.tar.gz
# 執行命令編譯
cd nginx-1.18.0
./configure && make && make install
# 結果最后幾行顯示有:make[1]:Leaving directory '/root/nginx...'即編譯安裝成功
# 查看nginx位置(一般是在/user/local/nginx)
whereis nginx
# 啟動
/user/local/nginx/sbin/nginx -c /user/local/nginx/conf/nginx.conf

至此我們的nginx即安裝成功了,但是我們還需要將其加入服務中,方便后面管理

創建服務
方法一
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Service Control Script

PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in

 start)
  $PROG -t &> /dev/null
  if [ $? -eq 0 ] ; then
   $PROG
   echo "Nginx service start success."
  else
   $PROG -t
  fi
   ;;

 stop)

   kill -s QUIT $(cat $PIDF)
   echo "Nginx service stop success."
   ;;

 restart)
   $0 stop
   $0 start
   ;;

 reload)
  $PROG -t &> /dev/null
  if [ $? -eq 0 ] ; then
   kill -s HUP $(cat $PIDF)
   echo "reload Nginx config success."
  else
   $PROG -t
  fi
   ;;

 *)
  echo "Usage: $0 {start|stop|restart|reload}"
  exit 1
esac
添加執行權限
chmod +x /etc/init.d/nginx

添加到服務管理列表,並讓其開機自動啟動:
chkconfig --add nginx
chkconfig nginx on
chkconfig --list nginx    查看添加情況

啟動服務腳本
service nginx start
方法二(推薦)
vim /user/lib/systemd/system/nginx.service

將腳本內容復制進去(注意編譯安裝的路徑如果不一致記得修改)

[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

使用
systemctl start|stop|reload|restart|status nginx.service
開機自啟:
systemctl enable nginx.service
關閉開機自啟:
systemctl disable nginx.service
可能用到的其它命令

查看端口占用: lsof -i:端口號
查看防火牆狀態:systemctl status firewalld
永久開放端口:firewall-cmd --add-port=端口號/tcp --permanent
查看指定端口: firewall-cmd --query-port=端口號/tcp
已開放的端口:netstat -anp(需要安裝netstat)
修改防火牆后需要重載配置: firewall-cmd --reload

參考:

https://blog.csdn.net/yuanfangPOET/article/details/90045001
https://www.jianshu.com/p/9f2c162ac77c
https://www.cnblogs.com/happyyangyanghappy/p/10860747.html
https://www.cnblogs.com/ysocean/p/9384877.html#_label2_2
https://www.cnblogs.com/lh438369/p/8985682.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM