Nginx有什么用?
Nginx可讀作EngineX
是由俄羅斯程序員Igor Sysoev
開發的高性能的web服務器。
它采用了與Apache完全不同的模型,能夠處理接收更多的請求。
由于Nginx優秀的性能,Nginx幾乎可以和Apache并駕齊驅。
對Apache來說,Nginx可謂是后起之秀。
可以說Apache代表了經典,Nginx則代表了新銳。
那Nginx具體有什么功能呢?
基本功能:
- 靜態資源的web服務器,能緩存打開的文件描述符。
- http, smtp, pop3協議的反向代理服務器,緩存、負載均衡。
- 支持FastCGI
- 模塊化,過濾器zip,SSI及圖像大小調整
- 支持SSL。
需要注意的是:
a.如果單純只安裝一個Nginx的軟件包,服務器只會響應靜態請求。
所以Nginx在配合php-fpm的時候就可以解析php網頁的動態請求。
Apache的時候,php一般作為一個插件安裝使用。
而php-fpm則是一個獨立的進程,一般監聽在9000端口。
b.Nginx不僅作為web服務器具有高性能,而且作為反向代理服務器也是十分優秀的。
c.與Apache的動態加載模塊不同,nginx雖然支持第三方模塊,但是也需要編譯。
擴展功能:
- 基于名稱和IP的虛擬主機
- 支持長連接
- 支持平滑升級
- 定制訪問日志 ,支持使用日志緩沖區提高日志存儲性能
- 支持url重寫
- 支持路徑別名
- 支持基于IP及用戶的訪問控制
- 支持速率限制,支持并發數限制
雖然看上去她好像跟Apache服務器沒什么區別,下面我們將從幾個方面與Apache進行對比。
Nginx與Apache的不同之處
明明已經有Apache了,Nginx有什么特別的好處嗎?
Nginx和Apache的最大不同之處,在于其網絡IO模型。
上一次我們在講解LAMP的時候有說過,Apache最大支持1024最大請求。
這個是由Apache的網絡IO模型Select()
決定的。
Nginx使用異步IO模型Epoll()
,則沒有Apache最大并發1024個請求這種限制。
其實Select()最大并發1024也不少了,想想一天有86400秒,假如一秒并發1024個。
不過這要建立在硬件性能滿足最大請求的硬件基礎上。因為不合穿的鞋怎么會讓一個跑步運動員跑得快呢?
配置文件相比較于Apache,更加簡單易懂。
而Apache在這方面,如反向代理的配置都相對麻煩。
并且Nginx有很詳盡的官方文檔。
例如Apache將動態請求通過fastcgi轉發給php-fpm,或者ajp協議轉發給tomcat,在配置上都沒有Nginx直觀。
作為反向代理服務器的時候,有健康狀態檢測。
能夠監測后端的主機,如果有下線的話則不會到代理到下線的主機上。
自帶健康狀態監測功能,如果是lvs則需要手動編寫腳本來監測后端主機的狀態。
Nginx更加輕量
響應請求的時候,Nginx占用的內存更加的少。
雖然Nginx還有很多很吸引人的地方,但是我覺得這三點是我感受最深的。
往后的文章里,在講反向代理的時候我們也會使用到Nginx。
如果以后時間比較充足的話,我還會配置一次Apache反向代理到tomcat。
到時候大家可以自行比較一下兩者在實現同樣功能上到底有什么不同。
使用Nginx搭建phpMyAdmin
phpMyAdmin是一個圖形化管理MySQL數據庫的一個工具。
他可以配置在web服務器上,用于統計數據庫信息,備份數據庫,實現增刪改查等功能。
phpMyAdmin十分好用,而且直觀。
主機名 | 主機地址 |
---|---|
node1 | 192.168.2.201 |
本次使用的系統為CentOS7.1,數據庫:MariaDB-5.5.50, web服務器:nginx-1.10.2,phpMyAdmin-4.6.5.2
注意:系統關閉了selinux,以及iptables。
由于這次我們需要安裝phpMyAdmin的高版本,需要php5.5+的版本。
所以我們需要先配置一個remi的yum源,而這個源在清華大學有鏡像。
Remi's RPM repository
而phpMyAdmin我們則可以訪問他的官網
phpMyAdmin官方網站
(1)配置remi鏡像
[root@bc ~]# wget https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
[root@bc ~]# yum install remi-release-7.rpm
在官網中選擇合適的鏡像安裝,因為我們這里使用的是CentOS7,所以選擇的是7的包。
(2)安裝需要的組件
[root@bc ~]# yum install nginx mariadb mariadb-server php-mysql php56-php-fpm php56-php-mbstring php56-php-mysqlnd
這里需要注意的是,這次我們選擇了php56-php-fpm,也就是php5.6版本的php-fpm。
系統默認提供的php-fpm是5.4版本的。
(3)下載phpMyAdmin,并解壓放置在Nginx的web根目錄下
[root@bc ~]# wget https://files.phpmyadmin.net/phpMyAdmin/4.6.5.2/phpMyAdmin-4.6.5.2-all-languages.tar.gz
[root@bc ~]# tar xf phpMyAdmin-4.6.5.2-all-languages.tar.gz
[root@bc ~]# cp -Ra /root/phpMyAdmin-4.6.5.2-all-languages /usr/share/nginx/html/pma/
[root@bc ~]# chown nginx.nginx -R /usr/share/nginx/html/pma
(4)啟動mariadb并初始化安全設置
[root@bc ~]# systemctl start mariadb.service
[root@bc ~]# mysql_secure_installation
這里主要是設置密碼,以及清除一些測試庫等。
輸出結果挺長的就不截取了。
待會兒在phpMyAdmin的頁面上登陸的賬號密碼其實就是這里設置的。
(5)修改nginx設置
[root@bc ~]# vim /etc/nginx/nginx.conf
server {
listen 80 default_server;
server_name node1.bc.com;
root /usr/share/nginx/html/pma;
index index.php index.html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
location ~ \.php$ {
root html/pma/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/pma/$fastcgi_script_name;
include fastcgi_params;
}
}
(6)修改phpMyAdmin的配置
[root@bc ~]# cp /usr/share/nginx/html/pma/config.sample.inc.php /usr/share/nginx/html/pma/config.inc.php
[root@bc ~]# vim !$
$cfg['blowfish_secret'] = '0OYNHGWmgBWP/GtG3hLVwYlCeH0ZBs4hew'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
修改一行就可以了,這個主要是加密的字串,可以隨便打一段進去,但是不要把我的這行復制進去。
需要注意的是,這個字符串需要在單引號里面,有一次眼神不好漏了一邊單引號,結果報錯了好久都沒有找出問題。
**(7)重啟nginx以及啟動php-fpm **
[root@bc ~]# systemctl restart nginx.service
[root@bc ~]# systemctl start php56-php-fpm.service
如果啟動nginx不成功,可以使用nginx -t來測試配置文件是否有語法錯誤。
(8)在瀏覽器上鍵入主機的ip地址就可以訪問phpMyadmin。
這里輸入的是剛才初始化數據庫的時候,自己設置的賬號密碼。
注意:安裝phpMyAdmin的時候,因為要安裝mbstring和mysqli組件。
假如沒有安裝,這里就會報錯。
不過這些在remi的源中有提供,默認的源也有提供,不過要安裝對應版本。
這里安裝的是php56-php-fpm,所以安裝mbstring的包名就是php56-php-mbstring
安裝組件之后,php-fpm需要重啟一下才能使組件生效。
(9)鍵入MySQL的賬號密碼就可以正常使用了!