Устанавливаем и настраиваем Эгею на nginx + php-fpm

Установил Эгею на пустой Ubuntu Server в Digital Ocean. Вместо богомерзкого Apache — кошерный nginx и php-fpm, база данных — MariaDB. Домен куплен в GoDaddy.

Если хотите — повторяйте. Гарантий работоспособности, как водится, никаких. Обратите внимание — почти в каждой команде есть заглушки, поэтому перед тем, как её выполнять, исправьте их на актуальные значения.

Заходим в консоль и логинимся на сервер по паролю или ключу (подробное руководство — у вашего хостера или в Гугле):

ssh root@домен_или_ip_адрес

Обновляем всё, что есть, потом качаем и устанавливаем всё, до чего дотянемся, затем открываем порты и устанавливаем права доступа:

apt-get update && apt-get upgrade && apt-get install mariadb-server mariadb-client php-fpm php-mysql php-mbstring php-xml php-zip php-curl php-gd php-imagick php-bcmath unzip certbot python3-certbot-nginx && ufw allow 80/tcp && ufw allow 443/tcp && ufw allow 22/tcp && ufw enable && cd путь_до_папки_с_сайтом && wget https://blogengine.ru/download/e2_distr_v4098.zip && unzip e2_distr_v4098.zip && rm e2_distr_v4098.zip && chgrp -R www-data путь_до_папки_с_сайтом && chmod -R g+w путь_до_папки_с_сайтом && find путь_до_папки_с_сайтом -type d -exec chmod 2775 {} \; && find путь_до_папки_с_сайтом -type f -exec chmod ug+rw {} \; && mysql_secure_installation

Отвечаем на вопросы:

Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Создаём базу данных и пользователя для работы с ней. Данные для доступа к базе данных понадобятся на последнем шаге, не потеряйте их:

mysql -u root -p -e "CREATE USER 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль'; CREATE DATABASE имя_базы_данных; GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'localhost'; FLUSH PRIVILEGES; exit"

Открываем конфиг сайта по умолчанию nginx:

nano /etc/nginx/sites-available/default

Полностью меняем содержимое:

server {
listen 80; 
root путь_до_папки_с_сайтом; 
client_max_body_size 64m; 
server_name ваш_домен_без_www ваш_домен_с_www;

location / {
index index.php; 
log_not_found off; 
try_files $uri $uri/ @rewrite; }

location @rewrite {
rewrite ^/(.*)$ /index.php?go=$1 last; }

location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_index index.php; }

location ~ /\.ht {
deny all; }

location ~ \.psa$ {
deny all; }

location ~* ^.+\.(jpg|jpeg|gif|css|html|htm|png|js)$ {
access_log off;
expires 30d; } }

Устанавливаем сертификат SSL. Понадобится ввести свой адрес электронной почты, согласиться с правилами и разрешить (или нет) слить его в базу данных LetsEncrypt. Certbot сам внесёт правки в конфиг nginx и позаботится о продлении сертификата, поэтому всё, что нужно сделать — просто выполнить команду:

certbot --nginx -d ваш_домен_без_www -d ваш_домен_с_www

Заставляем Эгею использовать правильные ссылки по рецепту из руководства. Для этого открываем файл:

nano путь_до_папки_с_сайтом/user/config.php

И копируем в него строку (не забудьте сохратить файл):

$_config['url_composition'] = 'synthetic'; /* 'auto', 'real', 'synthetic' */

Перезагружам nginx и php-fpm:

systemctl restart nginx && systemctl restart php-fpm

Заходим к себе на сайт:

https://ваш_домен

Следуем официальной инструкции и пытаемся понять, зачем всё это сделали.

Отправить
Поделиться
2 комментария
Aleksandr Slepchenkov 2023

Богомерзкий Apache, но при этом php есть 🤪

Автор блога 2023

Уел. Один — ноль, в твою пользу!

Алексей 7 мес

Что-то с полностью новостью не так сейчас у вас. Чтобы перейти в комментарии на данном сайте, кинуло на ip (159.89.102.168/all/setting-up-aegea-on-nginx-and-php-fpm/#comments) + без валидного сертификата. В остальном — большое спасибо. Хочу попробовать засунуть сайт в дроплет выделенный под vpn.