Четверг, 05 сентября 2024 14:26

Как создать и настроить свой веб-сервер на VDS

Оцените материал
(0 голосов)

Лето уходит. За окном сентябрь, но по-прежнему изнуряюще душно. Странно, питерское лето детства осталось на памяти как два месяца дождей, и лишь недели три, четыре - жара. Что-то явно сломалось с тех давних пор в датском королевстве, и это касается не только войны, санкций и других невеселых новостей.

 

Как самому поднять на VDS свой веб-сервер
Как самому поднять на VDS свой веб-сервер

 

Что же, в антитезу рефлексиям самое время заняться установкой и тюнингом веб-сервера.

Обычно работаю с rpm-based дистрибутивами линукса: RHEL, Centos, Fedora, OpenSUSE. Имеющий место быть далее порядок действий я изложил, открыв историю команд на веб-сервере под Centos Stream 9. Отлично, поехали.

Сходу обозначу ряд моментов: все манипуляции описаны на основе работы с инстансом AWS, который по-прежнему без особых проблем доступен для граждан России, при условии наличия счета в иностранном банке, конечно. В принципе, проблема несложно решается путем взаимодействия с друзьями-знакомыми, уехавшими из страны.

На момент публикации данного материала - AWS при регистрации легко и непринужденно проглатывает номер мобильного телефона российских операторов. Вам лишь нужно указать Казахстан в качестве своей страны, у казахов (пока что) тоже префикс +7. Контрольная эсэмэска от AWS единожды придет на ваш смартфон без малейших проблем.

Обратите внимание, когда речь об Amazon Web Service - нет нужды настраивать firewall. Он уже настроен уровнем выше вашего линукса, по умолчанию открыт лишь ssh, вы можете дополнительно открыть другие порты, при необходимости, в веб-консоли AWS.

Обновление дистрибутива. Первое, что необходимо сделать после того, как вы войдете по ssh на свой виртуальный сервер:

sudo dnf update --refresh
sudo reboot

 

Второе, что необходимо. Здесь напомню, первый год работы на AWS для вас бесплатен, но при условии крайне ограниченных ресурсов. Например, instance type t3.micro, доступный на Free Tier, предусматривает лишь 1GB RAM, зато позволен объем физической памяти до 30 GB. Отсюда следует, что нам нужен файл подкачки. Как его сформировать, описано в конце этой статьи.

EC2 Free Tier

The EC2 Free Tier lets you explore and experiment with EC2 at no cost. You get a limited amount of free access to EC2 for 12 months, starting when you sign up for an AWS account.

Once your usage exceeds the Free Tier limits, or you’ve been an AWS customer for more than 12 months, we start charging you for usage. Therefore, it’s crucial that you keep track of your usage to avoid billing surprises.

When we calculate your Free Tier usage, we count all the resources you’re using in all the AWS Regions. To easily locate and manage your EC2 resources across all the different AWS Regions, you can use the EC2 Global View.

 

Заметьте, ничто не мешает вам реализовать описанный алгоритм настройки сервера в любом другом, помимо AWS, облаке.

 

Поставим Midnight Commander, либо иной, на ваш выбор, файловый менеджер:

sudo dnf install mc

 

Далее PHP. Очень рекомендую репозиторий Remi, там находим отличный wizard, который, в зависимости от требуемой версии PHP и дистрибутива, предлагает простую последовательность команд установки. Например, чтобы установить PHP 8.3 на Centos мне понадобилось следующее:

sudo dnf config-manager --set-enabled crb
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf module install php:remi-8.3
sudo dnf install php-opcache

 

База данных Mariadb:

sudo curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo dnf install MariaDB-server MariaDB-client
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo systemctl status mariadb
sudo mariadb-secure-installation

 

Как-то так. Впрочем, всегда можно уточнить актуальную процедуру инсталляции на сайте разработчиков, также здесь, на форуме.

Редактируем конфигурационный файл MariaDB:

sudo mcedit -b /etc/my.cnf

 

Оттолкнуться можно от простого, учитывая, опять-таки, что сервер у нас явно не космический:

[mysqld]
innodb_buffer_pool_size = 128M
innodb_log_buffer_size = 32M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
init_connect='SET collation_connection = utf8_unicode_ci'
character-set-server = utf8
collation-server = utf8_unicode_ci
[client]
default-character-set = utf8
[mysqld_safe]
# log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
sudo service mariadb restart

 

Ставим апач:

sudo dnf in httpd
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
sudo service httpd restart

 

phpMyAdmin:

sudo dnf in phpmyadmin

 

Редактируем два файла, как описано здесь. Очень вероятно, пригодятся две эти странички форума: раз и два.

Слегка тюнингуем, при желании, префорк апача. Возможно, поможет сохранить сервер на плаву, если накинется ботосетка. Впрочем, сахар, соль и фломастеры сугубо по вкусу:

sudo mcedit -b /etc/httpd/conf.modules.d/00-mpm.conf

 

Полностью рабочий пример можно глянуть, как всегда, на форуме.

Не забываем про отправку писем (посредством внешнего SMTP сервера в данном случае, подробнее), разрешаем апачу доступ вовне:

sudo setsebool -P httpd_can_network_connect 1
sudo dnf in openssl mod_ssl

 

Если у вас несколько сайтов, вам понадобится virtualhost:

sudo mcedit -b /etc/httpd/conf.d/vhosts.conf

 

Примеров конфигов в Сети немало. Например, так:

<VirtualHost *:443>
ServerName vash_site
DocumentRoot /var/www/vash_site
ErrorLog /var/www/logs/vash_site_ssl.error.log
CustomLog /var/www/logs/vash_site_ssl.access.log common
SSLEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
SSLCompression off
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

<Directory /var/www/vash_site>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/vash_site/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/vash_site/privkey.pem
</VirtualHost>

 

Как видите, в данном случае Virtual Host Configuration File сконфигурирован с учетом того, что вы используете бесплатный трехмесячный сертификат LetsEncrypt, автоматически обновляемый посредством certbot:

sudo dnf install epel-release
sudo dnf in snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
sudo reboot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache

 

Впрочем, оптимально воспользоваться инструкциями страницы разработчика.

Перенос сертификата и настроек cerbot с другого сервера.

SSL/TLS Strong Encryption: настройка безопасного HTTPS для Apache, статья на тему. В общем, если вы ограничитесь включением OCSP Stapling, этого для начала вполне достаточно:

SSLUseStapling On
SSLStaplingCache shmcb:/run/httpd/ssl_stapling(32768)

 

Если ваш веб-сервер предназначен для публикации сайта под управлением Joomla - вам, вероятно, пригодится описание Joomla CLI в контексте работы с cron. По ссылке.

 

Вот, в принципе, и все, о чем хотел сегодня рассказать. Ряд статей блога, часть которых послужила основой этого краткого обзора - по тегу Red Hat Enterprise Server, легко найдете на этой страничке. Вопросы, если возникнут - как обычно, на форуме. До встречи.

Последнее изменениеЧетверг, 05 сентября 2024 18:54

Оставить комментарий

Добавьте ваш комментарий

Text To Speech

All sorts of things

Комментарии в блоге

  • Aleksej Yes. You can see it, I switched the temperature from C to F in the module on this page (Costa… 2024-10-01 21:43:42
    jWeather by ip. Погода по ip для Joomla!
  • Anne Is it possible to change temperature to F vs C? 2024-10-01 18:55:58
    jWeather by ip. Погода по ip для Joomla!
  • Aleksej Первое, что бросается в глаза: период времени, прошедший между тем, как автор комментария разбросал аналогичный текст по нескольким интернет-площадкам рунета,… 2024-07-02 14:10:05
    Tobeamerica эмансипе
  • Валерий Л. Предыдущий отзыв неактуален. Это было недоразумение, мы его уладили. Компания вернула мне деньги, никаких претензий к ней я не имею.… 2024-07-01 17:10:43
    Tobeamerica эмансипе
  • Евгения Кличко Спасибо. 2024-06-25 01:03:32
    Joomla cache. Problems and solutions

ReactJS