Установка пакетов:
# apt-get install mariadb-server nginx php7.0-fpm certbot
На моём VPS мало ОЗУ (всего лишь 256 МБ), поэтому InnoDB не запускался. Для этого надо сократить размер алоцируемой памяти. Для этого в конфиг /etc/mysql/mariadb.conf.d/50-server.cnf в группу опции * InnoDB:
# innodb_buffer_pool_size=64M
# innodb_buffer_pool_instances=1
Когда установка будет завершена, убедитесь, что Nginx и PHP-FPM запущены и включены для запуска при загрузке:
# systemctl status nginx php7.0-fpm
Если видите, что какая-то из служб не работает, тогда выполните:
# systemctl start nginx php7.0-fpm
# systemctl enable nginx php7.0-fpm
Как и в случае с установкой MariaDB или MySQL, важно запустить mysql_secure_installation, чтобы выполнить минимальную конфигурацию безопасности и установить пароль для учетной записи root.
# mysql_secure_installation
Настройка Nginx для использования PHP-FPM на Debian 9
Основным файлом конфигурации Nginx является /etc/nginx/sites-available/default, где нам нужно внести следующие изменения внутри блока сервера:
- Убедитесь, что блок местоположения, который обрабатывает запросы PHP, включен, за исключением того, где директива fastcgi_pass указывает на UNIX сокет.
- Добавьте index.php после директивы index, чтобы указать, что если он найден, он должен быть подан по умолчанию перед index.html или другими файлами.
- Добавьте директиву server_name, указывающую на IP-адрес или имя хоста вашего сервера. Это будет 192.168.0.35 в нашем случае.
- Кроме того, убедитесь, что директива root указывает на место, где будут храниться ваши .php-файлы (/var/www/html по умолчанию).
Генерация Lets Encrypt SSL сертификатов:
certbot certonly --standalone --agree-tos --email admin@host -w /var/www/er0p.org -d er0p.org -d www.er0p.org
Вот пример итогового конфигурационного файла nginx.conf с включенным ssl и редиректом с http на https:
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on; #disable Nagle algorithm
keepalive_timeout 65;
types_hash_max_size 2048;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/json;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_comp_level 6;
server {
listen 80 default_server;
server_name er0p.org www.er0p.org;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name er0p.org www.er0p.org localhost;
ssl on;
ssl_session_timeout 30m;
ssl_certificate /etc/letsencrypt/live/er0p.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/er0p.org/privkey.pem;
root /var/www/er0p.org;
index index.php index.html index.htm;
index index.php index.html index.htm;
location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
access_log off;
expires max;
}
location /admin {
index index.php;
}
rewrite ^/sitemap.xml$ /index.php?route=feed/google_sitemap last;
rewrite ^/googlebase.xml$ /index.php?route=feed/google_base last;
rewrite ^/download/(.*) /index.php?route=error/not_found last;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
}
}