環境:html
mac系統下,使用wmware fusion 安裝了Ubuntu16.04, 爲了操做方便,使用了secureCRT這個工具來管理虛擬機。node
使用root賬戶進行操做。linux
虛擬機配置:nginx
因爲常常會使用多個虛擬機配合,爲了保證虛擬機的IP不本身變化,爲虛擬機配置了靜態IP。vim
vim /etc/network/interfaces瀏覽器
會看到相似下面的內容 服務器
# The primary network interface
auto ens33
iface ens33 inet dhcp session
這是動態分配ip,修改成靜態ip,以下所示 ssh
# 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 root@192.168.79.161,這個過程會有個詢問,輸入yes,而後再輸入161機器root用密鑰,而後會拷貝宿主機的ssh公鑰到虛擬機上。
如今能夠嘗試 ssh root@192.168.79.161,直接登陸到虛擬機。輸入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 命令了
讓vim識別nginx配置語法:安裝完畢後,若是使用vim編輯 nginx.conf,會發現裏面不能高亮nginx語法。能夠執行 cp -r ~/nginx-1.14.2/contrib/vim/ ~/.vim。
經常使用命令
查看進程: 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安裝目錄/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會把新日誌信息寫入這個新的文件中
這樣完成了日誌的切割工做, 同時切割過程當中沒有日誌的丟失。
一些操做技巧
利用-p 簡化路徑
假如咱們把nginx安裝到了 /usr/local/nginx下,但咱們又想把nginx的配置和日誌放到別的目錄,如 /users/wxl/work/nginx。
那咱們若是想須要這樣啓動 nginx -c /users/wxl/work/nginx/conf/nginx.conf。 這未免太長了一些。
若是咱們已經在 /users/wxl/work/nginx 目錄下,咱們能夠 nginx -p `pwd`/ 。
其中 -p path 就是讓nginx以path 爲前綴 去找相關文件,好比 在當前目錄下查找 conf/nginx.conf。
這不樣使啓動命令減短,並且還能夠簡化配置文件裏的書寫和遷移。由於nginx.conf裏有一些跟路徑相關的配置,
access_log /users/wxl/work/nginx/logs/acc.log main
這樣的配置看起來比較頭疼,寫的時候麻煩,若是想把nginx換個目錄,修改也比較麻煩。
咱們可使用相對目錄
access_log logs/acc.log main
而後啓動的時候使用 nginx -p `pwd`/ 。 注意:若是不指定-p 的話,則會日誌文件會保存在安裝默認目錄下。
另外,指定-p `pwd`/時,nginx運行時產生的各類臨時文件目錄也會在這個目錄下。能夠理解爲nginx就運行在這個目錄下。