(1)進入官方下載地址,選擇合適版本(nginx/Windows-xxx)。javascript
(2)解壓到本地php
(3)啓動css
下面以 C 盤根目錄爲例說明下:html
cd C: cd C:\nginx-0.8.54 start nginx
注:Nginx / Win32 是運行在一個控制檯程序,而非 windows 服務方式的。服務器方式目前仍是開發嘗試中。
(1)進入下載頁面,選擇合適版本下載。java
$ wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
(2)安裝 nginx rpm 包linux
nginx rpm 包實際上安裝的是 nginx 的 yum 源。nginx
$ rpm -ivh nginx-*.rpm
(3)正式安裝 rpm 包c++
$ yum install nginx
(4)關閉防火牆git
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reload
進入官網下載地址:http://nginx.org/en/download.... ,選擇合適的版本下載(PS: 建議選擇最新的穩定版本)。github
這裏我選擇的是 1.16.1 版本:http://nginx.org/download/ngi...
wget http://nginx.org/download/nginx-1.16.1.tar.gz
Nginx 源碼的編譯依賴於 gcc 以及一些庫文件,因此必須提早安裝。
(1)安裝gcc環境
yum install gcc-c++
(2)安裝PCRE庫,用於解析正則表達式
yum install -y pcre pcre-devel
執行 pcre-config --version
命令。
(3)zlib壓縮和解壓縮依賴,
yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字協議層,用於HTTP安全傳輸,也就是https
yum install -y openssl openssl-devel
(1)解壓,須要注意,解壓後獲得的是源碼,源碼須要編譯後才能安裝
tar -zxvf nginx-1.16.1.tar.gz
(2)編譯以前,先建立nginx臨時目錄,若是不建立,在啓動nginx的過程當中會報錯
mkdir /var/temp/nginx -p
(3)在nginx目錄,輸入以下命令進行配置,目的是爲了建立makefile文件
./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi
配置命令:
命令 | 解釋 |
---|---|
–prefix | 指定nginx安裝目錄 |
–pid-path | 指向nginx的pid |
–lock-path | 鎖定安裝文件,防止被惡意篡改或誤操做 |
–error-log | 錯誤日誌 |
–http-log-path | http日誌 |
–with-http_gzip_static_module | 啓用gzip模塊,在線實時壓縮輸出數據流 |
–http-client-body-temp-path | 設定客戶端請求的臨時目錄 |
–http-proxy-temp-path | 設定http代理臨時目錄 |
–http-fastcgi-temp-path | 設定fastcgi臨時目錄 |
–http-uwsgi-temp-path | 設定uwsgi臨時目錄 |
–http-scgi-temp-path | 設定scgi臨時目錄 |
(4)make編譯並安裝
make make install
(5)關閉防火牆
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reload
(6) 啓動 Nginx
安裝成功後,進入sbin目錄啓動 nginx
./nginx
./nginx -s stop
./nginx -s reload
打開瀏覽器,訪問虛擬機所處內網ip便可打開nginx默認頁面,顯示以下便表示安裝成功:
Centos7 以上是用 Systemd 進行系統初始化的,Systemd 是 Linux 系統中最新的初始化系統(init),它主要的設計目標是克服 sysvinit 固有的缺點,提升系統的啓動速度。Systemd 服務文件以 .service 結尾。
若是是經過 rpm 包安裝的,會自動建立 nginx.service 文件。
直接用命令:
$ systemctl enable nginx.service
設置開機啓動便可。
若是採用源碼編譯方式,須要手動建立 nginx.service 文件。
詳情參考:centos 7.x編寫開機啓動服務
docker pull nginx
docker run --name my-nginx -p 80:80 -v /data/docker/nginx/logs:/var/log/nginx -v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
docker exec -it my-nginx nginx -s reload
docker exec -it my-nginx nginx -s stop
或者:docker stop my-nginx
docker restart my-nginx
CentOS7 環境安裝腳本: 軟件運維配置腳本集合
安裝說明
/usr/local/nginx
1.16.0
版本使用方法
curl -o- https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/nginx-install.sh | bash wget -qO- https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/nginx-install.sh | bash
sh nginx-install.sh [version]
main 全局配置
http http 模塊相關配置
server 虛擬主機配置,能夠配置多個
在前面搭建好 Nginx 環境後,編譯的 Nginx 根路徑爲 /usr/local/nginx,那麼對應的配置文件爲 /usr/local/nginx/conf/nginx.conf ,直接用 cat 命令查看這裏的配置文件內容(刪除掉了原配置文件中的英文註釋,並對主要配置項增長中文註釋):
$ cat /root/nginx/conf/nginx.conf # 設置worker進程的用戶,指的linux中的用戶,會涉及到nginx操做目錄或文件的一些權限,默認爲`nobody` user root; # worker進程工做數設置,通常來講CPU有幾個,就設置幾個,或者設置爲N-1也行 worker_processes 1; # nginx 日誌級別`debug | info | notice | warn | error | crit | alert | emerg`,錯誤級別從左到右愈來愈大 # error_log logs/error.log info # 設置nginx進程 pid # pid logs/nginx.pid; # 設置工做模式 events { # 默認使用 epoll use epoll; # 設置每一個worker進程的最大鏈接數,它決定了Nginx的併發能力 worker_connections 1024; } # http 是指令塊,針對http網絡傳輸的一些指令配置 http { # include 引入外部配置,提升可讀性,避免單個配置文件過大 include mime.types; default_type application/octet-stream; # 設定日誌格式,`main`爲定義的格式名稱,如此 access_log 就能夠直接使用這個變量了 # 註釋了日誌格式的配置,使用默認 ... # sendfile使用高效文件傳輸,提高傳輸性能。 # 啓用後才能使用`tcp_nopush`,是指當數據表累積必定大小後才發送,提升了效率。 sendfile on; tcp_nopush on; # 重要參數,是一個請求完成以後還要保持鏈接多久,不是請求時間多久, # 目的是保持長鏈接,減小建立鏈接過程給系統帶來的性能損耗 keepalive_timeout 65; # gzip啓用壓縮,html/js/css壓縮後傳輸會更快 gzip on; # server塊配置 server { # 監聽80端口 listen 80; server_name localhost; # 匹配url /,會在html目錄下,訪問index.html或index.htm文件 location / { root html; index index.html index.htm; } # 指定500 502 503 504出錯的錯誤頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
設定日誌格式,main
爲定義的格式名稱,如此 access_log 就能夠直接使用這個變量了
參數名 | 參數意義 |
---|---|
$remote_addr | 客戶端ip |
$remote_user | 遠程客戶端用戶名,通常爲:’-’ |
$time_local | 時間和時區 |
$request | 請求的url以及method |
$status | 響應狀態碼 |
$body_bytes_send | 響應客戶端內容字節數 |
$http_referer | 記錄用戶從哪一個連接跳轉過來的 |
$http_user_agent | 用戶所使用的代理,通常來時都是瀏覽器 |
$http_x_forwarded_for | 經過代理服務器來記錄客戶端的ip |
現有的日誌都會存在 access.log
文件中,可是隨着時間的推移,這個文件的內容會愈來愈多,體積會愈來愈大,不便於運維人員查看,因此咱們能夠經過把這個大的日誌文件切割爲多份不一樣的小文件做爲日誌,切割規則能夠以天
爲單位,若是天天有幾百G或者幾個T的日誌的話,則能夠按需以每半天
或者每小時
對日誌切割一下。
具體步驟以下:
cut_log.sh
,內容爲:#!/bin/bash LOG_PATH="/var/log/nginx/" RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) PID=/var/run/nginx/nginx.pid mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log #向Nginx主進程發送信號,用於從新打開日誌文件 kill -USR1 `cat $PID`
cut_log.sh
添加可執行的權限:chmod +x cut_log.sh
./cut_log.sh
安裝定時任務:
yum install crontabs
crontab -e
編輯而且添加一行新的任務:
*/1 * * * * /usr/local/nginx/sbin/cut_log.sh
重啓定時任務:
service crond restart systemctl restart crond.service
附:經常使用定時任務命令:
service crond start // 啓動服務 service crond stop // 關閉服務 service crond restart // 重啓服務 service crond reload // 從新載入配置 crontab -e // 編輯任務 crontab -l // 查看任務列表
Cron表達式是,分爲5或6個域,每一個域表明一個含義,以下所示:
分 | 時 | 日 | 月 | 星期幾 | 年(可選) | |
---|---|---|---|---|---|---|
取值範圍 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2019/2020/2021/… |
每分鐘執行:
*/1 * * * *
每日凌晨(天天晚上23:59)執行:
59 23 * * *
每日凌晨1點執行:
0 1 * * *
# 開啓 gzip 壓縮功能,目的:提升傳輸效率,節約服務器帶寬 gzip on; # 限制最小壓縮,小於 1 字節文件不會壓縮 gzip_min_length 1; # 設置圖片壓縮級別(壓縮比,文件越大,壓縮越多,可是 CPU 使用會越多) gzip_comp_level 3; # 定義壓縮文件的類型 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json;
假如服務器路徑爲:/home/imooc/files/img/face.png
配置的時候爲:
location /imooc { root /home }
用戶訪問的時候請求爲:url:port/imooc/files/img/face.png
配置的時候爲:
location /hello { alias /home/imooc }
用戶訪問的時候請求爲:url:port/hello/files/img/face.png
,如此至關於爲目錄imooc
作一個自定義的別名。
空格
:默認匹配,普通匹配
location / { root /home; }
=
:精確匹配
location = /imooc/img/face1.png { root /home; }
~*
:匹配正則表達式,不區分大小寫
#符合圖片的顯示 location ~* .(GIF|jpg|png|jpeg) { root /home; }
~
:匹配正則表達式,區分大小寫
#GIF必須大寫才能匹配到 location ~ .(GIF|jpg|png|jpeg) { root /home; }
^~
:以某個字符路徑開頭
location ^~ /imooc/img { root /home; }
<p/>