慈善機構雲端:遷移指南

慈善機構雲端:遷移指南

不久前,Mail.Ru Cloud Solutions (MCS) 和 Dobro Mail.Ru 服務推出了“專案”慈善雲”,非營利組織可以免費獲得MCS雲端平台的資源。 慈善基金會”善良的算術» 參與此專案並成功部署了基於MCS的部分基礎架構。

通過驗證後,NPO可以從MCS獲得虛擬容量,但進一步配置需要一定的資格。 在本資料中,我們希望分享設定基於 Ubuntu Linux 的伺服器來運行主要基金會網站和使用免費 SSL 憑證的多個子網域的具體說明。 對許多人來說,這將是一個簡單的指南,但我們希望我們的經驗不僅對其他非營利組織有用。

僅供參考: 你能從 MCS 得到什麼? 4 個 CPU、32 GB RAM、1 TB HDD、Ubuntu Linux 作業系統、500 GB 物件儲存。

第 1 步:啟動虛擬伺服器

讓我們開門見山,在您的 MCS 個人帳戶中建立我們的虛擬伺服器(也稱為「實例」)。 在應用程式商店中,您需要選擇並安裝現成的LAMP堆疊,這是運行大多數網站所必需的一組伺服器軟體(LAMP = Linux、Apache、MySQL、PHP)。

慈善機構雲端:遷移指南
慈善機構雲端:遷移指南
慈善機構雲端:遷移指南
選擇適當的伺服器配置並建立新的 SSH 金鑰。 點擊「安裝」按鈕後,將開始安裝伺服器和 LAMP 堆疊,這將需要一些時間。 系統還將提供將私鑰下載到您的電腦以透過控制台管理虛擬機器的功能,並保存它。

安裝應用程式後,讓我們立即設定防火牆,這也是在您的個人帳戶中完成的:前往「雲端運算 -> 虛擬機器」部分並選擇「設定防火牆」:

慈善機構雲端:遷移指南
您需要新增對通過連接埠 80 和 9997 傳入流量的權限。 這是將來安裝 SSL 憑證和使用 phpMyAdmin 所必需的。 因此,規則集應如下所示:

慈善機構雲端:遷移指南
現在您可以使用 SSH 協定透過命令列連接到您的伺服器。 為此,請鍵入以下命令,指向電腦上的 SSH 金鑰和伺服器的外部 IP 位址(您可以在「虛擬機器」部分中找到它):

$ ssh -i /путь/к/ключу/key.pem ubuntu@<ip_сервера>

首次連接到伺服器時,建議在其上安裝所有當前更新並重新啟動。 為此,請執行以下命令:

$ sudo apt-get update

系統將收到更新列表,使用此命令安裝它們並按照說明進行操作:

$ sudo apt-get upgrade

安裝更新後,重新啟動伺服器:

$ sudo reboot

第 2 步:設定虛擬主機

許多非營利組織需要同時維護多個網域或子網域(例如,一個主網站和多個用於促銷活動的登陸頁面等)。 透過建立多個虛擬主機,所有這些都可以輕鬆放置在一台伺服器上。

首先,我們需要為將向訪客顯示的網站建立一個目錄結構。 讓我們建立一些目錄:

$ sudo mkdir -p /var/www/a-dobra.ru/public_html

$ sudo mkdir -p /var/www/promo.a-dobra.ru/public_html

並指定目前使用者的所有者:

$ sudo chown -R $USER:$USER /var/www/a-dobra.ru/public_html

$ sudo chown -R $USER:$USER /var/www/promo.a-dobra.ru/public_html

多變的 $USER 包含您目前登入的用戶名(預設為用戶 ubuntu)。 現在目前使用者擁有 public_html 目錄,我們將在其中儲存內容。

我們還需要稍微編輯一下權限,以確保允許對共用 Web 目錄及其包含的所有檔案和資料夾進行讀取存取。 這是正確顯示網站頁面所必需的:

$ sudo chmod -R 755 /var/www

您的網頁伺服器現在應該擁有顯示內容所需的權限。 此外,您的用戶現在可以在所需目錄中建立內容。

/var/www/html 目錄中已經有一個 index.php 文件,讓我們將其複製到新目錄 - 這將是我們現在的內容:

$ cp /var/www/html/index.php /var/www/a-dobra.ru/public_html/index.php

$ cp /var/www/html/index.php /var/www/promo.a-dobra.ru/public_html/index.php

現在您需要確保用戶可以訪問您的網站。 為此,我們首先配置虛擬主機文件,這些文件確定 Apache Web 伺服器如何回應不同網域的請求。

預設情況下,Apache 有一個虛擬主機檔案 000-default.conf,我們可以將其用作起點。 我們將複製此檔案來為每個網域建立虛擬主機檔案。 我們將從一個網域開始,配置它,將其複製到另一個網域,然後再次進行必要的編輯。

Ubuntu 的預設配置要求每個虛擬主機檔案都具有 *.conf 副檔名。

讓我們先複製第一個網域的檔案:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf

在具有 root 權限的編輯器中開啟一個新檔案:

$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf

如下編輯數據,指定連接埠 80,您的數據 ServerAdmin, ServerName, ServerAlias以及網站根目錄的路徑,儲存檔案(Ctrl+X,然後 Y):

<VirtualHost *:80>
 
    ServerAdmin [email protected]
    ServerName a-dobra.ru
    ServerAlias www.a-dobra.ru
 
    DocumentRoot /var/www/a-dobra.ru/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    <Directory /var/www/a-dobra.ru/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
 
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
 
</VirtualHost>

ServerName 設定主域,該域必須與虛擬主機名稱相符。 這必須是您的網域。 第二, ServerAlias,定義了應被解釋為主域的其他名稱。 這對於使用附加網域名稱很方便,例如使用 www.

讓我們為另一台主機複製此配置,並以相同的方式編輯它:

$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf

您可以根據需要為您的網站建立任意數量的目錄和虛擬主機! 現在我們已經建立了虛擬主機文件,我們需要啟用它們。 我們可以使用 a2ensite 實用程式來啟用我們的每個站點,如下所示:

$ sudo a2ensite a-dobra.ru.conf

$ sudo a2ensite promo.a-dobra.ru.conf 

預設情況下,LAMP 中的連接埠 80 是關閉的,稍後我們將需要它來安裝 SSL 憑證。 因此,讓我們立即編輯 ports.conf 文件,然後重新啟動 Apache:

$ sudo nano /etc/apache2/ports.conf

新增行並儲存文件,如下所示:

Listen 80
Listen 443
Listen 9997

完成設定後,需要重新啟動Apache以使所有變更生效:

$ sudo systemctl reload apache2

第三步:設定域名

接下來,您需要新增指向新伺服器的 DNS 記錄。 為了管理域名,我們的 Arithmetic of Good Foundation 使用 dns-master.ru 服務,我們將透過一個範例來展示它。

為主域設定 A 記錄通常如下所示(符號 @):

慈善機構雲端:遷移指南
子網域的A記錄通常是這樣指定的:

慈善機構雲端:遷移指南
IP位址是我們剛剛建立的Linux伺服器的位址。 您可以指定 TTL = 3600。

一段時間後,就可以訪問您的網站,但目前只能透過 http://。 下一步我們將添加支持 https://.

第 4 步:設定免費 SSL 憑證

您可以為您的主網站和所有子網域取得免費的 Let's Encrypt SSL 憑證。 還可以配置他們的自動續訂,非常方便。 若要取得 SSL 證書,請在您的伺服器上安裝 Certbot:

$ sudo add-apt-repository ppa:certbot/certbot

使用以下命令安裝 Apache 的 Certbot 軟體包 apt:

$ sudo apt install python-certbot-apache 

現在 Certbot 可以使用了,執行指令:

$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru

此命令運行 certbot、密鑰 -d 定義應為其頒發憑證的網域的名稱。

如果這是您第一次啟動 certbot,系統會要求您輸入您的電子郵件地址並同意服務的使用條款。 然後,certbot 將聯絡 Let's Encrypt 伺服器,並驗證您是否實際控制所要求憑證的網域。

如果一切順利,certbot 會詢問您要如何設定 HTTPS 設定:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

我們建議選擇選項 2 並按 ENTER。 配置將被更新,並且 Apache 將重新啟動以套用變更。

您的憑證現已下載、安裝並運作。 嘗試使用 https:// 重新載入您的網站,您將在瀏覽器中看到安全性圖示。 如果你測試你的伺服器 SSL 實驗室伺服器測試,他將獲得 A 級。

Let's Encrypt 憑證的有效期限只有 90 天,但我們剛安裝的 certbot 軟體包會自動更新憑證。 為了測試更新過程,我們可以對 certbot 進行一次試運行:

$ sudo certbot renew --dry-run 

如果運行此命令後沒有看到任何錯誤,則一切正常!

步驟5:存取MySQL和phpMyAdmin

許多網站都使用資料庫。 用於資料庫管理的 phpMyAdmin 工具已經安裝在我們的伺服器上。 要訪問它,請使用以下連結轉到您的瀏覽器:

https://<ip-адрес сервера>:9997

root存取密碼可以在您的MCS個人帳戶中取得(https://mcs.mail.ru/app/services/marketplace/apps/)。 首次登入時不要忘記更改 root 密碼!

第 6 步:設定透過 SFTP 上傳文件

開發人員會發現透過 SFTP 為您的網站上傳檔案很方便。 為此,我們將創建一個新用戶,稱他為網站管理員:

$ sudo adduser webmaster

系統會要求您設定密碼並輸入一些其他資料。

更改您網站的目錄所有者:

$ sudo chown -R webmaster:webmaster /var/www/a-dobra.ru/public_html

現在讓我們更改 SSH 配置,以便新用戶只能存取 SFTP 而不能存取 SSH 終端:

$ sudo nano /etc/ssh/sshd_config

滾動到配置文件的最後並添加以下區塊:

Match User webmaster
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/a-dobra.ru
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

儲存檔案並重新啟動服務:

$ sudo systemctl restart sshd

現在您可以透過任何 SFTP 用戶端連接到伺服器,例如透過 FileZilla。

  1. 現在您知道如何在同一台伺服器中建立新目錄並為您的網站設定虛擬主機。
  2. 您可以輕鬆建立必要的 SSL 憑證 - 它是免費的,並且它們會自動更新。
  3. 您可以透過熟悉的phpMyAdmin方便地使用MySQL資料庫。
  4. 建立新的 SFTP 帳戶和設定存取權限並不需要太多努力。 此類帳戶可以轉移給第三方網路開發人員和網站管理員。
  5. 不要忘記定期更新系統,我們還建議進行備份 - 在 MCS 中,您可以一鍵拍攝整個系統的“快照”,然後在必要時啟動整個映像。

使用的可能有用的資源:

https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru
https://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ru
https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04

順便說一句, 這裡 您可以在VC上看到我們基金會如何部署基於MCS雲端的孤兒線上教育平台。

來源: www.habr.com

添加評論