Cloud for Charities: Ръководство за миграция

Cloud for Charities: Ръководство за миграция

Неотдавна Mail.Ru Cloud Solutions (MCS) и услугата Dobro Mail.Ru стартираха проекта „Облак за благотворителност”, благодарение на които организациите с нестопанска цел могат да получат безплатно ресурсите на облачната платформа MCS. Благотворителна фондация "Аритметика на доброто» взе участие в проекта и успешно внедри част от своята инфраструктура, базирана на MCS.

След като премине валидирането, NPO може да получи виртуален капацитет от MCS, но по-нататъшното конфигуриране изисква определени квалификации. В този материал искаме да споделим конкретни инструкции за настройка на сървър, базиран на Ubuntu Linux, за да изпълнява основния уебсайт на основата и редица поддомейни, използвайки безплатни SSL сертификати. За мнозина това ще бъде просто ръководство, но се надяваме, че нашият опит ще бъде полезен и за други организации с нестопанска цел, а не само.

FYI: Какво можете да получите от MCS? 4 процесора, 32 GB RAM, 1 TB HDD, Ubuntu Linux OS, 500 GB памет за обекти.

Стъпка 1: стартирайте виртуалния сървър

Нека да преминем направо към въпроса и да създадем нашия виртуален сървър (известен още като „инстанция“) във вашия личен акаунт в MCS. В магазина за приложения трябва да изберете и инсталирате готов LAMP стек, който е набор от сървърен софтуер (LAMP = Linux, Apache, MySQL, PHP), необходим за стартиране на повечето уебсайтове.

Cloud for Charities: Ръководство за миграция
Cloud for Charities: Ръководство за миграция
Cloud for Charities: Ръководство за миграция
Изберете подходящата конфигурация на сървъра и създайте нов SSH ключ. След като щракнете върху бутона „Инсталиране“, инсталирането на сървъра и LAMP стека ще започне, това ще отнеме известно време. Системата също ще предложи да изтеглите частен ключ на вашия компютър, за да управлявате виртуалната машина през конзолата, запазете го.

След като инсталирате приложението, нека незабавно да настроим защитната стена, това също се прави във вашия личен акаунт: отидете в секцията „Облачни изчисления -> Виртуални машини“ и изберете „Настройка на защитната стена“:

Cloud for Charities: Ръководство за миграция
Трябва да добавите разрешение за входящ трафик през порт 80 и 9997. Това е необходимо в бъдеще за инсталиране на SSL сертификати и за работа с phpMyAdmin. В резултат наборът от правила трябва да изглежда така:

Cloud for Charities: Ръководство за миграция
Сега можете да се свържете с вашия сървър чрез командния ред, като използвате 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

Вашият уеб сървър вече трябва да има необходимите разрешения за показване на съдържанието. Освен това вашият потребител вече има възможността да създава съдържание в необходимите директории.

Вече има файл index.php в директорията /var/www/html, нека го копираме в нашите нови директории - това ще бъде нашето съдържание за сега:

$ 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 

По подразбиране порт 80 е затворен в LAMP и ще ни трябва по-късно, за да инсталираме SSL сертификат. Така че нека веднага редактираме файла ports.conf и след това да рестартираме Apache:

$ sudo nano /etc/apache2/ports.conf

Добавете нов ред и запазете файла, така че да изглежда така:

Listen 80
Listen 443
Listen 9997

След като завършите настройките, трябва да рестартирате Apache, за да влязат в сила всички промени:

$ sudo systemctl reload apache2

Стъпка 3: Настройте имена на домейни

След това трябва да добавите DNS записи, които ще сочат към вашия нов сървър. За управление на домейни нашата фондация Arithmetic of Good използва услугата dns-master.ru, ще я покажем с пример.

Създаването на A-запис за основния домейн обикновено се обозначава по следния начин (знак @):

Cloud for Charities: Ръководство за миграция
Записът A за поддомейни обикновено се определя по следния начин:

Cloud for Charities: Ръководство за миграция
IP адресът е адресът на Linux сървъра, който току-що създадохме. Можете да посочите TTL = 3600.

След известно време ще бъде възможно да посетите вашия сайт, но засега само чрез http://. В следващата стъпка ще добавим поддръжка https://.

Стъпка 4: Настройте безплатни SSL сертификати

Можете да получите безплатни Let's Encrypt SSL сертификати за вашия основен сайт и всички поддомейни. Можете също така да конфигурирате автоматичното им подновяване, което е много удобно. За да получите 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, той ще получи оценка 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. Можете удобно да работите с базата данни 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 облака.

Източник: www.habr.com

Добавяне на нов коментар