學習筆記:在虛擬伺服器 VPS 上安裝 LAMP 及 LEMP (Linux, Apache/Nginx, MySQL, PHP)

LAMP,一套網站開發者耳熟能響的名稱,指的是由 LinuxApacheMySQL 以及 PHP 四大網路軟體所組成的一套網站環境。維德因為接了一件案子,必須幫人在 VPS 伺服器上架設 WordPress 系統[1],包括 LAMP 套件,所以順便將操作過程寫成學習筆記,希望能幫忙到有需要的朋友。

坊間還有另一種套件,稱作 LEMP(或稱 LNMP),與 LAMP 最大的不同在於網頁軟體由 Apache 替換成近年來頗流行的 Nginx,據說在效能上受惠於更先進的管理模式而有所改善(由於 Nginx 未被 CentOS 的 yum 指令正式收錄,因此需要另外安裝 Repositories 檔案,指令為 sudo yum install epel-release)。

要蓋一座網站,除了自己用電腦架站外,現代一般常見的做法是找一家便宜好用的伺服器供應商(例如:GodaddyBluehost 以及 DigitalOcean),從中挑選符合網站效能的「虛擬專用伺服器(Virtual Private Server, VPS)」或「專用伺服器(Dedicated Server)」。接著在伺服器中安裝 Linux 作業系統後就能開始架站。

提到 Linux 作業系統,目前比較普遍的版本依序為 Debian、Ubuntu 以及 CentOS。Debian 是其中最中規中矩的一派,對系統穩定性有較高需求,後續的維護更新有比較長的生命週期。但要是你是應用程式開發者,較年輕的 Ubuntu 會比較適合,唯一的缺點大概就是新版本一直推出,對原先版本的持續維護比較弱。(不過 CentOS 是 Bluehost 採用的作業系統,因此我大多會選用這套比較習慣的作業系統。)

完成基礎作業系統的建構後,就能透過 SSH 登入伺服器,再安裝 Apache/Nginx、MySQL 以及 PHP 網頁腳本語言這三套軟體。相關步驟請參見下方說明。

Install Linux, Apache / Nginx, MySQL, PHP (LAMP / LEMP)

第一步,確認 Linux 作業系統已更新至最新版本。

請在提示字元(如 $)後輸入指令:「sudo apt-get update(如果是 CentOS 系統,將 apt-get 改用 yum 指令,下同)

Linux-提示字元-範例

提示字元範例。

[pullquote-right]提示:在輸入指令前加上「sudo」可以系統管理者的權限進行安裝與更新。[/pullquote-right]

第二步,安裝 Apache 網頁伺服器軟體。

請在提示字元後方接著輸入「apt-get install apache2」指令,在完成這個步驟後,以網頁瀏覽器(如 Chrome)開啟伺服器時會出下列提示文字,表示 Apache 網頁管理軟體已經安裝完成:

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Apache 底下預設的網站資料夾位置在「/var/www」。

第三步,安裝 MySQL 資料庫。

輸入「apt-get install mysql-server」指令。在完成程式載入後,會進入下圖的密碼設定畫面,請設定一組不容易被破解的密碼[2]

Linux-LAMP-MySQL-Configuring-Setup

設定 MySQL。

輸入「sudo mysql_install_db」指令,啟動資料庫功能。

接著輸入「mysql_secure_installation」指令,用來設定 MySQL 資料庫的安全性。在輸入剛剛的密碼後,系統會詢問底下一連串的安全方面的問題。我在下面分別提供最適合的答案供大家參考,除非你有特別考量,否則照順序回答即可完成設定:

  • Change the root password? [n]
  • Remove anonymous users? [Y]
  • Disallow root login remotely? [Y]
  • Remove test database and access to it? [Y]
  • Reload privilege tables now? [Y]

第四步,在 Debian 系統中安裝 Nignx 網頁伺服器軟體(LEMP 限定)。

