Очень многие устанавливают Битрикс на CentOS, точнее на BitrixVm, что объяснимо если вы слабо знакомы с Linux. Я не стану отговаривать, каждому свое. У меня возникало очень много проблем со сборками от команды Битрикс. Очень много необъяснимых ошибок, решить которые под силу не каждому специалисту. И если Битрикс24 без сборки от 1С работать не будет, то БУС вполне сносно работает на Ubuntu. Поэтому нет причин устанавливать CentOs. И категорически НЕ рекомендую ставить виртуальную машину! Если решили устанавливать, учите инструкцию наизусть и делайте все не как привыкли, а как написано в официальной документации.
Итак, я установил Ubuntu, сделал первичные настройки в виде установки ZSH (+Oh_My_Zsh). Сразу установил NGINX, MySQL, PHP.
Вдоволь намучившись с правами доступа на сервере я решил написать эту статью, дабы закрепить полученные уроки.
- Лучший способ для работы связки NGINX+PHP-FPM это создание раздельных пулов для каждого пользователя.
- Даже если пользователь у вас один создавайте раздельные пулы FPM.
- Серьезно, чувак. Отлавливать возникающие проблемы будет ОЧЕНЬ сложно. Ты никогда не настроишь распределение прав пользователей нормально с пулом настроенным по умолчанию.
Мои танцы с бубнами продолжаются. Установил по привычке PHP8. Уже на настроенный сервер утилитой scp перенес архивы. Распаковал, поставил Битрикс.
Да, Битрикс не поддерживает PHP8. Но не беда. Установим другую версию.
Если вы еще не знали, то существует простой способ легко и быстро менять версию PHP. Это очень удобно, например Битрикс наконец обновился и начал поддерживать PHP8.
1 2 3 4 5 6 |
apt-get update && apt-get upgrade apt-get install software-properties-common add-apt-repository ppa:ondrej/php apt-get update apt-get install php7.4 apt-get install php-pear php7.4-curl php7.4-dev php7.4-gd php7.4-mbstring php7.4-zip php7.4-mysql php7.4-xml |
Ок, у нас установлены две версии. Настроим установленные версии командой:
1 |
sudo update-alternatives --config php |
Далее вводим цифру необходимой версии. Получаем сообщение о том, что версия по умолчанию установлена. Проверить можно php -v
.
Да, вот так просто.
Следующая проблема которая вас ждет была уже озвучена. Права доступа. Чтобы решить раз и навсегда этот вопрос необходимо правильно настроить FPM пул.
Открываем sudo vim /etc/php/7.4/fpm/pool.d/my_site.conf
.
Добавляем конфигурации:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[user] user = user group = user ;listen = /run/php/php7.4-fpm.sock listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 |
Давайте немного разберем. Я решил не использовать файловый Unix сокет, а подключить сетевой сокет. Так действительно удобнее.
User — имя пользователя в системе, от которого нам требуется запускать пул. Это особенно удобно, если у вас несколько сайтов и пользователей в системе. Для каждого свой пул, свои настройки доступа и т.д.
listen.allowed_clients = 127.0.0.1 указывает с каких адресов можно подключаться к сетевому сокету. Порт так же можно выбирать на свое усмотрение, у меня стандартный 9000. Если он у вас чем-то занят, поставьте 9001, 9002 … и т.д.
Далее, рестарт PHP-FPM службы:
1 |
sudo systemctl restart php7.4-fpm |
И идем в настройки NGINX. Про базовые настройки сервера писал 100 раз. Я предпочитаю стандартное расположение конфигурационных файлов в папке /etc/nginx/sites-available/ с созданием ссылок на эти файлы в папке /etc/nginx/sites-enable/. Собственно, что во вторую папку попало, то и будет применено. Удобство в том, что мы можем создавать временные конфиги или хранить старые, на всякий случай.
Конфигурация стандартная, за исключением того, что у нас теперь сервер работает с PHP через сетевой сокет. Укажем это в настройках NGINX.
1 2 3 4 5 6 7 8 9 |
location ~ \.php$ { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } |
Завершающий шаг — настройка доступов к директории сайта.
1 2 3 |
chown -R user:user /var/www/site.io chmod 2775 /var/www/site.io find /var/www/site.io -type f -exec chmod 0664 {} + |
Закрепили пользователя как владельца директории. Добавили права доступа для пользователя и группы. Задали права доступа для уже существующих файлов.
Настройки по умолчанию будут применяться ко всем новым директориям и файлам.