Skip to content

Битрикс на VDS на связке CentOS 7, nginx, php-fpm, MariaDB

Поднимаем Битрикс на VDS на связке CentOS 7, nginx, php-fpm, MariaDB

Если лень париться и что-то настраивать, у битриксоидов есть специальный скрипт установки веб-окружения для Linux-систем. Заявлена поддержка Fedora 12-15 (i386, x86_64), CentOS 6 (i386, x86_64), Red Hat Enterprise Linux 5/6 (i386, x86_64). Запускается вот так:

1
2
3
wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh
# chmod +x bitrix-env.sh
# ./bitrix-env.sh

Если охота немного поработать, то читаем дальше.

Итак у нас есть VDS на каком-нибудь хостинге: Timeweb, Hetzner, Vscale. В общем неважно где.
На VDS хостером предустановлена CentOS 7 (может быть и ниже версия).
У выделенного вам сервера будет иметься IP-адрес, по которому он доступен извне.
Все команды выполняем под рутом, поэтому «sudo» я не пишу.
Перед началом установки софта можно обновить операционку командой:

1
yum update

Устанавливаем nginx

1
2
3
4
5
6
yum install nginx
systemctl start nginx
systemctl enable nginx
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Всё, сервер nginx запущен, прописан в автозагрузку и для него в фаерволе открыты порты http и https наружу.
Убедиться что сервер работает можно открыв в браузере адрес: http://IP_адрес_вашего_сервера/
Должны увидеть нечто подобное:

Установка MariaDB

MariaDB — тот же MySQL, только круче 🙂 Подробности тут.
Ставим:

1
2
3
yum -y install mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb

Затем запускаем скрипт первоначальной установки настроек безопасности:

1
/usr/bin/mysql_secure_installation

При запуске этого скрипта будет запрошен пароль для root пользователя и будут заданы другие вопросы безопасности на которые нужно отвечать Y или n. После этого запускаем входим в консоль mysql под root-пользователем:

1
mysql -uroot -p'ВАШ_ROOT_ПАРОЛЬ'

Создаем базу данных для Битрикс-сайта:

1
2
3
CREATE DATABASE `site_db` CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'site_db_user'@'localhost' IDENTIFIED BY 'site_db_password';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_db_user'@'localhost';

Этим мы создали базу данных site_db в кодировке UTF-8 с пользователем site_db_user и паролем site_db_password.
Если планируется использование движка InnoDB, то нужно в файле /etc/my.cnf прописать настройку в секцию [mysqld]:

1
innodb_flush_log_at_trx_commit=2

Иначе показатели записи и обновления будут ниже плинтуса. После изменения my.cnf сервер mariadb нужно перезапустить.

Ставим PHP и PHP-FPM

Тут все аналогично.

1
2
3
yum -y install php php-fpm php-common
systemctl start  php-fpm
systemctl enable php-fpm

Открываем файл /etc/php-fpm.d/www.conf и вместо

1
2
3
listen = 127.0.0.1:9000
user = apache
group = apache

пишем

1
2
3
listen = /var/run/php-fpm/php-fpm.sock
user = nginx
group = nginx

И перезапускаем сервис php-fpm

1
systemctl restart php-fpm

Добавляем хост

Создаём директорию и задаем её владельца

1
2
mkdir -p /home/www/newsite.com/www
chown -R nginx:nginx /home/www/newsite.com/www

Создаём файл настроек виртуалхоста /etc/nginx/conf.d/newsite.com.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    server_name .newsite.com;
    access_log /var/log/nginx/newsite.com-access.log;
    error_log /var/log/nginx/newsite.com-error.log;
    root /home/www/newsite.com/www;
    location / {
        index index.html index.htm index.php;
    }
    location ~ .php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/www/newsite.com/www$fastcgi_script_name;
    }
}

Это упрощенный вариант для теста. Для битрикса рабочий конфиг можно взять тут: https://yadi.sk/d/WHXAS5GRjxg5S. На продакшен-сервере рекомендуется отключать access_log и error_log.
Проверяем конфигурацию nginx

1
nginx -t

Должно выдаться что-то типа «syntax is ok». Перезапускаем сервис

1
systemctl restart  nginx

Всё, сервер к приему запросов на домен newsite.com готов. Только теперь нужно сообщить миру, что по имени newsite.com должен открываться именно ваш VDS. Для этого в админке управления доменом вашего регистратора нужно изменить A-запись. Например у GoDaddy это выглядит так:

Вместо 99.99.99.99 указываете IP вашего сервера. После изменения A-записи нужно подождать некоторое время. Иногда обновление DNS занимает несколько часов.
Пока прописывается DNS создаем в корне сайта (/home/www/newsite.com/www) файл index.php c таким содержимым:

1
<!--?php phpinfo();?-->

После открытия в браузере адреса http://newsite.com/ вы должны увидеть привычную страницу информации о версии PHP и подключенных подулях:

Если вместо этого выводится «403 Forbidden», поздравляю! Вы столкнулись с SELinux. Что это за зверь можно почитать нахабре. Чтобы не было с ним проблем пишем команду:

1
chcon -Rv --type=httpd_sys_content_t /home/www

Итак, PHP у нас заработал. Далее нужно проверить хостинг на требования Битрикса. Для этого закачиваем в корень скрипт диагностики bitrix_server_test.php и запускаем его из браузера.
Если скрипт ругается на настройки PHP, то их пожно подправить в файле /etc/php.ini.
Тут не забываем прописать в настройках php.ini mbstring.func_overload=2 и mbstring.internal_encoding=UTF-8. Иначе Битрикс будет ругаться при установке сайта в кодировке UTF-8.
Там же нужно установить временную зону по-умолчанию. Например: date.timezone = Europe/Moscow.
Настраиваем права на папку для хранения сессий:

1
2
chown -R nginx:nginx /var/lib/php/session
chcon -Rv --type=httpd_sys_content_t /var/lib/php/session

Чтобы работала отправка писем из PHP нужно установить sendmail:

1
2
3
yum install sendmail
systemctl start sendmail
systemctl enable sendmail

Если почта уходит ужасно медленно, то вероятней всего есть проблема с DNS. Для решения смотрим какое имя хоста у нас прописано в /etc/hostname. Открываем /etc/host на редактирование и прописываем туда примерно следующее:

1
127.0.0.1 localhost localhost.localdomain hostname hostname.localdomain localhost.forsendmail hostname.forsendmail

Где hostname — имя вашего хоста из /etc/hostname. Чтобы проверить, что все со скоростью отправки нормально, выполняем команду:

1
time echo test | sendmail your@mail.ru

Время отправки должно быть не больше секунды.
Для битрикса нужен какой-нибудь акселератор, например XCache. Ставим:

1
2
yum -y install php-xcache xcache-admin
systemctl restart php-fpm

Чтобы кэш будущего сайта работал быстро, нужно установить memcache.
Всё, площадка под Битрикс готова. Дальше удаляем все файлы в корне сайта и закачиваем туда bitrixsetup.php. Запускаем этот скрипт из браузера и следуем по шагам мастера установки

 

Материалы взяты [тут]

Published in1cbitrixCentOSLinux
Яндекс.Метрика