Nginx+MariaDB+PHP
==== Установим веб-сервер ====
sudo apt-get update
sudo apt-get install nginx
==== Установим СУБД ====
apt-get install mariadb-server mariadb-client
==== Настроим СУБД ====
Создадим пользователя(в mariadb по умолчанию нельзя входить под root через phpmyadmin).
mariadb
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Добавление пароля для root
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 ====
apt-get install php-fpm php-mysql
Настроим обработчик PHP
mcedit /etc/php/7.0/fpm/php.ini
cgi.fix_pathinfo=0
Выполним команду:
systemctl restart php7.0-fpm.service
==== Настроим веб-сервер ====
Примерный вид файла /etc/nginx/sites-available/default:
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
services nginx restart
==== Проверим PHP ====
mcedit /var/www/html/test.php
зайдем через браузер: доменное имя или ip адрес/test.php если появилась инфа о PHP, значит все норм.
==== Установка phpmyadmin ====
apt-get install phpmyadmin
1-й для какого веб-сервера будем конфигурировать? ничего не выбираем нажимаем «ОК»;
2-й настроить базу данных для phpmyadmin? нажимаем «Да»;
3-й вводим 2 раза пароль.
apt-get install php7.0-mcrypt
ln -s /usr/share/phpmyadmin /var/www/html
phpenmod mcrypt
systemctl restart php7.0-fpm.service
systemctl reload nginx.service
зайдем через браузер: доменное имя или ip адрес/phpmyadmin
==== Примерное создание виртуальных хостов: ====
cd /etc/nginx/sites-available/
cp default test.ru
Создадим папку для файлов сайта
mkdir -p /var/www/test.ru
Поправим /etc/nginx/sites-available/test.ru
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;
}
}
Добавим симлинк
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
==== установим бесплатные серты ====
apt-get install letsencrypt
certbot certonly --standalone -d test.ru
ответим на вопросы. введем адрес почты и согласимся с лиц. соглашением.
Добавим несколько строк:
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 дней до окончания)
service nginx stop
certbot renew --force-renewal
**ГОТОВО!**
Этого достаточно для того что бы посмотреть на свой сайт. остальное в документации =)