Linux學習9-CentOS搭建nginx環境


前言

之前我們搭建網站的時候,把war包放到tomcat下就能運行起來了,為什么部署上線的時候,又用到了nginx呢?
nginx可以做多台服務器的負載均衡,當用戶非常少的時候,可以用一台服務直接部署web環境,那么當用戶達到百萬級別,千萬級別的時候,就需要增加服務器,多台服務器又如何管理協作的呢?

nginx有以下功能:
1.靜態HTTP服務器-Nginx是一個HTTP服務器,可以將服務器上的靜態文件(如HTML、圖片)通過HTTP協議展現給客戶端。
2.反向代理服務器-客戶端本來可以直接通過HTTP協議訪問某網站應用服務器,網站管理員可以在中間加上一個Nginx,客戶端請求Nginx,Nginx請求應用服務器,然后將結果返回給客戶端,此時Nginx就是反向代理服務器。
3.負載均衡-當網站訪問量非常大,網站站長開心賺錢的同時,也攤上事兒了。因為網站越來越慢,一台服務器已經不夠用了。
於是將同一個應用部署在多台服務器上,將大量用戶的請求分配給多台機器處理。同時帶來的好處是,其中一台服務器萬一掛了,只要還有其他服務器正常運行,就不會影響用戶使用。
4.虛擬主機-有的網站訪問量大,需要負載均衡。然而並不是所有網站都如此出色,有的網站,由於訪問量太小,需要節省成本,將多個網站部署在同一台服務器上。
5.FastCGI-Nginx本身不支持PHP等語言,但是它可以通過FastCGI來將請求扔給某些語言或框架處理(例如PHP、Python、Perl)。

什么是nginx?

Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;
Nginx可以作為一個HTTP服務器進行網站的發布處理,另外Nginx可以作為反向代理進行負載均衡的實現。

正向代理,代理的是客戶端,比如小伙伴們平常科學上網,訪問google網站就是用到的正向代理。

反向代理,它代理的是服務端,主要用於服務器集群分布式部署的情況下,反向代理隱藏了服務器的信息。

nginx依賴包安裝

先安裝依賴包

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

yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

nginx下載與安裝

直接下載.tar.gz安裝包,下載地址:https://nginx.org/en/download.html
把下載的包放到/usr/local/nginx目錄,然后解壓安裝到nginx-1.12.0當前目錄,make編譯安裝

[root@yoyo sbin]# cd ~
[root@yoyo ~]# cd /usr/local/
[root@yoyo local]# mkdir nginx
[root@yoyo local]# cd nginx
[root@yoyo nginx]# wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

[root@yoyo nginx]# tar -zxvf nginx-1.12.0.tar.gz
[root@yoyo nginx]# cd nginx-1.12.0

# 安裝到當前目錄
[root@yoyo nginx]# ./configure
[root@yoyo nginx]# make
[root@yoyo nginx]# make install

到此為止環境已經安裝好,接下來啟動nginx服務

[root@yoyo nginx]# cd /usr/local/nginx/sbin/
[root@yoyo nginx]# ./nginx

啟動服務后,nginx默認是在80端口啟動的,在瀏覽器輸入http://47.104.x.x:80/ (80端口默認可以省略),能正常訪問到頁面,說明服務啟動成功

相關指令

先cd到/usr/local/nginx/sbin/

1.啟動服務

./nginx

2.停止服務,此方式停止步驟是待nginx進程處理任務完畢進行停止。

./nginx -s stop

3.退出服務,此方式相當於先查出nginx進程id再使用kill命令強制殺掉進程。

./nginx -s quit

4.重新加載,當 ngin x的配置文件 nginx.conf 修改后,要想讓配置生效需要重啟 nginx,
使用-s reload不用先停止 ngin x再啟動 nginx 即可將配置信息在 nginx 中生效

./nginx -s reload

5.查詢nginx進程

ps aux|grep nginx

開機自啟動

在系統服務目錄里創建nginx.service文件

vim /lib/systemd/system/nginx.service

內容如下
[Unit]:服務的說明
Description:描述服務
After:描述服務類別
[Service]服務運行參數的設置
Type=forking是后台運行的形式
ExecStart為服務的具體運行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑
[Install]運行級別下服務安裝的相關設置,可設置為多用戶,即系統運行級別為3

:wq保存退出。

[Unit]
Description=nginx
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

1.設置開機自啟動

systemctl enable nginx.service

2.停止開機自啟動

systemctl disable nginx.service

3.啟動服務

systemctl start nginx.service 

4.重新啟動服務

systemctl restart nginx.service 

5.查看所有已啟動的服務

systemctl list-units --type=service

修改nginx啟動端口

如果80端口之前已經使用過了,可以修改nginx的服務端口,先cd到/usr/local/nginx/conf目錄
為了保險起見,編輯前先備份下原來的文件:cp nginx.conf nginx.conf.bak

[root@yoyo ~]# cd /usr/local/nginx/conf
[root@yoyo conf]# ll
total 60
-rw-r--r-- 1 root root 1077 Jan  8 14:16 fastcgi.conf
-rw-r--r-- 1 root root 1077 Jan  8 14:16 fastcgi.conf.default
-rw-r--r-- 1 root root 1007 Jan  8 14:16 fastcgi_params
-rw-r--r-- 1 root root 1007 Jan  8 14:16 fastcgi_params.default
-rw-r--r-- 1 root root 2837 Jan  8 14:16 koi-utf
-rw-r--r-- 1 root root 2223 Jan  8 14:16 koi-win
-rw-r--r-- 1 root root 3957 Jan  8 14:16 mime.types
-rw-r--r-- 1 root root 3957 Jan  8 14:16 mime.types.default
-rw-r--r-- 1 root root 2656 Jan  8 14:16 nginx.conf
-rw-r--r-- 1 root root 2656 Jan  8 14:16 nginx.conf.default
-rw-r--r-- 1 root root  636 Jan  8 14:16 scgi_params
-rw-r--r-- 1 root root  636 Jan  8 14:16 scgi_params.default
-rw-r--r-- 1 root root  664 Jan  8 14:16 uwsgi_params
-rw-r--r-- 1 root root  664 Jan  8 14:16 uwsgi_params.default
-rw-r--r-- 1 root root 3610 Jan  8 14:16 win-utf

[root@yoyo conf]# cp nginx.conf nginx.conf.bak
[root@yoyo conf]# vim nginx.conf

vim打開后,找到服務端口listen 80這段,輸入鍵盤上i鍵后編輯,改成81

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

編輯完成后按Esc鍵,輸入:wq保存退出

修改后重新加載下配置文件

[root@yoyo sbin]# cd /usr/local/nginx/sbin/
[root@yoyo sbin]# ./nginx -s reload

接着去阿里雲ECS服務后台-安全組-新增規則-添加81端口,在瀏覽器上就能訪問了

交流QQ群:779429633


免責聲明!

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



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