Ubuntu1604下安裝nginx1.14.2——vmfusion_Securecrt_ssh
環境:
mac系統下,使用wmware fusion 安裝了Ubuntu16.04, 為了操作方便,使用了secureCRT這個工具來管理虛擬機。
使用root帳戶進行操作。
虛擬機配置:
由於經常會使用多個虛擬機配合,為了保證虛擬機的IP不自己變化,為虛擬機配置了靜態IP。
vim /etc/network/interfaces
會看到類似下面的內容
# The primary network interface
auto ens33
iface ens33 inet dhcp
這是動態分配ip,修改為靜態ip,如下所示
# The primary network interface
auto ens33
iface ens33 inet static
address 192.168.79.161
netmask 255.255.255.0
gateway 192.168.79.2
dns-nameserver 192.168.79.2 #為了讓虛擬機能正常上網,需要指定dns服務器地址,這裏指定為宿主機地址
保存,並重啟後,執行ifconfig ,可以看到ip已經變為161
SecureCRT配置
之所以使用這個工具,主要是直接用vmfusion的窗口,與宿主機交互不是很方便,屏幕輸出也看不到歷史消息。
為了能使用ssh登錄,需要先將本機的ssh的公鑰拷貝到虛擬機。同時需要在虛擬機上安裝openssh-server。
安裝openssh-server: 參考https://blog.csdn.net/qq_35038153/article/details/77898815
然後在宿主機終端執行 ssh-copy-id [email protected],這個過程會有個詢問,輸入yes,然後再輸入161機器root用密鑰,然後會拷貝宿主機的ssh公鑰到虛擬機上。
現在可以嘗試 ssh [email protected],直接登錄到虛擬機。輸入exit既出登錄。
然後可以在secureCrt中添加一個session,並選擇ssh登錄優先。具體可參考 https://jingyan.baidu.com/article/c275f6ba08267ae33c756758.html
正題--安裝nginx
參考鏈接:http://www.cnblogs.com/EasonJim/p/7806879.html#commentform
更新包源: apt-get update
安裝gcc g++的依賴庫
sudo apt-get install build-essential sudo apt-get install libtool
安裝pcre依賴庫(http://www.pcre.org/),PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正規表達式庫.
sudo apt-get install libpcre3 libpcre3-dev
安裝zlib依賴庫(http://www.zlib.net),zlib 是通用的壓縮庫,提供了一套 in-memory 壓縮和解壓函數。zlib 也支持讀寫 gzip (.gz) 格式的文件。源碼網址:http://www.gzip.org/zlib/。
sudo apt-get install zlib1g-dev
安裝SSL依賴庫(16.04默認已經安裝了), 有這個才能支持https
sudo apt-get install openssl libssl-dev , libssl-dev 如果不做這方面的開發,可以不安裝libssl-dev
安裝Nginx
#下載最新版本: wget http://nginx.org/download/nginx-1.14.2.tar.gz #解壓: tar -zxvf nginx-1.14.2.tar.gz #進入解壓目錄: cd nginx-1.14.2 #配置: ./configure --prefix=/usr/local/nginx --user=www
#可以不指定用戶,然後在nginx.conf裏通過命令指定。如果兩處都不指定默認會以nobody用戶運行nginx,會導致403.
# 默認是沒有用戶www的, 可執行 useradd www #編譯: make #安裝: sudo make install #啟動:
1)可直接使用文件路徑 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 註意:-c 指定配置文件的路徑,不加的話,nginx會自動加載默認路徑的配置文件,可以通過-h查看幫助命令。
查看默認使用的配置路徑可以使用 -t命令
root@localhost:/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
2)如果閑每次敲路徑麻煩,可以把nginx的路徑加入到系統變量PATH中。
可使用 vim /etc/profile
在打開的文件中最後加入 export PATH=$PATH:/usr/local/nginx/sbin
然後執行 source /etc/profile
OK ,現在可以直接使用nginx 命令了
常用命令
查看進程: ps -ef | grep nginx
幫助
nginx -? 或 nginx -h
查看版本
nginx -v #只顯示版本信息
nginx -V #顯示版本信息,以及配置信息
測試配置文件
測試當前配置文件是否正確: nginx -t
測試指定配置文件是否正確: nginx -t 指定配置文件路徑
發送信息給nginx主進程
nginx -s stop | quit | reopen | reload #具體含義後面會有
註意: 這個命令執行時,會先找到配置文件,再依據配置文件指定的pid存儲路徑(如果沒有,則是默認路徑/usr/local/nginx/logs/nginx.pid),從中讀取主進程號,給這個進程發送通知。
而如果運行多個nginx實例,可能會出現你意想不到的情況。
比如果執行了以下 兩條命令,運行了兩個實例
nginx #采用默認配置 主進程號 21777
nginx -c /nginxtest/nginx.conf #采用配置文件/nginxtest/nginx.conf 主進程號21892
如果/nginxtest/nginx.conf 這個配置裏沒有指定pid路徑,則采用的是默認路徑/usr/local/nginx/logs/nginx.pid,
也就是說執行第二條命令的時候,把第一條命令時產生的nginx.pid給覆蓋了,裏面的值是21892
在這種情況下如果執行nginx -s stop ,關閉的是第二個實例(主進程號為21892),第一個實例仍然在運行。
而且再一次執行nginx -s stop 會報錯,因為stop的時候,已經將nginx.pid刪除了,找不到對應的pid,無法發送命令。
正確的方式是:
1.通過在每個配置文件裏指定不同的pid路徑,如
pid /nginxtest/nginx.pid;
2.發送通知時,指定配置文件,如
nginx -s reload -c /nginxtest/nginx.conf
停止:
-
- 直接殺nginx進程。 ps aux|grep nginx 查看nginx的主進程號, 調用 kill -9 nginx的進程號 來強制停止nginx。(還有 ”kill -quit nginx的進程號” 來從容停止nginx, ”kill -term nginx的進程號”來快速的停止nginx)
- 調用 nginx -s stop 快速停止nginx
- 調用 nginx -s quit 完整有序的停止nginx
啟動:
進入nginx安裝目錄/sbin/下執行
nginx 或者 nginx -c 特定位置的nginx.conf
重啟:
nginx -s reload 平滑的重啟。配置重載。
nginx工作中,包括一個master進程,多個worker進程。worker進程負責具體的http等相關工作,master進程主要是進行控制等控制。
nginx -s reload 命令加載修改後的配置文件,命令下達後發生如下事件
1. Nginx的master進程檢查配置文件的正確性,若是錯誤則返回錯誤信息,nginx繼續采用原配置文件進行工作(因為worker未受到影響)
2. Nginx啟動新的worker進程,采用新的配置文件
3. Nginx將新的請求分配新的worker進程
4. Nginx等待以前的worker進程的全部請求已經都返回後,關閉相關worker進程
5. 重復上面過程,知道全部舊的worker進程都被關閉掉。
所以,重啟之後,master的進程號不變,worker的進程號會改變。
日誌分割:
nginx -s reopen 重新打開日誌文件。
為什麽要切割日誌?一般Nginx安裝好後有些人會打開日誌記錄,有些人會關閉日誌記錄,打開日誌記錄的人一般都會把架設在Nginx上的所有網站日誌都存在同一個文件裏(比如我存在access.log日誌文件裏),
這樣日積月累所有網站的訪問記錄就會把日誌文件越積越大,當需要查看日誌文件的時候一看就是一大串,不方便查找。現在,如果我把每天的日誌文件分割開來用相應的日期標識出來這樣就大大方便查找了。
我是建議打開日誌記錄,日誌記錄裏面存放著很多有用的東西。比如:瀏覽器名稱,可以方便你對網站的排版做出調整;IP地址,如果網站收到攻擊,你就可以查到那個IP地址。
Linux下我們可以簡單的把日誌文件mv走,但是你會發現mv走後新的日誌文件沒有重新生成,一般linux下用的文件句柄,文件被打開情況下你mv走文件,但是原來操作這個文件的進程還是有這個文件的inode等信息,
原進程還是讀寫原來的文件,因此簡單的mv是無法生效的。
因此建議過程如下
1. mv原文件到新文件目錄中,這個時候 nginx還寫這個文件(寫入新位置文件中了)
2. 調用nginx -s reopen用來打開日誌文件,這樣nginx會把新日誌信息寫入這個新的文件中
這樣完成了日誌的切割工作, 同時切割過程中沒有日誌的丟失。
Ubuntu1604下安裝nginx1.14.2——vmfusion_Securecrt_ssh