Установка пакетов:

# 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;
 }
 }
}