nginx + mysql + php-fpm 环境
安裝 Nginx
想在 CentOS 系統上安裝 Nginx ,你得先去加入一個資源庫。像這樣:
vim /etc/yum.repos.d/nginx.repo使用 vim 命令去打開 /etc/yum.repos.d/nginx.repo ,假設 nginx.repo 不存在,就會去創建一個這種文件,打開以后按一下小 i 鍵。進入編輯模式,然后復制粘貼以下這幾行代碼,完畢以后按 esc 鍵退出。再輸入 :wq (保存并退出)
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1完畢以后,我們就能夠使用 yum 命令去安裝 nginx 了,像這樣:
yum install nginx安裝好以后測試一下 nginx 服務:
service nginx status應該會返回:
nginx is stopped (nginx 已停止)再測試一下 nginx 的配置文件:
nginx -t應該會返回:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful... syntax is ok。...?test is successful,說明配置文件沒問題。同一時候這個結果里你能夠找到 nginx 的配置文件 nginx.conf 所在的位置。
操縱 nginx 服務
操縱服務,能夠使用使用 service 命令,它能夠啟動(start),重新啟動(restart)。或停止服務(stop),比方要啟動 nginx 服務:
service nginx start服務啟動以后,你就能夠在瀏覽器上使用server的 IP 地址,或者指向這個地址的域名訪問server指定的文件夾了。你會看到類似以下的這些文字。
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
配置 nginx 虛擬主機
安裝完 nginx 以后。第一件想到的事應該就是去創建虛擬主機,虛擬主機同意我們在同一臺server上執行多個站點。我們能夠為不同的域名綁定不同的文件夾,訪問這個域名的時候,會打開相應文件夾里面的東西。之前介紹過為?Apache server創建虛擬主機,以下來看一下為 nginx 配置虛擬主機。先進入到 nginx 配置文件文件夾:
cd?/etc/nginx/conf.d復制這個文件夾里的?default.conf?,復制以后的名字能夠使用你的虛擬主機名字。
比方創建一個 nginx.ninghao.net 的虛擬主機。拷貝文件能夠使用 cp 命令,像這樣:
cp default.conf nginx.ninghao.net.conf再去編輯一下這個復制以后的配置文件,能夠使用 vim 命令:
vim nginx.ninghao.net.conf你會看到像這種代碼:
server {listen 80;server_name localhost;#charset koi8-r;#access_log /var/log/nginx/log/host.access.log main;location / {root /usr/share/nginx/html;index index.html index.htm; } ... }server_name?就是主機名,也就是跟這個虛擬主機綁定在一塊兒的域名。我事先把?nginx.ninghao.net?指向了服務器。這個虛擬主機就是為它準備的。所以,server_name?后面的東西就是?nginx.ninghao.net?。
緊接著?server_name?以下能夠是一個?root,就是這個虛擬主機的根文件夾,也就是站點所在的文件夾。比方我們要把?nginx.ninghao.net?這個站點的文件放在/home/www/nginx.ninghao.net?以下,那么這個?root?就是這個路徑。
然后去掉 location / 里面的 root 這行代碼。再在 index 后面加上一種索引文件名稱。也就是默認打開的文件。這里要加上一個 index.php ,這樣訪問 nginx.ninghao.net 就能夠直接打開 root 文件夾以下的 index.php 了。
稍后我們再去安裝 php 。
改動之后,看起來像這樣:
server {listen 80;server_name nginx.ninghao.net;root /home/www/nginx.ninghao.net;#charset koi8-r;#access_log /var/log/nginx/log/host.access.log main;location / {index index.php index.html index.htm;} ... }這個配置文件先改動到這,稍后,我們再回來繼續改動一下它。
保存一下,按?esc?。輸入?:wp(保存并退出)。如今虛擬主機應該就能夠使用了。主機的域名是?nginx.ninghao.net,訪問它的時候,打開的是?/home/www/nginx.ninghao.net?這個文件夾里面的東西,你能夠在這個文件夾下放點東西。
重新啟動 nginx 或者又一次載入 nginx 能夠讓配置文件生效。
service nginx reload如今,打開瀏覽器,輸入你為虛擬主機設置的域名,看看能否打開你指定的文件夾里的東西。
配置 php-fpm
要讓 nginx 可以運行 php 文件,須要去安裝一下?php-fpm,它直接包括在了 CentOS 資源庫里。所以直接使用 yum 命令能夠安裝它:
yum install php-fpm完畢以后,能夠檢查一下 php-fpm 的執行狀態。使用?service?命令:
service php-fpm status返回:
php-fpm is stopped(php-fpm 已停止)啟動 php-fpm 相同能夠使用?service?命令:
service php-fpm start讓 nginx 能夠運行 php
如今我們應該就能夠讓 nginx 去運行 php 了。只是你須要改動一下 nginx 的配置文件。之前我們在配置虛擬主機的時候。創建了一個?nginx.ninghao.net.conf?的配置文件,須要去改動下 nginx 的這個配置文件,才干去運行 php 。使用?vim?命令去編輯它:
vim?/etc/nginx/conf.d/nginx.ninghao.net.conf注意你的配置文件不一定叫 nginx.ninghao.net.conf,應該是你自己命名的配置文件。打開以后,找到以下這段字樣的代碼:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}這是 nginx 默認給我們的用來運行 php 的配置。從 location 開始取消凝視,會讓這個配置生效,然后我們還得簡單去改動一下:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000#location ~ \.php$ {# root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}注意 root 那里仍然是被凝視掉的。還有 SCRIPT_FILENAME 后面改動了一下,把 /scripts 換成了?$document_root?。
保存并退出。然后又一次啟動 nginx:
service nginx restart測試能否夠運行 php
如今,我們已經安裝了 php-fpm,并改動了 nginx 的配置文件讓它能夠去運行 php。以下,我們得去測試一下,能夠使用 php 的?phpinfo();?函數。方法是在你的虛擬主機根文件夾以下,創建一個 php 文件,命名為?phpinfo.php,然后在這個文件中輸入:
<?php phpinfo(); ?
>
保存文件并退出。
在瀏覽器里打開剛才創建的這個 php 文件。我這里應該是?http://nginx.ninghao.net/phpinfo.php。
打開以后,你應該能看到像以下這種界面。假設能,說明 nginx 已經能夠運行 php 了。
為系統加入資源庫
前面我們使用?yum?命令去安裝了一些東西,用起來非常easy。yum + 要安裝的東西 + install。它事實上是一個資源包的管理工具,用它安裝東西的時候。會檢查這個東西所依賴的其他的東西,在安裝的同一時候,也會去安裝這些被依賴的東西。CentOS 本身帶了一些資源庫。但并非全部的東西都在這些資源庫里,所以,我們能夠給系統手工的加入一些資源庫,這樣使用 yum 命令,就能夠非常方便的去安裝在資源庫里的東西了。
在這里能夠找到可用的資源庫:http://iuscommunity.org/pages/Repos.html?,你要依據自己的系統的版本號去下載相應的資源庫,然后安裝在系統里面。
查看系統的版本號能夠這樣做:
cat /etc/redhat-release我這里使用的是 CentOS 系統,所以返回了:
CentOS release 6.3 (Final)說明我用的是?CentOS 6?,而且是 64 位的,打開上面的資源庫地址,找到?Release Packages?。然后找到?CentOS 6?這個區域以下的鏈接,我們用這個?epel?資源庫。
打開這個地址以后。復制?Packages?以下的鏈接?epel-release-6-5.noarch?。然后回到我們連接到server的終端工具,Windows 用戶應該用的是?putty?。用 cd 命令進入到一個文件夾里面,比方用戶的根文件夾,能夠這樣:
cd ~然后使用?wget?命令,把剛才復制的鏈接里的資源庫下載下來:
wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/epel-release-6-5.noarch.rpm用?ls?命令能夠查看一下當前這個文件夾以下的東西,你應該能夠看到?epel-release-6-5.noarch.rpm(也或者是你選擇要下載的資源庫)。下載好以后,去安裝一下:
rpm -ivh epel-release-6-5.noarch.rpm查看一下系統里面的資源庫:
yum repolist你會看到?epel?這個資源庫,它就是我們剛才安裝的。系統里的資源庫地址是在:/etc/yum.repos.d,在這里,你相同能夠找到epel.repo。
這樣我們就能夠使用?yum?命令去安裝很多其它的東西了。
安裝 mysql
mysql 能夠管理站點用到的數據庫,WordPress 和 Drupal 也都支持 mysql 數據庫。所以我們的 Web 執行環境里,須要安裝一個 mysql 。之前我們已經加入了資源庫,所以能夠直接使用 yum 命令去安裝 ?mysql :
yum install mysql-server安裝完畢后。使用 service 命令啟動 mysql 服務:
service mysqld start然后我們須要簡單配置一下 mysql ,默認安裝以后 mysql 的 root 用戶是沒有password的,對于生產環境來說。這肯定是不行的。另外另一些安全相關的設置,能夠使用以下這行命令去配置一下,它是一個向導。問你一些問題,你要給出答案,比方是否要設置 root 用戶的password。 password是什么等等。
mysql_secure_installation Enter current password for root (enter for none):
 解釋:輸入當前 root 用戶password,默覺得空,直接回車。
Set root password? [Y/n] ?y
 解釋:要設置 root password嗎?輸入 y 表示愿意。
Remove anonymous users? [Y/n] ?y
 解釋:要移除掉匿名用戶嗎?輸入 y 表示愿意。
Disallow root login remotely? [Y/n] ?y
 解釋:不想讓 root 遠程登陸嗎?輸入 y 表示愿意。
Remove test database and access to it? [Y/n] ?y
 解釋:要去掉 test 數據庫嗎?輸入 y 表示愿意。
Reload privilege tables now? [Y/n] ?y
 解釋:想要又一次載入權限嗎?輸入 y 表示愿意。
安裝 php 擴展
如今,我們有了能夠提供 web 服務的 nginx ,而且安裝了 php-fpm ,配置了 nginx 能夠讓它去執行 php 。也安裝了數據庫管理系統。只是在執行真正的站點的時候,我們還須要為 php 安裝一些額外的擴展,比方 處理 mysql 數據庫的?mysql?擴展,緩存功能的?apc?擴展,處理圖像的?gd?擴展等等。
安裝它們相同能夠使用 yum 命令。
yum?install php-pecl-apc php-mysql?php-gd?php-mcrypt?php-pear?php-mbstring?php-xmlrpc?php-dom上面安裝了一些 php 的擴展,假設你發如今安裝站點的時候提示須要安裝其他的擴展,相同能夠使用 yum 命令去安裝。安裝完畢以后,須要重新啟動一下 php-fpm :
service php-fpm restart文件夾與文件的權限問題
站點上面有些文件夾或文件須要有寫入權限,這樣你得為這些文件夾和文件分配合適的權限,一般能夠把它們的擁有者設置成 php 和 nginx 使用的用戶。默認 nginx 的用戶就是?nginx?,而 php-fpm 使用的用戶默認是?apache。
我們能夠把它們改成一個統一的用戶,能夠改動 php-fpm 的用戶為?nginx?。你能夠使用以下的命令去查看一下 nginx 和 php-fpm 所使用的username:
ps aux|grep php ps aux|grep nginx改動所使用的用戶,能夠通過使用 nginx 和 php-fpm 的配置文件,nginx 的配置文件是:??/etc/nginx/nginx.conf?。php-fpm 的配置文件是:/etc/php-fpm.conf,還有在?/etc/php-fpm.d/*?這個文件夾里的全部文件都是 php-fpm 的配置文件。
默認這個文件夾里有一個?www.conf?。你能夠編輯這個文件來改動 php-fpm 所使用的username稱。使用?vim?命令:
vim /etc/php-fpm.d/www.conf打開文件以后你能夠搜索下關鍵詞?user?或?apache。輸入?:/user?或?:/apache?。會搜索到結果。按小?n?能夠繼續向下查找,按大N?能夠向上查找。直到你看到:
user = apache把它改動成:
user=nginxesc 退出,再輸入?:wq?,重新啟動下 php-fpm。這樣我們的 nginx server還有 php-fpm 會使用同一個用戶:nginx,你能夠把要能夠有寫入權限的文件夾與文件的擁有者改動成?nginx?即可了。能夠使用?chown?命令:
chown -R nginx 文件夾名/文件名稱總結
好來,如今我們就已經擁有一臺 LNMP 環境的server了。這個操作手冊里提供到的相關配置。還有非常多能夠優化一下,比方 nginx 的配置文件,能夠針對 Drupal 來做一些優化。
在興許的文章里面,我會再具體的去解釋一下這些配置文件的使用。
總結
以上是生活随笔為你收集整理的nginx + mysql + php-fpm 环境的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: oracle什么时候需要commit
- 下一篇: android构建过程
