FirstVDS установка и конфигурация VPS Debian Nginx PHP7.0-FPM

Уровень сложности: 

На FirstVDS есть дешёвый тариф Разминка - за 90р в месяц VPS 512МБ ОЗУ, диск 10Гб, 1 ip, трафик безлимитный.
Чтобы направить сайт на сервер, на котором не предоставлены серверы имён (nameservers), надо пользоваться бесплатным DNS-хостингом, например,1gb.ru.

Промо-код для FistVDS 2016: 648497997

 

Установка PHP7.0-FPM Nginx на Debian 8

Описана тут: http://mihail.space/post/lokalnyi-veb-server-v-debian-jessie-s-php7-dla-...

кроме описанных в статье действий, вот эти пакеты надо ставить:

  1. apt-get install php7.0-mysql php7.0-curl php7.0-redis php7.0-gd
  2. apt-get install php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-opcache -y
  3. service php7.0-fpm restart && /etc/init.d/nginx restart

 

Конфигурационные файлы сервера PHP7.0-FPM для Drupal 8

Настройка Nginx

  1. # cat /etc/nginx/nginx.conf
  2.  
  3. user www-data www-data;
  4. worker_processes 1;
  5. worker_priority -20;
  6.  
  7. error_log /var/log/nginx/error.log warn;
  8. pid /var/run/nginx.pid;
  9.  
  10.  
  11. events {
  12. worker_connections 1024;
  13. accept_mutex on;
  14. multi_accept on;
  15. }
  16.  
  17.  
  18. http {
  19. include /etc/nginx/mime.types;
  20. default_type application/octet-stream;
  21.  
  22. reset_timedout_connection on;
  23. server_tokens off;
  24.  
  25. log_format main '$remote_addr - [$time_local]'
  26. '$host "$request" $status $body_bytes_sent '
  27. '"$http_referer" "$http_user_agent" '
  28. '"$gzip_ratio" $upstream_response_time'
  29. '"$http_x_forwarded_for"';
  30.  
  31. sendfile on;
  32. tcp_nopush on;
  33. tcp_nodelay on;
  34.  
  35. keepalive_timeout 65;
  36.  
  37. client_max_body_size 512m;
  38.  
  39. server_names_hash_max_size 1024;
  40. server_names_hash_bucket_size 128;
  41.  
  42. port_in_redirect off;
  43.  
  44. gzip on;
  45. gzip_vary on;
  46. gzip_min_length 1024;
  47. gzip_buffers 16 8k;
  48. gzip_comp_level 5;
  49. gzip_http_version 1.0;
  50. gzip_proxied any;
  51. gzip_disable "msie6";
  52. gzip_types text/plain text/css application/x-javascript text/xml
  53. application/xml application/xml+rss text/javascript
  54. text/json;
  55.  
  56. fastcgi_temp_path /var/cache/nginx/fastcgi_temp;
  57. proxy_temp_path /var/cache/nginx/proxy_temp;
  58.  
  59. charset utf-8;
  60. index index.php index.html index.htm;
  61.  
  62. access_log off;
  63. error_log /dev/null;
  64.  
  65. set_real_ip_from 1.2.3.4/32;
  66. real_ip_header X-Real-IP;
  67.  
  68. include /etc/nginx/sites-enabled/*;
  69. }

Настройка Fastcgi

  1. # cat /etc/nginx/fastcgi_params
  2.  
  3. fastcgi_pass 127.0.0.1:9000;
  4. fastcgi_index index.php;
  5.  
  6. fastcgi_split_path_info ^(.+\.php)(/.+)$;
  7.  
  8. fastcgi_param PATH_INFO $fastcgi_path_info;
  9.  
  10. fastcgi_param QUERY_STRING $query_string;
  11. fastcgi_param REQUEST_METHOD $request_method;
  12. fastcgi_param CONTENT_TYPE $content_type;
  13. fastcgi_param CONTENT_LENGTH $content_length;
  14.  
  15. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  16. fastcgi_param REQUEST_URI $request_uri;
  17. fastcgi_param DOCUMENT_URI $document_uri;
  18. fastcgi_param SERVER_PROTOCOL $server_protocol;
  19.  
  20. fastcgi_param SCRIPT_URI $scheme://$host$request_uri;
  21.  
  22. fastcgi_param GATEWAY_INTERFACE CGI/1.1;
  23. fastcgi_param SERVER_SOFTWARE nginx;
  24.  
  25. fastcgi_param REMOTE_ADDR $remote_addr;
  26. fastcgi_param REMOTE_PORT $remote_port;
  27. fastcgi_param SERVER_ADDR $server_addr;
  28. fastcgi_param SERVER_PORT $server_port;
  29. fastcgi_param SERVER_NAME $server_name;
  30.  
  31. fastcgi_param Host $host;
  32. fastcgi_param HTTP_X_REAL_IP $remote_addr;
  33. fastcgi_param HTTP_X_FORWARDED_FOR $remote_addr;
  34.  
  35. fastcgi_param Range "";
  36. fastcgi_param Request-Range "";
  37.  
  38. fastcgi_buffer_size 128k;
  39. fastcgi_buffers 4 256k;
  40. fastcgi_busy_buffers_size 256k;
  41. fastcgi_temp_file_write_size 256k;
  42.  
  43. fastcgi_connect_timeout 600;
  44. fastcgi_send_timeout 600;
  45. fastcgi_read_timeout 600;

 

Настройка php7.0-fpm

Настройка главного файла пула

# nano /etc/php/7.0/fpm/pool.d/www.conf

listen = /run/php/php7.0-fpm.sock измените на
listen = 127.0.0.1:9000
pm.max_requests = 500 измените на
pm.max_requests = 1500

Настройка пула сайта. Обязательно добавлять пул для каждого сайта. Если вам известен более простой способ, напишите на drupal.ru.

  1. # cat /etc/php/7.0/fpm/pool.d/site.ru.conf
  2.  
  3. [site.ru]
  4. user = master
  5. group = www-data
  6. listen = 127.0.0.1:9001
  7. pm = dynamic
  8. pm.max_children = 5
  9. pm.start_servers = 2
  10. pm.min_spare_servers = 1
  11. pm.max_spare_servers = 3
  12. pm.max_requests = 1500
  13. security.limit_extensions = .php
  14. php_admin_value[error_log] = /home/master/domains/site.ru/logs/fpm-php.www.error.log
  15. php_admin_flag[log_errors] = on
  16. php_admin_value[memory_limit] = 256M
  17. php_admin_value[open_basedir] = "/home/master:."/etc/init.d/nginx restart
  18. php_admin_value[upload_tmp_dir] = "/home/master/tmp"
  19. php_admin_value[session.save_path] = "/home/master/tmp"

service php7.0-fpm restart

 

Конфигурация хоста сайта на Drupal 8

  1. # cat /etc/nginx/sites-available/site.ru
  2.  
  3. server {
  4. server_name www.site.ru .site.ru;
  5. root /home/master/domains/site.ru/www;
  6.  
  7. location = /favicon.ico {
  8. log_not_found off;
  9. access_log off;
  10. }
  11.  
  12. location = /robots.txt {
  13. allow all;
  14. log_not_found off;
  15. access_log off;
  16. }
  17.  
  18. # Very rarely should these ever be accessed outside of your lan
  19. location ~* \.(txt|log)$ {
  20. allow 192.168.0.0/16;
  21. deny all;
  22. }
  23.  
  24. location ~ \..*/.*\.php$ {
  25. return 403;
  26. }
  27.  
  28. location ~ ^/sites/.*/private/ {
  29. return 403;
  30. }
  31.  
  32. location ~ (^|/)\. {
  33. return 403;
  34. }
  35.  
  36. location / {
  37. try_files $uri /index.php?$query_string; # For Drupal >= 7
  38. }
  39.  
  40. location @rewrite {
  41. rewrite ^/(.*)$ /index.php?q=$1;
  42. }
  43.  
  44. # Don't allow direct access to PHP files in the vendor directory.
  45. location ~ /vendor/.*\.php$ {
  46. deny all;
  47. return 404;
  48. }
  49.  
  50. location ~ '\.php$|^/update.php' {
  51. fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
  52. include /etc/nginx/fastcgi_params;
  53.  
  54. fastcgi_param SCRIPT_FILENAME /home/master/domains/site.ru/www$fastcgi_script_name;
  55. fastcgi_param DOCUMENT_ROOT /home/master/domains/site.ru/www;
  56.  
  57. fastcgi_param PHP_ADMIN_VALUE upload_tmp_dir=/home/master/domains/site.ru/tmp/upload;
  58. fastcgi_param PHP_ADMIN_VALUE session.save_path=/home/master/domains/site.ru/tmp/sessions;
  59. }
  60.  
  61. # Fighting with Styles? This little gem is amazing.
  62. location ~ ^/images/styles/ { # For Drpal >= 7
  63. try_files $uri @rewrite;
  64. }
  65.  
  66. location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
  67. expires max;
  68. log_not_found off;
  69. }
  70. }

 

  1. service php7.0-fpm restart
  2. service nginx restart

 

Администрирование баз данных MySQL

Вместо PHPmyadmin, который сложно настроить и слишком большой, можно использовать скрипт https://www.adminer.org, который состоит всего из 1 файла и не требует настройки хоста и прочих конфигураций. Просто скачайте файл, загрузите в любую папку вашего сайта и откройте: сайт.рф/adminer.php

Рубрика: