Подготовка Nginx и PHP-FPM окружения для запуска Wordpress-сайта


Установка, настройка, доработка и поддержка PHP-приложений
fpm mysql nginx php server
 
 

* В этом блоге я описываю свою повседневную рабочую практику, поэтому все статьи в блоге написаны лично мной и при копировании их на свой сайт пожалуйста указывайте ссылку на страницу откуда вы скопировали.
* Если какая-то статья вам помогла, то вы можете дать мне немного денег вместо простого спасибо (ссылка на форму поддержки проекта внизу страницы), если вы что-то не поняли или у вас что-то не получается, то вы можете нанять меня и я вам все подробно расскажу (расценки и ссылки в конце статьи).


(последние правки 6 дней, 18 часов)

И это видимо самая типовая задача из тех с которыми мне приходится сталкиваться, но я на всякий случай ее опишу.

Устанавливаем  PHP-FPM и Nginx:

# aptitude install nginx
# aptitude install php-fpm

Устанавливаем дополнительные модули PHP:

# aptitude install php7.0-mysql php-zip
# aptitude install php-cli php-dev php-cgi php-mysql php-xmlrpc php-curl php-gd php-pear php-imap php-mcrypt php-pspell

Конфигурация Nginx для запуска Wordpress как PHP-FPM приложения выглядит следующим образом:

server {
    listen 80;
    server_name staging.avtoshkola-vl.ru;
    return 301 https://staging.avtoshkola-vl.ru$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/staging.avtoshkola-vl.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/staging.avtoshkola-vl.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    server_name staging.avtoshkola-vl.ru;

    access_log /var/log/nginx/staging.avtoshkola-vl.ru.log;
    error_log /var/log/nginx/staging.avtoshkola-vl.ru-error.log;

    #add_header Strict-Transport-Security "max-age=63072000;";
    client_max_body_size 256M;

    root /var/www/staging.avtoshkola-vl.ru/;
    index index.php;

    gzip on; # включаем сжатие gzip
    gzip_disable "msie6";
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

    location ~ /\. {
        deny all;
    }

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all; # запрет для загруженных скриптов
    }

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off;
        log_not_found off;
        expires max; # кеширование статики
    }

    location / {
        try_files $uri $uri/ /index.php?$args; # permalinks
    }

    location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
    }
}

Дополнительно для работы Wordpress требуется установить Mysql:

# add-apt-repository -y ppa:ondrej/mysql-5.6
# apt-get update
# aptitude install mysql-server-5.7

Опционально можно использовать GUI для Mysql (для локальной разработки):

# aptitude install mysql-workbench
Моя официальная страница на FaceBook
Мой микроблог в твиттер

Как вы наверное понимаете, бесплатно сейчас работать никто не будет и если ответ на ваш вопрос потребует больше трех минут времени и вам требуется полноценная консультация, то расценки на мои услуги представленны ниже.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .