Linux(6)- redis發佈訂閱/持久化/主從複製/redis-sentinel/redis-cluster、nginx入門

1、redis發佈訂閱

  Redis 經過 PUBLISH 、SUBSCRIBE 等命令實現了訂閱與發佈模式。html

  其實從Pub/Sub的機制來看,它更像是一個廣播系統,多個Subscriber能夠訂閱多個Channel,多個Publisher能夠往多個Channel中發佈消息。能夠這麼簡單的理解:node

    - Subscriber:收音機,能夠收到多個頻道,並以隊列方式顯示;python

    - Publisher:電臺,能夠往不一樣的FM頻道中發消息;mysql

    - Channel:不一樣頻率的FM頻道;linux

  一個Publisher,多個Subscriber模型:以下圖所示,能夠做爲消息隊列或者消息管道nginx

  主要應用:通知、公告c++

一、發佈/訂閱的命令golang

PUBLISH channel msg
將信息 message 發送到指定的頻道 channel
SUBSCRIBE channel [channel ...] 訂閱頻道,能夠同時訂閱多個頻道
UNSUBSCRIBE [channel ...] 取消訂閱指定的頻道, 若是不指定頻道,則會取消訂閱全部頻道
PSUBSCRIBE pattern [pattern ...] 訂閱一個或多個符合給定模式的頻道,每一個模式以
* 做爲匹配符,好比 it* 匹配全部以 it 開頭的頻道( it.news 、it.blog 、it.tweets 等等),news.* 匹配全部以news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類
PUNSUBSCRIBE [pattern [pattern ...]] 退訂指定的規則, 若是沒有參數則會退訂全部規則
PUBSUB subcommand [argument [argument ...]] 查看訂閱與發佈系統狀態
注意:使用發佈訂閱模式實現的消息隊列,當有客戶端訂閱channel後只能收到後續發佈到該頻道的消息,以前發送的不會緩存,必須Provider和Consumer同時在線。

二、發佈/訂閱演示web

  準備工做:啓動三個redis-cli窗口,其中窗口1是發佈者,窗口二、3是訂閱者,訂閱者都訂閱music頻道(channel)。正則表達式

 三、訂閱一個或者多個符合模式的頻道

2、redis持久化(RDB與AOF)

  Redis是一種內存型數據庫,一旦服務器進程退出,數據庫的數據就會丟失,爲了解決這個問題,Redis提供了兩種持久化的方案,將內存中的數據保存到磁盤中,避免數據的丟失。

一、RDB持久化

  redis提供了RDB持久化的功能,這個功能能夠將redis在內存中的的狀態保存到硬盤中,在指定的時間間隔內生成數據集的時間點快照(point-in-time snapshot),它能夠手動執行,也能夠在redis.conf中配置,按期執行。

  RDB持久化產生的RDB文件是一個通過壓縮的二進制文件,這個文件被保存在硬盤中,redis能夠經過這個文件還原數據庫當時的狀態。

  第一步:準備一個配置文件,如rdb-redis.conf,寫入下面代碼

  [root@localhost redis-4.0.10]# touch rdb-redis.conf           建立配置文件 
  [root@localhost redis-4.0.10]# vi rdb-redis.conf              編輯本身的配置文件
  daemonize yes                             # 設置後臺服務,非持久化必須
  port 6379                                 # 設置端口號,非持久化必須
  logfile /data/6379/redis.log              # redis日誌文件
  dir /data/6379                            # 定義持久化文件存儲位置
  dbfilename mydata.rdb                     # 定義rdb持久化文件名
  # ########### 如下是按期持久化設置的rdb機制 ###################
  save 900 1                               # 每900秒內   有1個修改記錄則觸發持久化
  save 300 10                              # 每300秒內   有10個修改記錄則觸發持久化
  save 60  10000                           # 每60秒內    有10000修改記錄則觸發持久化

  第二步:啓動redis服務端

[root@localhost redis-4.0.10]# redis-server rdb-redis.conf

  第三步:登陸redis設置一個key

[root@localhost redis-4.0.10]# redis-cli 
127.0.0.1:6379> set age 18         # 寫入數據
OK

  第四步:經過save命令觸發持久化,將數據寫入RDB文件

127.0.0.1:6379> save                # 手動經過save命令觸發持久化
OK

  第五步:此時檢查/data/6379,有沒有mydata.rdb文件

  第六步:驗證

    重啓redis服務端,從新登陸redis查看數據

二、AOF持久化

  AOF(append-only log file)記錄服務器執行的全部變動操做命令(例如set del等),並在服務器啓動時,經過從新執行這些命令來還原數據集。

  AOF 文件中的命令所有以redis協議的格式保存,新命令追加到文件末尾。

  優勢:最大程序保證數據不丟;

  缺點:日誌記錄很是大;

  AOF持久化配置,有以下兩個參數:
  appendonly   yes
  appendfsync  always      老是修改類的操做
                everysec   每秒作一次持久化
                no         依賴於系統自帶的緩存大小機制

  第一步:準備一個配置文件,如aof-redis.conf,寫入以下代碼

  [root@localhost redis-4.0.10]# touch aof-redis.conf          建立配置文件 
  [root@localhost redis-4.0.10]# vi aof-redis.conf              編輯本身的配置文件
  daemonize yes                             # 設置後臺服務,非持久化必須
  port 6379                                 # 設置端口號,非持久化必須
  logfile /data/6379/redis.log             # redis日誌文件
  dir /data/6379                            # 定義持久化文件存儲位置
  appendonly   yes                          # 使用aof持久化
  appendfsync  everysec                    # 每秒作一次持久化

  第二步:啓動redis服務端

  第三步:此時查看目錄/data/6379,有沒有文件appendonly.aof

[root@web02 6379]# ls
appendonly.aof  redis.log

  第四步:登陸redis,寫入數據,再開一個窗口實時檢查aof文件信息

[root@web02 6379]# tail -f appendonly.aof             # 實時檢查aof文件信息

  第五步:驗證

    重啓redis服務端,登陸,查看數據是否存在  

三、redis 持久化方式有哪些?有什麼區別?

  rdb:基於快照的持久化,速度更快,通常用做備份,主從複製也是依賴於rdb持久化功能。

  aof:以追加的方式記錄redis操做日誌的文件,能夠最大程度的保證redis數據安全,相似於mysql的binlog。

四、redis不重啓,切換RDB到AOF

  首先,要確保redis版本在2.2以上

[root@localhost ~]# redis-server -v                查看redis版本

  準備階段:

  [root@localhost redis-4.0.10]# redis-server my-redis.conf   目前是rdb持久化模式
  my-redis.conf文件內容以下:
  daemonize yes                             
  port 6379                                 
  logfile /data/6379/redis.log             
  dir /data/6379                            
  dbfilename mydata.rdb                     
  save 900 1                               
  save 300 10                              
  save 60  10000                     

  切換RDB到AOF:

[root@localhost redis-4.0.10]# redis-cli
127.0.0.1:6379> CONFIG set appendonly yes               # 用命令激活aof持久化
OK
127.0.0.1:6379> CONFIG SET save "" 			             # 關閉rdb持久化

    注意:此命令只是臨時生效,寫入到配置文件才能永久生效

  備份rdb文件,保證數據安全:

[root@localhost 6379]# cp mydata.rdb  /opt/

  測試aof數據持久化:

127.0.0.1:6379> set title golang                   # 寫入數據
OK
[root@localhost 6379]# tail -f appendonly.aof    # 檢測aof文件,驗證aof是否生效

  注意:雖然此時RDB已經正確切換AOF,可是還得修改配置文件my-redis.conf,否則重啓後,經過config set的配置將丟失,修改配置文件my-redis.conf爲以下內容:

  daemonize yes                             
  port 6379                                 
  logfile /data/6379/redis.log             
  dir /data/6379                            
  # dbfilename mydata.rdb                     
  # save 900 1                               
  # save 300 10                              
  # save 60  10000
  appendonly yes             
  appendfsync everysec

3、redis主從同步

  Redis集羣中的數據庫複製是經過主從同步來實現的,主節點(Master)把數據分發給從節點(Slave),主從同步的好處在於高可用,Redis節點有冗餘設計。

  原理:

    - 從服務器向主服務器發送 SYNC 命令。

    - 接到 SYNC 命令的主服務器會調用BGSAVE 命令,建立一個 RDB 文件,並使用緩衝區記錄接下來執行的全部寫命令。

    - 當主服務器執行完 BGSAVE 命令時,它會向從服務器發送 RDB 文件,而從服務器則會接收並載入這個文件。

    - 主服務器將緩衝區儲存的全部寫命令發送給從服務器執行。

一、環境準備(準備三個redis配置文件,經過端口的區分,啓動三個redis數據庫實例)

  [root@localhost redis-4.0.10]# vi redis-6380.conf        編輯配置文件,寫入以下內容
  port 6380
  daemonize yes
  pidfile /data/6380/redis.pid
  loglevel notice
  logfile "/data/6380/redis.log"
  dbfilename dump.rdb
  dir /data/6380

  經過命令快速生成配置文件redis-6381.conf和redis-6382.conf

[root@localhost redis-4.0.10]# sed "s/6380/6381/g" redis-6380.conf > redis-6381.conf 
[root@localhost redis-4.0.10]# sed "s/6381/6382/g" redis-6381.conf > redis-6382.conf

  在根目錄下建立6380、638一、6382三個目錄

[root@localhost ~]# mkdir -p /data/{6380,6381,6382}

  啓動三個redis實例,以下圖:

  此時,三個實例數據互不影響,測試以下:

二、關閉三個redis實例
  方式一:根據服務名殺死進程,能夠殺死全部有關
redis-server

[root@localhost redis-4.0.10]# pkill redis-server

  方式二:根據進程號pid殺死進程

[root@localhost redis-4.0.10]# pkill redis-server

3、配置主從同步(主從規劃:主節點爲6380,從節點爲63816382

  爲從節點6381指明主的地址

[root@localhost redis-4.0.10]# echo "slaveof 127.0.0.1 6380" >> redis-6381.conf

  爲從節點6382指明主的地址

[root@localhost redis-4.0.10]# echo "slaveof 127.0.0.1 6380" >> redis-6382.conf

4、再次啓動三個redis實例服務,查看redis主從同步方案

  方式一:redis-cli登陸後經過以下命令查看

127.0.0.1:6380> info replication                 
127.0.0.1:6381> info replication
127.0.0.1:6382> info replication

  方式二:redis-cli登陸前經過以下命令查看

[root@localhost redis-4.0.10]# redis-cli -p 6380 info
或者
[root@localhost redis-4.0.10]# redis-cli -p 6380 info Replication

五、測試,主庫寫入數據,檢查從庫數據

127.0.0.1:6380> set year 2019             主庫寫入數據
OK
127.0.0.1:6381> get year                  從庫獲取數據
"2019"

6、手動進行主從複製故障切換

  1)殺死主庫6380的實例進程

[root@localhost redis-4.0.10]# kill -9 主庫pid

  2)手動切換主從身份,從兩個從庫中挑選一個做爲新的主庫,假設選6381爲新的主庫

[root@localhost redis-4.0.10]# redis-cli -p 6381
127.0.0.1:6381> slaveof no one            關閉6381原來從庫的身份
[root@localhost redis-4.0.10]# redis-cli -p 6382
127.0.0.1:6382> slaveof no one
127.0.0.1:6381> slaveof 127.0.0.1 6381

  3)檢查63816382的主從信息

4、redis哨兵

一、Redis-Sentinel

  Redis-Sentinel是redis官方推薦的高可用性解決方案,當用redis做master-slave的高可用時,若是master自己宕機,redis自己或者客戶端都沒有實現主從切換的功能。而redis-sentinel就是一個獨立運行的進程,用於監控多個master-slave集羣,自動發現master宕機,進行自動切換slave > master。

  Sentinel(哨兵、崗哨)主要功能以下:

    - 不時的監控redis是否良好運行,若是節點不可達就會對節點進行下線標識;

    - 若是被標識的是主節點,sentinel就會和其餘的sentinel節點「協商」,若是其餘節點也認爲主節點不可達,就會選舉一個sentinel節點來完成自動故障轉義;

    - 在master-slave進行切換後,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變,即master_redis.conf中會多一行slaveof的配置,sentinel.conf的監控目標會隨之調換;

  簡而言之,Redis哨兵就是保護redis主從集羣正常運轉,當主庫掛掉以後,自動地在從庫中挑選新的主庫,進行同步。

二、主從複製背景問題

  Redis主從複製可將主節點數據同步給從節點,從節點此時有兩個做用:

    一旦主節點宕機,從節點做爲主節點的備份能夠隨時頂上來。

    擴展主節點的讀能力,分擔主節點讀壓力。

  可是問題是:一旦主節點宕機,從節點上位,那麼須要人爲修改全部應用方的主節點地址(改成新的master地址),還須要命令全部從節點複製新的主節點。

  這個問題,redis-sentinel能夠解決。

三、主從複製架構

四、Redis-Sentinel架構

  Sentinel是redis的一個進程,可是不存儲數據,只是監控redis。

  Sentinel會經過命令鏈接向被監視的主從服務器發送「HELLO」信息,該消息包含Sentinel的IP、端口號、ID等內容,以此來向其餘Sentinel宣告本身的存在。與此同時,Sentinel會經過訂閱鏈接接收其餘Sentinel的「HELLO」信息,以此來發現監視同一個主從服務器的其餘Sentinel。

  sentinel1經過發送HELLO信息來讓sentinel2和sentinel3發現本身,其餘兩個sentinel也會進行相似的操做,以下圖:

  1)多個sentinel發現並確認master有問題;

  2)選舉出一個sentinel做爲領導;

  3)選出一個slave做爲master;

  4)通知其他slave成爲新的master的slave;

  5)通知客戶端主從變化;

  6)等待老的master復活成爲新master的slave;

  Sentinel也能夠同時監控多個主從架構,以下圖:

五、redis-sentinel(哨兵)的配置

  第一步:準備三個redis數據庫實例(三個配置文件,經過端口區分)

[root@localhost redis-4.0.10]# redis-server redis-6380.conf 
[root@localhost redis-4.0.10]# redis-server redis-6381.conf 
[root@localhost redis-4.0.10]# redis-server redis-6382.conf

  主從規劃:主庫6380,從庫638一、6382

  第二步:準備三個哨兵的配置文件redis-sentinel-26380.conf(也是經過端口區分)

  [root@localhost redis-4.0.10]# vi redis-sentinel-26380.conf    編輯配置文件,內容以下
  port 26380  
  dir /var/redis/data/
  logfile "26380.log"

  # 當前Sentinel節點監控 127.0.0.1:6380 這個主節點
  # 2表明判斷主節點失敗至少須要2個Sentinel節點贊成
  # s15master是主節點的別名
  sentinel monitor s15master 127.0.0.1 6380 2

  # 每一個Sentinel節點都要按期用PING命令來判斷Redis數據節點和其他Sentinel節點是否可達,若是超過30s且沒有回覆,則斷定不可達
  sentinel down-after-milliseconds s15master 30000

  sentinel parallel-syncs s15master 1

  # 故障轉移超時時間爲180秒
  sentinel failover-timeout s15master 180000
  daemonize yes

  三個配置文件內容僅僅是port(端口)參數不一樣,其餘都同樣,所以按照以下方式快速生成其餘兩個:

sed "s/26380/26381/g" redis-sentinel-26380.conf >  redis-sentinel-26381.conf
sed "s/26380/26382/g" redis-sentinel-26380.conf >  redis-sentinel-26382.conf

  第三步:啓動三個哨兵

[root@localhost redis-4.0.10]# redis-sentinel redis-sentinel-26380.conf
[root@localhost redis-4.0.10]# redis-sentinel redis-sentinel-26381.conf
[root@localhost redis-4.0.10]# redis-sentinel redis-sentinel-26382.conf

  啓動後查看哨兵配置文件是否發生改變,以redis-sentinel-26380.conf爲例,變化以下圖:

  第四步:檢查哨兵的通訊狀態

[root@localhost redis-4.0.10]# redis-cli -p 26380  info sentinel

六、redis哨兵高可用故障實驗

  狀況一:殺掉redis主節點的進程6380端口,觀察從節點是否會進行新的master選舉,進行切換

  狀況二:從新開啓舊的「master」節點進程6380端口,查看此時它的身份

  總結:哨兵也是經過更改redis的配置文件,來切換主從身份。

5、redis-cluster

  爲何要用redis-cluster?

    - 併發問題:redis官方聲稱能夠達到 10萬/每秒(每秒執行10萬條命令),假如業務須要每秒100萬的命令執行呢?

    - 數據量太大:一臺服務器內存正常是16~256G,假如你的業務須要500G內存,你怎麼辦?配置一個超級牛逼的計算機,超大內存,超強cpu並非一個好辦法,正確的應該是考慮分佈式,加機器,把數據分到不一樣的位置,分攤集中式的壓力,一堆機器作一件事。

  redis實例集羣主要思想是將redis數據的key進行散列,經過hash函數特定的key會映射到指定的redis節點上。

一、數據分佈理論  

  分佈式數據庫首要解決把整個數據集按照分區規則映射到多個節點的問題,即把數據集劃分到多個節點上,每一個節點負責整個數據的一個子集。

  常見的分區規則有哈希分區和順序分區。Redis-cluster採用哈希分區規則,所以接下來會討論哈希分區規則:

    - 節點取餘分區;

    - 一致性哈希分區;

    - 虛擬槽分區(redis-cluster採用的方式);

二、虛擬槽分區

  Redis Cluster採用虛擬槽分區,虛擬槽分區巧妙地使用了哈希空間,使用分散度良好的哈希函數把全部的數據映射到一個固定範圍內的整數集合,整數定義爲槽(slot)。

  Redis Cluster槽的範圍是0 ~ 16383。

  槽是集羣內數據管理和遷移的基本單位。採用大範圍的槽的主要目的是爲了方便數據的拆分和集羣的擴展,每一個節點負責必定數量的槽。

三、搭建redis集羣(redis cluster)
  redis支持多實例的功能,咱們在單機演示集羣搭建,須要6個實例,三個是主節點,三個是從節點,數量爲6個節點才能保證高可用的集羣。

  第一步:準備6個redis數據庫實例,配置文件爲redis-{7000...7005}.conf

  [root@localhost redis-4.0.10]# mkdir myrediscluster      建立一個目錄存放配置文件
  [root@localhost myrediscluster]# vi redis-7000.conf      編輯配置文件,寫入以下內容
  port 7000
  daemonize yes
  dir "/opt/redis/data"
  logfile "7000.log"
  dbfilename "dump-7000.rdb"
  cluster-enabled yes                      # 開啓集羣模式
  cluster-config-file nodes-7000.conf     # 集羣內部的配置文件
  # redis cluster須要16384個slot都正常的時候才能對外提供服務,換句話說,只要任何一個slot異常那麼整個cluster不對外提供服務,所以生產環境通常爲no
  cluster-require-full-coverage no

  快速生成其餘5個配置文件:

[root@localhost myrediscluster]# sed "s/7000/7001/g" redis-7000.conf > redis-7001.conf
[root@localhost myrediscluster]# sed "s/7000/7002/g" redis-7000.conf > redis-7002.conf
[root@localhost myrediscluster]# sed "s/7000/7003/g" redis-7000.conf > redis-7003.conf
[root@localhost myrediscluster]# sed "s/7000/7004/g" redis-7000.conf > redis-7004.conf
[root@localhost myrediscluster]# sed "s/7000/7005/g" redis-7000.conf > redis-7005.conf

 

  第二步:啓動這6個redis數據庫實例

[root@localhost myrediscluster]# redis-server redis-7000.conf
[root@localhost myrediscluster]# redis-server redis-7001.conf
[root@localhost myrediscluster]# redis-server redis-7002.conf
[root@localhost myrediscluster]# redis-server redis-7003.conf
[root@localhost myrediscluster]# redis-server redis-7004.conf
[root@localhost myrediscluster]# redis-server redis-7005.conf

  第三步:配置ruby語言環境,腳本一鍵啓動redis-cluster

    1)下載ruby語言的源碼包,解壓縮

wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
tar -zxvf ruby-2.3.1.tar.gz

    2)配置,編譯且安裝

./configure --prefix=/opt/ruby/	                 釋放makefile
make && make install                              編譯且安裝

    查看ruby安裝目錄下的bin目錄,有以下文件:

   

    3)下載ruby操做redis的模塊包

[root@localhost opt]# wget http://rubygems.org/downloads/redis-3.3.0.gem

    4)配置ruby環境變量

  [root@localhost ~]# echo $PATH
  [root@localhost ~]# vim /etc/profile        編輯配置文件profile,寫入下面一行代碼
  PATH=$PATH:/opt/ruby/bin/
  [root@localhost ~]# source /etc/profile      讀取文件,使配置生效

    5)經過ruby的包管理工具gem去安裝redis包,安裝後會生成一個redis-trib.rb這個命令

gem install -l redis-3.3.0.gem

  第三步:一鍵開啓redis-cluster, 其實就是分配主從關係 以及 槽位分配 slot槽位分配

/opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

    執行後以下圖:

  第四步:檢查各節點主從狀態

[root@localhost opt]# redis-cli -p 7000 info replication
[root@localhost opt]# redis-cli -p 7001 info replication
[root@localhost opt]# redis-cli -p 7002 info replication
[root@localhost opt]# redis-cli -p 7003 info replication
[root@localhost opt]# redis-cli -p 7004 info replication
[root@localhost opt]# redis-cli -p 7005 info replication

  第五步:向redis集羣寫入數據,查看數據流向

[root@localhost opt]# redis-cli -p 7000 -c            參數-c表明集羣模式
127.0.0.1:7000> set name tom                           寫入數據

  結果以下圖:

  總結:寫入數據時會將key自動的重定向,放到某一個節點的slot槽位中。

6、nginx入門

一、web服務

  咱們大多數人都是經過訪問網站而開始接觸互聯網的。咱們平時訪問的網站服務就是 Web 網絡服務,通常是指容許用戶經過瀏覽器訪問到互聯網中各類資源的服務。

  Web 網絡服務是一種被動訪問的服務程序,即只有接收到互聯網中其餘主機發出的請求後纔會響應,最終用於提供服務程序的 Web 服務器會經過 HTTP(超文本傳輸協議)或 HTTPS(安全超文本傳輸協議)把請求的內容傳送給用戶。

  目前可以提供 Web 網絡服務的程序有 IIS、Nginx 和 Apache 等。其中,IIS(Internet Information Services,互聯網信息服務)是 Windows 系統中默認的 Web 服務程序。

  2004 年 10 月 4 日,爲俄羅斯知名門戶站點而開發的 Web 服務程序 Nginx 橫空出世。 Nginx 程序做爲一款輕量級的網站服務軟件,因其穩定性和豐富的功能而快速佔領服務器市場,但 Nginx 最被承認的仍是系統資源消耗低且併發能力強,所以獲得了國內諸如新浪、網易、騰訊等門戶站的青睞。

  web服務器和web框架的關係:

  web服務器(如nginx)- 接收HTTP請求(例如www.pythonav.cn/xiaocang.jpg)並返回數據;

  web框架(如django、flask)- 開發web應用程序,處理接收到的數據;

二、nginx是什麼

  nginx是一個開源的,支持高性能,高併發的web服務和代理服務軟件。它是一個俄羅斯人lgor sysoev開發的,做者將源代碼開源出來供全球使用。

  nginx比它大哥apache性能改進許多,nginx佔用的系統資源更少,支持更高的併發鏈接,有更高的訪問效率。

  nginx不可是一個優秀的web服務軟件,還能夠做爲反向代理,負載均衡,以及緩存服務使用。

  它的安裝也更爲簡單,方便,靈活。

  Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。

  咱們經過以下命令查看網站的響應頭信息,從而得知其使用的服務器:

三、安裝環境準備
  執行以下命令,yum解決編譯nginx所需的依賴包,以後使用nginx就不會報錯了

[root@localhost ~]# yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

  相關依賴包的解釋以下:

- gcc :安裝 nginx 須要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境。
安裝命令:yum install gcc-c++
- PCRE pcre-devel :PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,因此須要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也須要此庫。 安裝命令:yum install -y pcre pcre-devel
- zlib :zlib 庫提供了不少種壓縮和解壓縮的方式,nginx 使用 zlib 對 http 包的內容進行 gzip ,因此須要在 Centos 上安裝 zlib 庫。 安裝命令:yum install -y zlib zlib-devel
- OpenSSL :OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http),因此須要在 Centos 安裝 OpenSSL 庫。

四、安裝nginx

  第一步:下載壓縮包

[root@localhost opt]# wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

  第二步:解壓縮源碼包

[root@localhost opt]# tar -zxvf nginx-1.12.0.tar.gz

  第三步:配置、編譯安裝

[root@localhost nginx-1.12.0]# ./configure --prefix=/opt/nginx112
[root@localhost nginx-1.12.0]# make && make install

  此時進入/opt/nginx112目錄下,有以下目錄:

  第四步:啓動nginx  

[root@localhost sbin]# nginx

  此時,已經成功啓動nginx,使用瀏覽器便可訪問,以下圖:

[root@localhost sbin]# nginx -s stop                 # 關閉nginx
[root@localhost sbin]# nginx -s reload               # 重啓nginx

五、nginx的目錄結構

[root@localhost nginx112]# ls
conf  html  logs  sbin
  conf 存放nginx全部配置文件的目錄,主要nginx.conf;
  html 存放nginx默認站點的目錄,如index.html 、error.html等;
  logs 存放nginx默認日誌的目錄,如error.log 、access.log;
  sbin 存放nginx主命令的目錄,sbin/nginx;
相關文章
相關標籤/搜索