Веб-сервер на Ununtu — php5/7/8, nginx+php-fpm, mysql

Дмитрий Корнев
23 октября 2019

Система Ubuntu хороша для десктопного использования. Настройка веб-сервера на Ubuntu — это обычно среда разработки. Если вам необходим веб-cервер для рабочей копии сайта, то лучше использовать Debian. Полное руководство по теме.

Для рабочей копии сайта использовать Ubuntu стоит только в том случае, если софт, который вы будете использовать, требует обязательно этой системы и там в требованиях четко прописано, что Debian не подойдет. Такое встречается крайне редко.

Чтобы каждый раз не вводить sudo введем один раз:

sudo su

PHP

Подключение репозитория для установки одновременно нескольких разных версий PHP:

add-apt-repository ppa:ondrej/php

Теперь ставим нужные версии:

apt install php5.6-fpm php5.6-cli php5.6-common php5.6-curl php5.6-mbstring php5.6-mysql php5.6-xml php5.6-gd php5.6-zip php5.6-bcmath
apt install php7.4-fpm php7.4-cli php7.4-common php7.4-curl php7.4-mbstring php7.4-mysql php7.4-xml php7.4-gd php7.4-zip php7.4-bcmath
apt install php8.1-fpm php8.1-cli php8.1-common php8.1-curl php8.1-mbstring php8.1-mysql php8.1-xml php8.1-gd php8.1-zip php8.1-bcmath

Установка специально с указанием конкретных компонентов, чтобы не ставить Apache.

Конфиги располагаются здесь /etc/php/версия/fpm/php.ini.

После их настройки перезагрузка, соответственно:

service php5.6-fpm reload
service php7.4-fpm reload
service php8.1-fpm reload

Nginx

Установка Nginx:

apt install nginx

Простой пример конфига для сайта:

server {
    listen 80;
    listen [::]:80;
    server_name d1mon.com;
    root /var/www/d1mon.com;
    index index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # Используем PHP нужной версии.
        # fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        # fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    access_log /var/log/nginx/d1mon_access.log;
    error_log /var/log/nginx/d1mon_error.log;
}

Конфиг записывается в файл с произвольным именем, но в определенный каталог.

Удобно назвать его доменом сайта /etc/nginx/sites-available/d1mon.com.

Активация конфига:

ln -s /etc/nginx/sites-available/d1mon.com /etc/nginx/sites-enabled/d1mon.com

Перезагрузка Nginx:

service nginx reload

MySQL

Установка:

apt install mysql-server

Для Ubuntu по умолчанию все настроено так, чтобы не надо было вводить пароль. Вводим:

sudo mysql

... и мы уже авторизованы с правами root.

Чтобы перейти к обычному режиму работы:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'здесь_свой_пароль';
FLUSH PRIVILEGES;

Установим сразу рабочий софт, он все равно понадобится:

apt install composer git

Теперь через сomposer можно установить phpMyAdmin:

composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev

Выполнять команду лучше сразу в нужном каталоге, например в /var/www/webdev.loc.

Получим /var/www/webdev.loc/phpmyadmin. Останется настроить сайт webdev.loc и можно будет обращаться соответствующим образом — webdev.loc/phpmyadmin.

В конфиге phpMyAdmin config.inc.php надо настроить два параметра:

$cfg['blowfish_secret'] = 'jh4543jk543fh8fdhfiu3hf78hwekfjhsdfiu3'; // Любые символы, не менее 32.
$cfg['TempDir'] = '/tmp';

Права доступа

Этот пункт актуален именно для локальной разработки.

Я работаю на компьютере под пользователем d1mon. Сайты работают, используя www-data. Чтобы не было проблем с доступом я обычно включаю себя в группу www-data и наоборот:

usermod -aG www-data d1mon
usermod -aG d1mon www-data

Комментарии