Содержание

Nginx+MariaDB+PHP

Установим веб-сервер

title
sudo apt-get update
sudo apt-get install nginx

Установим СУБД

title
apt-get install mariadb-server mariadb-client

Настроим СУБД

Создадим пользователя(в mariadb по умолчанию нельзя входить под root через phpmyadmin).

title
mariadb
 
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Добавление пароля для root

title
mysql_secure_installation
Enter current password for root (enter for none): Y
Set 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

Установим PHP

title
apt-get install php-fpm php-mysql

Настроим обработчик PHP

title
mcedit /etc/php/7.0/fpm/php.ini
cgi.fix_pathinfo=0

Выполним команду:

title
systemctl restart php7.0-fpm.service

Настроим веб-сервер

Примерный вид файла /etc/nginx/sites-available/default:

title
mcedit /etc/nginx/sites-available/default
 
server {
    listen 80 default_server;
    listen [::]:80 default_server;
 
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
 
    server_name доменное имя сервера;
 
    location / {
        try_files $uri $uri/ =404;
    }
 
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
 
    location ~ /\.ht {
        deny all;
    }
}

перезапустим nginx

title
services nginx restart

Проверим PHP

title
mcedit /var/www/html/test.php
 
<?php
phpinfo();
?>

зайдем через браузер: доменное имя или ip адрес/test.php если появилась инфа о PHP, значит все норм.

Установка phpmyadmin

title
apt-get install phpmyadmin

1-й для какого веб-сервера будем конфигурировать? ничего не выбираем нажимаем «ОК»; 2-й настроить базу данных для phpmyadmin? нажимаем «Да»; 3-й вводим 2 раза пароль.

title
apt-get install php7.0-mcrypt
title
ln -s /usr/share/phpmyadmin /var/www/html
phpenmod mcrypt
systemctl restart php7.0-fpm.service
systemctl reload nginx.service

зайдем через браузер: доменное имя или ip адрес/phpmyadmin

Примерное создание виртуальных хостов:

title
cd /etc/nginx/sites-available/
cp default test.ru

Создадим папку для файлов сайта

title
mkdir -p /var/www/test.ru

Поправим /etc/nginx/sites-available/test.ru

title
mcedit /etc/nginx/sites-available/test.ru
 
server {
    listen 80;
    listen [::]:80;
 
    root /var/www/test.ru;
    index index.php index.html index.htm index.nginx-debian.html;
 
    server_name test.ru;
    
    rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last; # для moodle
 
    location / {
        try_files $uri $uri/ =404;
    }
 
    location ~ \.php$ {
      
      fastcgi_buffer_size 32k;
      fastcgi_buffers 4 32k;
    
        include snippets/fastcgi-php.conf; # если у joomla в админке нет стилей и падает 404, то надо закомментировать   
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	include fastcgi_params;
	fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
 
    location ~ /\.ht {
        deny all;
    }
}

Добавим симлинк

title
ln -f /etc/nginx/sites-available/test.ru /etc/nginx/sites-enabled/test.ru
 
ngnix -t
(Вывод команды: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful)
 
systemctl reload nginx.service

заходим через браузер на test.ru

установим бесплатные серты

title
apt-get install letsencrypt
certbot certonly --standalone -d test.ru

ответим на вопросы. введем адрес почты и согласимся с лиц. соглашением.

Добавим несколько строк:

code
mcedit /etc/nginx/sites-available/test.ru
 
 listen 443 ssl;
 
        ssl_certificate /etc/letsencrypt/live/test.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/test.ru/privkey.pem;
 

Обновим бесплатные серты по их истечению

(я обновлял за ~30 дней до окончания)

code
service nginx stop
certbot renew --force-renewal   

ГОТОВО!

Этого достаточно для того что бы посмотреть на свой сайт. остальное в документации =)