Cloud for Charities: Migration Guide

Cloud for Charities: Migration Guide

Hindi nagtagal, ang Mail.Ru Cloud Solutions (MCS) at ang serbisyo ng Dobro Mail.Ru ay naglunsad ng proyekto "Cloud para sa mga kawanggawa”, salamat sa kung aling mga non-profit na organisasyon ang makakakuha ng mga mapagkukunan ng MCS cloud platform nang libre. Charitable Foundation "Arithmetic ng kabutihanΒ» nakibahagi sa proyekto at matagumpay na na-deploy ang bahagi ng imprastraktura nito batay sa MCS.

Pagkatapos maipasa ang pagpapatunay, ang isang NPO ay maaaring makatanggap ng virtual na kapasidad mula sa MCS, ngunit ang karagdagang pagsasaayos ay nangangailangan ng ilang mga kwalipikasyon. Sa materyal na ito, gusto naming magbahagi ng mga partikular na tagubilin para sa pag-set up ng isang server na nakabase sa Ubuntu Linux upang patakbuhin ang pangunahing website ng pundasyon at ilang mga subdomain gamit ang mga libreng SSL certificate. Para sa marami, ito ay magiging isang simpleng gabay, ngunit inaasahan namin na ang aming karanasan ay magiging kapaki-pakinabang para sa iba pang mga non-profit na organisasyon, at hindi lamang.

Para sa Iyong Impormasyon: Ano ang makukuha mo sa MCS? 4 na CPU, 32 GB RAM, 1 TB HDD, Ubuntu Linux OS, 500 GB na object storage.

Hakbang 1: ilunsad ang virtual server

Diretso tayo sa punto at gawin ang aming virtual server (aka "instance") sa iyong personal na account sa MCS. Sa app store, kailangan mong pumili at mag-install ng yari na LAMP stack, na isang set ng software ng server (LAMP = Linux, Apache, MySQL, PHP) na kinakailangan upang patakbuhin ang karamihan sa mga website.

Cloud for Charities: Migration Guide
Cloud for Charities: Migration Guide
Cloud for Charities: Migration Guide
Piliin ang naaangkop na configuration ng server at lumikha ng bagong SSH key. Pagkatapos ng pag-click sa pindutan ng "I-install", magsisimula ang pag-install ng server at LAMP stack, magtatagal ito ng ilang oras. Mag-aalok din ang system na mag-download ng pribadong key sa iyong computer upang pamahalaan ang virtual machine sa pamamagitan ng console, i-save ito.

Pagkatapos i-install ang application, agad nating i-set up ang firewall, ginagawa din ito sa iyong personal na account: pumunta sa seksyong "Cloud computing -> Virtual machine" at piliin ang "Pagtatakda ng firewall":

Cloud for Charities: Migration Guide
Kailangan mong magdagdag ng pahintulot para sa papasok na trapiko sa pamamagitan ng port 80 at 9997. Ito ay kinakailangan sa hinaharap upang mag-install ng mga SSL certificate at upang gumana sa phpMyAdmin. Bilang resulta, ang hanay ng mga panuntunan ay dapat magmukhang ganito:

Cloud for Charities: Migration Guide
Ngayon ay maaari kang kumonekta sa iyong server sa pamamagitan ng command line gamit ang SSH protocol. Upang gawin ito, i-type ang sumusunod na command, na tumuturo sa SSH key sa iyong computer at ang panlabas na IP address ng iyong server (makikita mo ito sa seksyong "Mga virtual machine"):

$ ssh -i /ΠΏΡƒΡ‚ΡŒ/ΠΊ/ΠΊΠ»ΡŽΡ‡Ρƒ/key.pem ubuntu@<ip_сСрвСра>

Kapag kumokonekta sa server sa unang pagkakataon, inirerekumenda na i-install ang lahat ng kasalukuyang mga update dito at i-reboot ito. Upang gawin ito, patakbuhin ang sumusunod na mga utos:

$ sudo apt-get update

Makakatanggap ang system ng isang listahan ng mga update, i-install ang mga ito gamit ang command na ito at sundin ang mga tagubilin:

$ sudo apt-get upgrade

Pagkatapos i-install ang mga update, i-restart ang server:

$ sudo reboot

Hakbang 2: I-set up ang mga virtual host

Maraming mga nonprofit ang kailangang magpanatili ng ilang domain o subdomain nang sabay-sabay (halimbawa, isang pangunahing website at ilang landing page para sa mga kampanyang pang-promosyon, atbp.). Ang lahat ng ito ay maginhawang mailagay sa isang server sa pamamagitan ng paglikha ng ilang virtual host.

Una kailangan nating lumikha ng istraktura ng direktoryo para sa mga site na ipapakita sa mga bisita. Gumawa tayo ng ilang mga direktoryo:

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

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

At tukuyin ang may-ari ng kasalukuyang user:

$ 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

Variable $USER naglalaman ng username kung saan ka kasalukuyang naka-log in (bilang default ito ang user ubuntu). Ngayon ang kasalukuyang gumagamit ay nagmamay-ari ng public_html na mga direktoryo kung saan namin iimbak ang nilalaman.

Kailangan din naming i-edit ng kaunti ang mga pahintulot upang matiyak na pinapayagan ang read access sa nakabahaging web directory at lahat ng mga file at folder na nilalaman nito. Ito ay kinakailangan para ang mga pahina ng site ay maipakita nang tama:

$ sudo chmod -R 755 /var/www

Ang iyong web server ay dapat na mayroon na ngayong mga pahintulot na kailangan nito upang ipakita ang nilalaman. Bilang karagdagan, ang iyong user ay may kakayahan na ngayong lumikha ng nilalaman sa mga kinakailangang direktoryo.

Mayroon nang index.php file sa /var/www/html na direktoryo, kopyahin natin ito sa ating mga bagong direktoryo - ito ang magiging nilalaman natin sa ngayon:

$ 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

Ngayon ay kailangan mong tiyakin na maa-access ng user ang iyong site. Upang gawin ito, iko-configure muna namin ang mga virtual host file, na tutukuyin kung paano tutugon ang Apache web server sa mga kahilingan sa iba't ibang domain.

Bilang default, ang Apache ay may virtual host file na 000-default.conf na magagamit namin bilang panimulang punto. Kokopyahin namin ito upang lumikha ng mga virtual host file para sa bawat isa sa aming mga domain. Magsisimula tayo sa isang domain, i-configure ito, kopyahin ito sa isa pang domain, at pagkatapos ay gagawing muli ang mga kinakailangang pag-edit.

Ang default na configuration ng Ubuntu ay nangangailangan na ang bawat virtual host file ay may *.conf extension.

Magsimula tayo sa pagkopya ng file para sa unang domain:

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

Magbukas ng bagong file sa isang editor na may mga karapatan sa ugat:

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

I-edit ang data bilang sumusunod, na tumutukoy sa port 80, ang iyong data para sa ServerAdmin, ServerName, ServerAlias, pati na rin ang path sa root directory ng iyong site, i-save ang file (Ctrl+X, pagkatapos ay 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 nagtatakda ng pangunahing domain, na dapat tumugma sa virtual na pangalan ng host. Ito dapat ang iyong domain name. Pangalawa, ServerAlias, ay tumutukoy sa iba pang mga pangalan na dapat bigyang-kahulugan na parang ito ang pangunahing domain. Ito ay maginhawa para sa paggamit ng karagdagang mga pangalan ng domain, halimbawa gamit ang www.

Kopyahin natin ang config na ito para sa isa pang host at i-edit din ito sa parehong paraan:

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

Maaari kang lumikha ng maraming mga direktoryo at virtual host para sa iyong mga website hangga't gusto mo! Ngayong nagawa na namin ang aming virtual host file, kailangan naming paganahin ang mga ito. Maaari naming gamitin ang a2ensite utility upang paganahin ang bawat isa sa aming mga site tulad nito:

$ sudo a2ensite a-dobra.ru.conf

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

Bilang default, sarado ang port 80 sa LAMP, at kakailanganin namin ito sa ibang pagkakataon upang mag-install ng SSL certificate. Kaya't agad nating i-edit ang ports.conf file at pagkatapos ay i-restart ang Apache:

$ sudo nano /etc/apache2/ports.conf

Magdagdag ng bagong linya at i-save ang file upang magmukhang ganito:

Listen 80
Listen 443
Listen 9997

Pagkatapos makumpleto ang mga setting, kailangan mong i-restart ang Apache para magkabisa ang lahat ng pagbabago:

$ sudo systemctl reload apache2

Hakbang 3: I-set up ang mga domain name

Susunod, kailangan mong magdagdag ng mga tala ng DNS na magtuturo sa iyong bagong server. Upang pamahalaan ang mga domain, ginagamit ng aming Arithmetic of Good Foundation ang serbisyo ng dns-master.ru, ipapakita namin ito sa isang halimbawa.

Ang pag-set up ng A-record para sa pangunahing domain ay karaniwang ipinahiwatig bilang mga sumusunod (sign @):

Cloud for Charities: Migration Guide
Ang A record para sa mga subdomain ay karaniwang tinutukoy tulad nito:

Cloud for Charities: Migration Guide
Ang IP address ay ang address ng Linux server na nilikha namin. Maaari mong tukuyin ang TTL = 3600.

Pagkaraan ng ilang oras, magiging posible na bisitahin ang iyong site, ngunit sa ngayon ay sa pamamagitan lamang http://. Sa susunod na hakbang ay magdaragdag kami ng suporta https://.

Hakbang 4: Mag-set up ng mga libreng SSL certificate

Maaari kang makakuha ng libreng Let's Encrypt SSL certificate para sa iyong pangunahing site at lahat ng subdomain. Maaari mo ring i-configure ang kanilang awtomatikong pag-renew, na napaka-maginhawa. Upang makakuha ng mga SSL certificate, i-install ang Certbot sa iyong server:

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

I-install ang Certbot package para sa Apache gamit apt:

$ sudo apt install python-certbot-apache 

Ngayon ang Certbot ay handa nang gamitin, patakbuhin ang command:

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

Ang command na ito ay nagpapatakbo ng certbot, keys -d tukuyin ang mga pangalan ng mga domain kung saan dapat ibigay ang certificate.

Kung ito ang unang pagkakataon na ilunsad mo ang certbot, hihilingin sa iyong ipasok ang iyong email address at sumang-ayon sa mga tuntunin ng paggamit ng serbisyo. Makikipag-ugnayan ang certbot sa server ng Let's Encrypt at pagkatapos ay i-verify na talagang kinokontrol mo ang domain kung saan mo hiniling ang certificate.

Kung naging maayos ang lahat, tatanungin ng certbot kung paano mo gustong i-configure ang configuration ng 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):

Inirerekomenda namin ang pagpili ng opsyon 2 at pagpindot sa ENTER. Ang configuration ay ia-update at ang Apache ay ire-restart upang ilapat ang mga pagbabago.

Ang iyong mga certificate ay na-download na, naka-install at gumagana na. Subukang i-reload ang iyong site gamit ang https:// at makikita mo ang icon ng seguridad sa iyong browser. Kung susubukan mo ang iyong server Pagsubok sa Server ng SSL Labs, makakatanggap siya ng A grade.

Ang mga certificate ng Let's Encrypt ay may bisa lamang sa loob ng 90 araw, ngunit ang certbot package na kaka-install lang namin ay awtomatikong magre-renew ng mga certificate. Upang subukan ang proseso ng pag-update, maaari naming gawin ang isang dry run ng certbot:

$ sudo certbot renew --dry-run 

Kung wala kang nakikitang mga error bilang resulta ng pagpapatakbo ng command na ito, kung gayon ang lahat ay gumagana!

Hakbang 5: I-access ang MySQL at phpMyAdmin

Maraming mga website ang gumagamit ng mga database. Ang tool na phpMyAdmin para sa pamamahala ng database ay naka-install na sa aming server. Upang ma-access ito, pumunta sa iyong browser gamit ang isang link tulad ng:

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

Ang password para sa root access ay maaaring makuha sa iyong MCS personal account (https://mcs.mail.ru/app/services/marketplace/apps/). Huwag kalimutang palitan ang iyong root password sa unang pagkakataong mag-log in ka!

Hakbang 6: I-set up ang pag-upload ng file sa pamamagitan ng SFTP

Makikita ng mga developer na maginhawang mag-upload ng mga file para sa iyong website sa pamamagitan ng SFTP. Upang gawin ito, gagawa kami ng bagong user, tawagan siyang webmaster:

$ sudo adduser webmaster

Hihilingin sa iyo ng system na magtakda ng password at magpasok ng ilang iba pang data.

Pagbabago ng may-ari ng direktoryo sa iyong website:

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

Ngayon, baguhin natin ang SSH config upang ang bagong user ay may access lamang sa SFTP at hindi sa SSH terminal:

$ sudo nano /etc/ssh/sshd_config

Mag-scroll hanggang sa pinakadulo ng configuration file at idagdag ang sumusunod na block:

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

I-save ang file at i-restart ang serbisyo:

$ sudo systemctl restart sshd

Ngayon ay maaari kang kumonekta sa server sa pamamagitan ng anumang SFTP client, halimbawa, sa pamamagitan ng FileZilla.

Kabuuan

  1. Ngayon alam mo na kung paano lumikha ng mga bagong direktoryo at i-configure ang mga virtual host para sa iyong mga website sa loob ng parehong server.
  2. Madali kang makakagawa ng mga kinakailangang SSL certificate - libre ito, at awtomatiko itong ia-update.
  3. Maginhawa kang makakapagtrabaho sa MySQL database sa pamamagitan ng pamilyar na phpMyAdmin.
  4. Ang paglikha ng mga bagong SFTP account at pag-set up ng mga karapatan sa pag-access ay hindi nangangailangan ng maraming pagsisikap. Ang mga naturang account ay maaaring ilipat sa mga third-party na web developer at site administrator.
  5. Huwag kalimutang pana-panahong i-update ang system, at inirerekumenda din namin ang paggawa ng mga backup - sa MCS maaari kang kumuha ng "mga snapshot" ng buong system sa isang pag-click, at pagkatapos, kung kinakailangan, ilunsad ang buong mga imahe.

Mga ginamit na mapagkukunan na maaaring maging kapaki-pakinabang:

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

Sa pamamagitan ng paraan, dito Mababasa mo sa VC kung paano nag-deploy ang aming foundation ng platform para sa online na edukasyon para sa mga ulila batay sa MCS cloud.

Pinagmulan: www.habr.com

Magdagdag ng komento