本篇文章的目的是按部就班的教大家如何在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
- 按下Generate並且在框框內移動滑鼠以加快金鑰產生。
- 生成完之後可以自己取名字,但是不怎麼重要。
- 請儲存private key(私鑰),會提示沒有設定密碼;這部分自行決定即可。
- 上圖框框內的文字是公鑰,需要貼到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/
安裝 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
執行以下指令設定 MariaDB 的 root 密碼, 預設是空密碼, 所以建議盡快修改,這個腳本會幫你設定root密碼、阻擋root遠端登入、移除預設資料表、移除匿名帳號;記住你現在設定的密碼,存取時會用到。
# /usr/bin/mysql_secure_installation
大功告成啦~~~
申請SSL憑證:
我們要向Cloudflare申請憑證以啟用嚴格的SSL,請先申請Cloudflare帳戶並且添加域名至Cloudflare。
記住CloudFlare原生憑證的公要(上)與私鑰(下),我們要放到VPS上面。
進入ssl設定檔案,並找到公鑰與私鑰的位置:
我這邊採取的做法是直接改兩個檔案的位置,你也可以把設定檔案裏面的路徑改掉。
然後重新啟動阿帕契,然後確定CloudFlare有啟用代理。
# systemctl restart httpd
之後網頁就是安全的https了。
上傳網頁嚕,以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 則留言