160910:Nginx在CentOS 6安裝紀錄 (LAMP)

步驟說明

我們主要分為幾個步驟,增加軟體源 以安裝 NginxPHP 以及 MySQL (MariaDB)。然後,將 Nginx 作支援PHP的設置。並安裝 MySQL 與做些安全設置。最後,再將所有都設置為 自動啟動

本文章是參考至 How To Install Linux, nginx, MySQL, PHP (LEMP) stack on CentOS 6 - DigitalOcean.com

Step 1 - 安裝與設置

EPEL Repository

首要,我們得先安裝 epel 套件源,才得以安裝接下來需要的東西。所以,這邊我們使用 yum 來安裝此套件源。

1
sudo yum install epel-release

MySQL

接下來,我們必須安裝MySQL以及將其作基本設定。

1
sudo yum install mysql-server

然後,開始 啟動 MySQL。

1
sudo service mysql start

之後,我們要開始基本安裝與設定部分。先啟動預設的安裝軟體。

1
sudo /usr/bin/mysql_secure_installation

敲入後,應該會詢問您的密碼是甚麼?只要你是第一次安裝,都會是沒有密碼的。所以 直接 Enter 即可。

1
2
Enter current password for root (enter for none): 
OK, successfully used password, moving on...

而接下來的問題,可以自己考慮去做更動設置。

1
2
3
4
5
6
7
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]

移除匿名帳號 (建議 Yes)

1
2
3
4
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]

不允許遠端登入Root帳號 (建議 Yes)

1
2
3
4
5
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]

刪除掉 TEST 數據庫與訪問 (建議 Yes)

1
2
3
4
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]

重讀用戶權限表 (建議 Yes)

以上弄完,就算完成基本設定了。

Nginx

接下來我們直接安裝 Nginx 即可。

1
sudo yum install nginx

然後啟動它。

1
sudo service nginx start

啟動後,就可以直接在瀏覽器上敲入自己的IP,來打開測試網頁。看是否成功了。

如果你不知道自己的 IP位置 在哪裡,使用ifconfig來知道自己的IP即可。

1
ifconfig eth0 | grep inet | awk '{ print $2 }'

解說: 以上的作法是,使用ifconfig來看eth0這個有線網路設備的資訊。並使用grep擷取顯示IP位置那行資訊,後使用awk來擷取第二欄的資訊。也就是IP位置。

PHP

安裝好伺服器,接下來要安裝支援的動態語言。

1
sudo yum install php-fpm php-mysql

安全性設置

安裝好後,要做的就是一些安全設置。先修正安全問題。首先先編輯/etc/php.ini這個檔案。找到cgi.fix_pathinfo,將其數值設置為0。

1
sudo vim /etc/php.ini

使用搜尋,找到並修改成下面這樣。

1
cgi.fix_pathinfo=0

Nginx擴充設置

接下來,就要去修改網頁伺服器的設定。以讓它可以支援PHP語法了。所以我們要去編輯/etc/nginx/conf.d/default.conf

參考範本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
listen 80;
server_name example.com;


location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}

error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

修改完成後,我們也要編輯PHP部分。要編輯/etc/php-fpm.d/www.conf

usergroup 都數值都改成 nginx

1
2
3
4
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

最後,為了瞭解是否修改成功,請寫個 phpinfo(); 看有沒有用。

1
sudo vim /usr/share/nginx/html/info.php

內容如下

1
2
3
<?php
phpinfo();
?>

並重新啟動Nginx,並且去訪問看看 http://localhost/info.php

1
sudo service nginx restart

Step 2 - 自動啟動設置

最後,所用東西幾乎都完成了。可以直接讓這些服務自動在開機時啟用。

1
2
3
sudo chkconfig --levels 235 mysqld on
sudo chkconfig --levels 235 nginx on
sudo chkconfig --levels 235 php-fpm on