Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі

Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі

Не так даўно Mail.Ru Cloud Solutions (MCS) і сэрвіс Сардэчна Mail.Ru запусцілі праектВоблака для дабрачынных фондаў», дзякуючы якому некамерцыйныя арганізацыі могуць бясплатна атрымаць рэсурсы хмарнай платформы MCS. Дабрачынны фонд "Арыфметыка дабра» прыняў удзел у праекце і паспяхова разгарнуў частку сваёй інфраструктуры на базе MCS.

НКА пасля праходжання валідацыі можа атрымаць ад MCS віртуальныя магутнасці, але далейшая настройка патрабуе пэўнай кваліфікацыі. У гэтым матэрыяле мы жадаем падзяліцца пэўнымі інструкцыямі па наладзе сервера на базе Ubuntu Linux для працы асноўнага сайта фонду і шэрагу паддаменаў з выкарыстаннем бясплатных SSL-сертыфікатаў. Для многіх гэта будзе простае кіраўніцтва, але спадзяемся, што наш досвед будзе карысны для іншых некамерцыйных арганізацый, і не толькі.

FYI: што можна атрымаць ад MCS? 4 CPU, 32 GB RAM, 1 TB HDD, АС Ubuntu Linux, аб'ектнае сховішча на 500 ГБ.

Крок 1: запускаем віртуальны сервер

Пяройдзем адразу да справы і створым наш віртуальны сервер (ён жа "інстанс") у асабістым кабінеце MCS. У краме прыкладанняў трэба абраць і ўсталяваць гатовы стэк LAMP, які ўяўляе сабой комплекс сервернага праграмнага забеспячэння (LAMP = Linux, Apache, MySQL, PHP), неабходны для запуску большасці вэб-сайтаў.

Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі
Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі
Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі
Абярыце прыдатную для сервера канфігурацыю і стварыце новы SSH-ключ. Пасля націску на кнопку "Усталяваць" пачнецца інталяцыя сервера і стэка LAMP, гэта зойме нейкі час. Сістэма таксама прапануе спампаваць на кампутар прыватны ключ для кіравання віртуальнай машынай праз кансоль, захавайце яго.

Пасля ўсталёўкі прыкладання давайце адразу наладзім firewall, гэта робіцца таксама ў асабістым кабінеце: зайдзіце ў падзел «Хмарныя вылічэнні -> Віртуальныя машыны» і абярыце пункт «Налада firewall»:

Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі
Вам неабходна дадаць дазвол на ўваходны трафік праз 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, у якіх мы будзем захоўваць кантэнт.

Нам таксама неабходна крыху адрэдагаваць правы доступу, каб пераканацца, што доступ на чытанне дазволены да агульнай вэб-дырэкторыі, усіх файлаў і тэчак, якія змяшчаюцца ў ёй. Гэта неабходна, каб старонкі сайта адлюстроўваліся карэктна:

$ 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 будзе адказваць на запыты да розных даменаў.

Па змаўчанні, 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

Крок 3: наладжваем даменныя імёны

Далей вам неабходна дадаць DNS-запісы, якія будуць паказваць на ваш новы сервер. Для кіравання даменамі наш фонд "Арыфметыка дабра" выкарыстоўвае сэрвіс dns-master.ru, пакажам на яго прыкладзе.

Настройка A-запісу для асноўнага дамена паказваецца звычайна так (знак @):

Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі
A-запіс для паддаменаў паказваецца звычайна так:

Воблака для дабрачынных фондаў: кіраўніцтва па міграцыі
IP-адрас - гэта адрас толькі што створанага намі Linux-сервера. TTL можаце пазначыць = 3600.

Праз некаторы час на ваш сайт ужо можна будзе зайсці, але пакуль толькі праз http://. У наступным кроку мы дадамо падтрымку https://.

Крок 4: наладжваем бясплатныя SSL-сертыфікаты

Для вашага асноўнага сайта і ўсіх паддаменаў можна атрымаць бясплатныя SSL-сертыфікаты Let's Encrypt. Таксама можна наладзіць іх аўтаматычнае падаўжэнне, што вельмі зручна. Для атрымання SSL-сертыфікатаў усталюем Certbot на ваш сервер:

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

Усталюем пакет Certbot для Apache з дапамогай 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 Labs Server Test, ён атрымае адзнаку A.

Сертыфікаты Let's Encrypt сапраўдныя толькі 90 дзён, але пакет certbot, які мы толькі што ўсталявалі, будзе абнаўляць сертыфікаты аўтаматычна. Для тэставання працэсу абнаўлення мы можам зрабіць "сухі" запуск (dry run) 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. Для гэтага мы створым новага карыстальніка, назавем яго webmaster:

$ 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. З базай дадзеных MySQL можна зручна працаваць праз звыклы phpMyAdmin.
  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.

Крыніца: habr.com

Дадаць каментар