[How To]用VPS架設LAMP

 

本篇文章的目的是按部就班的教大家如何在VPS上面架設網頁伺服器,並且設定好SSL安全連線。

VPS是甚麼?

VPS是一台電腦所提供的虛擬電腦,你具有幾乎完整的控制權;在我們這則教學上,我們將使用Linux機器來安裝LAMP,亦即Linux、Apache、MariaDB、PHP。

我們這次使用Vultr做為示範平台,主機採用位於日本東京的CentOS 7:

架設網站需要甚麼?

網域:

網域是網站的入口,在本次教學將會使用已經購買好的網域;同時DNS將交由Cloudflare代管,並且在Cloudflare啟用嚴格安全的SSL加密傳輸。

AMP:

大部分的網頁應用程式都需要Apache、MariaDB以及PHP,視情況MariaDB可以不用架設在網頁伺服器上面,但是在本教學我們將會一併安裝MariaDB。

Apache與PHP的關係:

Apache只能單純的給予檔案,而PHP可以針對檔案做處理;比喻上來說就是服務生與廚師的關係,服務生可以單純的把東西給予客戶,但是若需要料理的食物,則需要由廚師進行處理後再交給服務生上菜。所以若是你的網站只有靜態元素(HTML、CSS、JavaScript)的話,你可以省略PHP安裝。

MariaDB:

MariaDB是資料庫,類似冰箱,可以經由廚師(PHP)進行存取的動作;冰箱不一定要放在同一個廚房,你也可以放在其他地方,但是若是沒有PHP,MariaDB是不需要安裝的。

讓我們開始吧

請先準備好以下物品:

產生連線金鑰

為確保主機安全,我們會用非對稱加密法連線;請先開啟puttygen.exe

  1. 按下Generate並且在框框內移動滑鼠以加快金鑰產生。
  2. 生成完之後可以自己取名字,但是不怎麼重要。
  3. 請儲存private key(私鑰),會提示沒有設定密碼;這部分自行決定即可。
  4. 上圖框框內的文字是公鑰,需要貼到VPS上的。

租一台VPS

匯入金鑰:

首先,我們必須要把剛剛產生的金鑰上傳至Vultr上面。

來租主機吧:

因為沒有2.5美元的方案了,所以我只能用5美金的方案,不過別擔心,他是以小時計費的。
等等我預計會使用host.lv5.in的網址,另外還要記一下VPS的IP

連線到主機:

我們填入IP並且讀取剛剛存下來的檔案,如果怕麻煩可以按儲存。

之後會出現一個視窗詢問是否要連接到此主機,請點選”是”;這個視窗只會跳出來一次,如果之後還跑出來,要注意是不是受到中間人攻擊。

主機指紋
主機指紋

帳戶是root,密碼的部分已經由剛剛的SSH Kye幫你驗證了。

開始安裝東西吧。

首先,先更新吧。

# yum update //更新
# yum -y install vim //安裝vim,我忘記錄到了

安裝 Apache,啟用它、設定開機自動執行。

//後面的是解釋,別貼上去嘿

# yum -y install httpd mod_ssl //安裝阿帕契與SSL模組(忘記拍圖了= =)
# systemctl start httpd //執行阿帕契
# systemctl enable httpd //將阿帕契設定成開機自動啟動
安裝阿帕契
安裝阿帕契
執行、開機自動執行阿帕契
執行、開機自動執行阿帕契

接下來我們去設定SSL安全性

我們要停用不安全的SSL協定、啟用前向安全、支援更多的加密協定
vi的用法:

  • a:編輯
  • esc:跳出編輯模式
  • /:在非編輯模式下搜尋
  • :wq :冒號wq是寫入離開的意思
SSLProtocol all -SSLv2 -SSLv3 -TLSv1
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on

設定防火牆:

設定完網頁伺服器後要記得開啟防火牆

# firewall-cmd --permanent --zone=public --add-service=http //允許http(80)
# firewall-cmd --permanent --zone=public --add-service=https //允許https(443)
# firewall-cmd --reload //重新載入防火牆設定檔
設定防火牆
設定防火牆

之後就可以用http://”你的IP位置” 看到範例頁面嚕,在這個例子是http://45.32.46.97/

Apache Testing Page
Apache Testing Page

安裝 PHP 7.1

# rpm -Uvh http://download.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum -y install yum-utils
# yum-config-manager --enable remi
# yum-config-manager --enable remi-php71
# yum -y install php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
# yum update php*
# systemctl restart httpd.service

指令安裝 MariaDB

MariaDB是相容於MySQL的資料庫。若是要使用外部資料庫,要開啟SELinux的限制:

# setsebool -P httpd_can_network_connect=1
//允許httpd存取外部網路的SQL資料庫

若是不要使用外部資料庫的話,就用本地的囉,那讓我們來安裝MariaDB吧~

# yum -y install mariadb-server mariadb
# systemctl start mariadb
# systemctl enable mariadb
安裝SQL與設定開機自啟動
安裝SQL與設定開機自啟動

執行以下指令設定 MariaDB 的 root 密碼, 預設是空密碼, 所以建議盡快修改,這個腳本會幫你設定root密碼、阻擋root遠端登入、移除預設資料表、移除匿名帳號;記住你現在設定的密碼,存取時會用到。

# /usr/bin/mysql_secure_installation

大功告成啦~~~

申請SSL憑證:

我們要向Cloudflare申請憑證以啟用嚴格的SSL,請先申請Cloudflare帳戶並且添加域名至Cloudflare。

記住CloudFlare原生憑證的公要(上)與私鑰(下),我們要放到VPS上面。

進入ssl設定檔案,並找到公鑰與私鑰的位置:

我這邊採取的做法是直接改兩個檔案的位置,你也可以把設定檔案裏面的路徑改掉。

然後重新啟動阿帕契,然後確定CloudFlare有啟用代理。

# systemctl restart httpd
啟用CloudFlare代理
啟用CloudFlare代理
開啟嚴格的SSL代理
開啟嚴格的SSL代理

之後網頁就是安全的https了。

SSLLab評價為A
SSLLab評價為A

上傳網頁嚕,以Wordpress為例:

我們使用FileZilla作為上傳檔案的工具,協定是SFTP:

網站預設目錄是/var/www/html,現在我們將Wordpress上傳至目錄下面

讓我們回到SSH,接下來要解壓縮以及修改權限。

# cd /var/www/html //移動到網站目錄
# tar zxvf wordpress-4.7.4-zh_TW.tar.gz //解壓縮Wordpress
# ls //顯示目前有甚麼檔案
# rm wordpress-4.7.4-zh_TW.tar.gz //移除已經不會用到的壓縮檔
# chown -R apache:apache /var/www/html //將html裡面的所有檔案都改成apache擁有的,這樣apache才能修改
# mv wordpress/* . //把wordpress下面的所有檔案(wordpress/*)移動到目前的目錄(.)

如果之後有問題,回來執行這個指令,我猜安裝外掛之類的動作後可能會出現問題,所以先留下解法
# restorecon -R /var/www/html  //這是修復SELinux的權限

之後要為了Wordpress建立一個資料庫,關於資料庫的操作請看這裡

# mysql -p //進入資料庫,-p是代表使用密碼。
> create database wordpress; //建立一個叫wordpress的資料庫

之後就是一般的安裝了,大功告成!

優化:

啟用.htaccess

把目錄下的allowoverride none改成allowoverride all

在〈[How To]用VPS架設LAMP〉中有 1 則留言

發佈留言