nginx + mysql + php-fpm 環境

安裝 Nginx

想在 CentOS 系統上安裝 Nginx ,你得先去加入一個資源庫。像這樣:php

vim /etc/yum.repos.d/nginx.repo

使用 vim 命令去打開 /etc/yum.repos.d/nginx.repo ,假設 nginx.repo 不存在,就會去建立一個這種文件,打開之後按一下小 i 鍵。進入編輯模式,而後複製粘貼如下這幾行代碼,完畢之後按 esc 鍵退出。再輸入 :wq (保存並退出)html

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

完畢之後,咱們就可以使用 yum 命令去安裝 nginx 了,像這樣:mysql

yum install nginx

安裝好之後測試一下 nginx 服務:nginx

service nginx status

應該會返回:web

nginx is stopped (nginx 已中止)

再測試一下 nginx 的配置文件:sql

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 所在的位置。apache

操縱 nginx 服務vim

操縱服務,可以使用使用 service 命令,它可以啓動(start),從新啓動(restart)。或中止服務(stop),比方要啓動 nginx 服務:centos

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 了。

QQ20140322-4

爲系統加入資源庫

前面咱們使用 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=nginx

esc 退出,再輸入 :wq ,從新啓動下 php-fpm。這樣咱們的 nginx server還有 php-fpm 會使用同一個用戶:nginx,你可以把要可以有寫入權限的文件夾與文件的擁有者改動成 nginx 便可了。可以使用 chown 命令:

chown -R nginx 文件夾名/文件名稱

總結

好來,現在咱們就已經擁有一臺 LNMP 環境的server了。這個操做手冊裏提供到的相關配置。還有很是多可以優化一下,比方 nginx 的配置文件,可以針對 Drupal 來作一些優化。

在興許的文章裏面,我會再具體的去解釋一下這些配置文件的使用。

相關文章
相關標籤/搜索