Debian下安裝最新版本nginx,php,mysql,phpmyadmin備忘

Linux菜鳥,服務器配置過程中遇到很多問題,參考了網上諸多教程,綜合成文,留之備忘。

服務器環境:Ramhost洛杉磯機房,debian-6.0.2.1-i386-netinst。

1 更新服務器源地址

Debian 6.0下直接通過apt-get安裝的nginx和php版本都比較舊,雖然服務器求穩不求新,但是初次配置,無歷史包袱,想直接上最新版本的軟件,通過添加Dotdeb源可以直接安裝最新的nginx 1.2.6和php 5.4。

將以下兩行添加至/etc/apt/sources.list

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

如果要安裝php 5.4的話還需要將以下兩行添加至源列表,可選,Debian的官方源安裝的是5.3,兩個版本在php配置過程中稍有不同,下文會詳細說明。網上有測試顯示5.4比5.3執行效率高了很多(參見:实例证明:PHP 5.4是否比PHP 5.3 快两倍)。因此決定安裝5.4,將下面兩行添加至源列表。

deb http://packages.dotdeb.org squeeze-php54 all
deb-src http://packages.dotdeb.org squeeze-php54 all

添加源後直接apt-get update會報錯,還需要匹配GnuPG key。執行以下兩條命令:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

2 安裝nginx,php和mysql軟件包

添加完源之后,运行以下命令更新源并安装nginx,php和mysql软件包:

sudo aptitude update
sudo aptitude install nginx
sudo aptitude install php5 php5-fpm php5-mysql php5-gd php5-curl php5-mcrypt
sudo aptitude install mysql-server

安裝完軟件包之後就可以配置自己的網站服務了:

sudo mkdir -p /var/www/example.com/
cd /var/www/example.com/
echo "
<?php phpinfo(); ?>
" > ./index.php
sudo chown -R www-data:www-data /var/www

第4、5條命令是建立一個簡單的php網頁測試php是否配置成功,第6條命令很重要,將/var/www目錄的所有者和組添加到nginx的默認所有者和組www-data下,如果不這麼做運行wordpress之類的程序的時候會遇到不能自動更新、安裝插件之類的問題。當然,將example.com改成自己的,同時將域名的A紀錄指向服務器ip,並等待生效。

3 配置

創建一個Nginx的配置文件:

sudo touch /etc/nginx/sites-available/example.com

在編輯剛才創建的文件,插入以下代碼

server {
server_name example.com;
include /etc/nginx/php.conf;
root /var/www/example.com/;
location / {
root /var/www/example.com/;
access_log on;
} 
}

創建一個上面配置中的/etc/nginx/php.conf文件

sudo touch /etc/nginx/php.conf

這個文件是連接nginx和php-fpm的設置,也可以直接寫在剛才的網站配置文件中,如果需要配置多個網站的話,將其獨立出來比較方便,不用每個網站配置文件都去修改一下。將以下代碼加入剛才創建的php.conf文件中:

index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO       $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_connect_timeout        60;
fastcgi_send_timeout          180;
fastcgi_read_timeout          180;
fastcgi_buffer_size          128k;
fastcgi_buffers            4 256k;
fastcgi_busy_buffers_size    256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors    on;
fastcgi_ignore_client_abort off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}

這裡要說明一下,上面的配置是通過TCP SOCKETS連接nginx和php-fpm的,這在php 5.3下沒有問題,但是如果安裝了5.4,nginx會報502錯誤。如有,需要將其改成UNIX SOCKETS連接,將第18行替換為以下代碼實現UNIX SOCKETS連接。

fastcgi_pass unix:/var/run/php5-fpm.sock;

到這裡,服務器已經配置得差不多,激活配置文件並重啓相關服務:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo /etc/init.d/mysql restart
sudo /etc/init.d/php5-fpm restart
sudo /etc/init.d/nginx restart

如果DNS的A紀錄已經生效的話,那麼在瀏覽器中輸入http://example.com应该可以看到php的信息页面了。

4 安裝phpmyadmin

接下來安裝phpmyadmin:

sudo aptitude install phpmyadmin

安裝過程中會選擇apache還是lighttpd服務器,這裡用的是nginx,因此按esc取消,然後會要求輸入mysql數據庫的root密碼,輸入後確定,安裝成功後將phpmyadmin連接至剛才的網站目錄下:

sudo ln -s /usr/share/phpmyadmin/ /var/www/example.com

至此,nginx、php、mysql和phpmyadmin都安裝成功。

5 幾個小問題

5.1 安裝phpmyadmin第二步輸入root密碼的地方可能會報錯,不管,直接忽略,也不影響phpmyadmin的運行。

5.2 安裝phpmyadmin的過程中會安裝一些apache的依賴包,在服務器重啓後會發現nginx啟動失敗,原因是apache占用了80端口,運行以下命令可以取消apache的自動運行,這樣80口就不會被占用了。

sudo update-rc.d -f apache2 remove

文章綜合參考了以下網頁:

[1] Dotdeb.org. Instructions. http://www.dotdeb.org/instructions/
[2] Kevin Deldycke. Nginx + PHP-FPM + MySQL on a Debian Squeeze server. http://kevin.deldycke.com/2011/06/nginx-php-fpm-mysql-debian-squeeze-server/
[3] http://oliverdahlberg.se/nginx-php-5-4-502-bad-gateway/
[4] Cssor.com. ubuntu禁止apache开机自启动. http://cssor.com/ubuntu-disable-apache2-from-running-on-startup.html