Если лень париться и что-то настраивать, у битриксоидов есть специальный скрипт установки веб-окружения для Linux-систем. Заявлена поддержка Fedora 12-15 (i386, x86_64), CentOS 6 (i386, x86_64), CentOS 7.3, Red Hat Enterprise Linux 5/6 (i386, x86_64). Запускается вот так:
wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh # chmod +x bitrix-env.sh # ./bitrix-env.shВот тут Волошин пишет про установку новой виртуальной машины версии 7: приключения с переходом от виртуальной машины 4.х и 5.х на новую 7.х.
Если охота немного поработать, то читаем дальше.
Итак у нас есть VDS на каком-нибудь хостинге: Timeweb, Hetzner, Vscale. В общем неважно где.yum update
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 наружу.
Хотя, ребята из ITSumma рекомендуют ставить Percona.
Ставим MariaDB:yum -y install mariadb-server mariadb systemctl start mariadb systemctl enable mariadbЗатем запускаем скрипт первоначальной установки настроек безопасности:
/usr/bin/mysql_secure_installationПри запуске этого скрипта будет запрошен пароль для root пользователя и будут заданы другие вопросы безопасности на которые нужно отвечать Y или n. После этого запускаем входим в консоль mysql под root-пользователем:
mysql -uroot -p'ВАШ_ROOT_ПАРОЛЬ'Создаем базу данных для Битрикс-сайта:
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_flush_log_at_trx_commit=2Иначе показатели записи и обновления будут ниже плинтуса. После изменения my.cnf сервер mariadb нужно перезапустить.
yum -y install php php-fpm php-common systemctl start php-fpm systemctl enable php-fpmОткрываем файл /etc/php-fpm.d/www.conf и вместо
listen = 127.0.0.1:9000 user = apache group = apache ;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660пишем
listen = /var/run/php-fpm/php-fpm.sock user = nginx group = nginx listen.owner = nginx listen.group = nginx listen.mode = 0660И перезапускаем сервис php-fpm
systemctl restart php-fpm
mkdir -p /home/www/newsite.com/www chown -R nginx:nginx /home/www/newsite.com/wwwСоздаём файл настроек виртуалхоста /etc/nginx/conf.d/newsite.com.conf:
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 -tДолжно выдаться что-то типа "syntax is ok". Перезапускаем сервис
systemctl restart nginxВсё, сервер к приему запросов на домен newsite.com готов. Только теперь нужно сообщить миру, что по имени newsite.com должен открываться именно ваш VDS. Для этого в админке управления доменом вашего регистратора нужно изменить A-запись. Например у GoDaddy это выглядит так:
Вместо 99.99.99.99 указываете IP вашего сервера. После изменения A-записи нужно подождать некоторое время. Иногда обновление DNS занимает несколько часов.
< ?php phpinfo(); ? >После открытия в браузере адреса http://newsite.com/ вы должны увидеть привычную страницу информации о версии PHP и подключенных модулях:
Если вместо этого выводится "403 Forbidden", поздравляю! Вы столкнулись с SELinux. Что это за зверь можно почитать на хабре. Чтобы не было с ним проблем пишем команду:
chcon -Rv --type=httpd_sys_content_t /home/wwwИтак, PHP у нас заработал. Далее нужно проверить хостинг на требования Битрикса. Для этого закачиваем в корень скрипт диагностики bitrix_server_test.php и запускаем его из браузера.
chown -R nginx:nginx /var/lib/php/session chcon -Rv --type=httpd_sys_content_t /var/lib/php/sessionЧтобы работала отправка писем из PHP нужно установить sendmail:
yum install sendmail systemctl start sendmail systemctl enable sendmailЕсли почта уходит ужасно медленно, то вероятней всего есть проблема с DNS. Для решения смотрим какое имя хоста у нас прописано в /etc/hostname. Открываем /etc/hosts на редактирование и прописываем туда примерно следующее:
127.0.0.1 localhost localhost.localdomain hostname hostname.localdomain localhost.forsendmail hostname.forsendmailГде hostname - имя вашего хоста из /etc/hostname. Чтобы проверить, что все со скоростью отправки нормально, выполняем команду:
time echo test | sendmail your@mail.ruВремя отправки должно быть не больше секунды.
yum -y install php-xcache xcache-admin systemctl restart php-fpmЧтобы кэш будущего сайта работал быстро, нужно установить memcache.