原本 LAMP 是在第二步驟就要安裝 Apache 網站伺服器,但在 LEMP 中,是在第四步驟才安裝 Nginx(跳過第二步驟)。

安裝 Nginx 的指令是:「sudo apt-get install nginx」,等到安裝結束後接著輸入啟動系統的指令:「sudo service nginx start」。完成後應該已經能從瀏覽器直接連上你伺服器的 IP 位址觀看網頁內容,預設的首頁顯示著「Welcome to nginx!」的歡迎畫面。

與 Apache 簡潔的位置相反,Nginx 的 www 資料夾是位在 /usr/share/nginx/www。

之後請輸入「sudo nano /etc/nginx/sites-available/default」指令,修改虛擬主機的設定,包括在文件檔所顯示的「index index.html index.htm;」段落中,增加一個「index.php」;將「server_name localhost;」中的 localhost 修改成你自己的 IP 或是 Domain Name;以及將「# pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock」這一段下方一小區中,新增如下段落,啟用 FastCGI 應用服務:

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

第五步,安裝 PHP 網頁腳本語言。

如果是安裝 LAMP,請輸入「apt-get install php5 php-pear php5-mysql」指令,安裝 PHP Script Language。接著輸入「sudo service apache2 restart  或 sudo /etc/init.d/apache2 restart」指令,重新啟動 Apache 網頁軟體。

如果是安裝 LEMP,請輸入「sudo apt-get install php5-fpm php5-mysql」指令,安裝 PHP Script Language。接著繼續輸入「sudo nano /etc/php5/fpm/php.ini」修改 php.ini,在文檔中找到「cgi.fix_pathinfo=0」這串字後,將 1 修改為 0,以準確地使用路徑,避免造成資訊安全上的問題。再輸入「sudo service php5-fpm restart」指令,重啟 php5軟體,最後輸入「sudo service php5-fpm restart」指令,重啟 Nginx。

第六步,安裝 PhpMyAdmin。

這個步驟並非必要,但是這套軟體能讓你以視覺化管理 MySQL 的數據,維德極度推薦你一定要裝。

首先執行「sudo apt-get install phpmyadmin」指令,開始安裝 phpMyAdmin。等下載安裝程式後,會開啟如下圖的視窗,請選擇 Apache 2 後按下 OK。

Linux-MySQL-phpMyAdmin-Manager

phpMyAdmin 設定頁面。

接下來會出現「Configure the database for phpmyadmin with dbconfig-common」的問題,這邊請選 Yes。

再來出現的視窗中,請填入先前在 MySQL 中設定的 root 密碼(手動輸入密碼如果老是過不去,可以先在外面打好密碼後再貼過去)。

將 phpMyAdmin 與 Apache 連結,輸入「sudo nano /etc/apache2/apache2.conf」指令,並將「Include /etc/phpmyadmin/apache.conf」描述寫入 apache2.conf 設定檔案中。

接著再重啟 Apache。

如果要開啟 phpMyAdmin,只要在網址列輸入「http://YourIpAddreee/phpMyAdmin」即可,會出現下圖的登入頁面,使用者名稱第一次大多是 root(後面可自行設定用戶與權限),密碼則輸入剛剛 MySQL 中設定的密碼。順帶一提,由於 phpMyAdmin 有些安全問題,建議可參考延伸閱讀[4]中,透過設置 .htaccess 以及 .htpasswd 來強化安全性。

Linux-MySQL-phpMyAdmin-Login-Webpage

phpMyAdmin 登入頁面。

延伸閱讀

[1] 學習筆記:在虛擬專用伺服器(VPS)上架設 WordPress CMS。

[2] 資訊安全: 設計一組好密碼 保護網路隱私與安全 (規則教學) 。

[3] 完整 WordPress 網站安裝心得教學與問題紀錄專用頁面

[4] How To Secure phpMyAdmin on Debian 7

  •  
  •  
  •  
  •  
  •  
  •  

說些什麼吧

您也許也會喜歡…