ТЕХСИБ

технологии сопровождение интеграция безопасность

Если у вашего сайта появилась потребность в более мощном хостинге, тогда можно его поднять самим на наших виртуальных машинах.

Установка CentOS 7

Все как обычно, только выбрать тип файловой системы EXT4

После установки:

# yum update -y
# yum install mc bash-completion net-tools wget -y

Nginx

# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum install nginx -y
# systemctl enable nginx

PHP 7

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install php70w php70w-mysql php70w-fpm php70w-mcrypt php70w-mbstring php70w-gd php70w-devel php70w-opcache -y

MariaDB

# yum -y install mariadb-server mariadb
# systemctl enable mariadb

Настройка

SELinux

Отключаем, что бы нам ничего не мешало.

Меняем /etc/sysconfig/selinux

SELINUX=disabled

Создаем папки для сайта

# mkdir -p /home/www/НАШСАЙТ
# chown -R nginx:nginx /home/www/НАШСАЙТ 
# chmod -R 755 /home/www/НАШСАЙТ 

Настраиваем PHP

В /etc/php.ini меняем значения по умолчанию на указанное ниже:

cgi.fix_pathinfo=0
short_open_tag=on
mbstring.func_overload=2
mbstring.internal_encoding=UTF-8
date.timezone = Europe/Moscow
max_input_vars = 10000
post_max_size = 20M
upload_max_filesize = 20M
realpath_cache_size = 4096k
display_errors = On
memory_limit = 256M

В /etc/php.d/opcache.ini меняем значения по умолчанию на указанное ниже:

opcache.revalidate_freq=0
opcache.max_accelerated_files = 100000

Проверяем файл /etc/php.d/pdo_mysql.ini — если он существует, значит нужно отключить pdo_mysql т.к. оно не будет работать вместе с mysqli:

;extension=pdo_mysql.so

Вносим изменения в файл /etc/php-fpm.d/www.conf

user = nginx
group = nginx
listen.owner = nobody
listen.group = nobody
listen.mode = 0666
listen = /var/run/php-fpm/php-fpm.sock

Запускаем и добавляем в автозагрузку:

# systemctl enable php-fpm
# systemctl start php-fpm

Это создаст нужный нам php-fpm.sock файл, зададим ему права и владельца

# chmod 666 /run/php-fpm/php-fpm.sock
# chown nginx:nginx /run/php-fpm/php-fpm.sock

MariaDB

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

# /usr/bin/mysql_secure_installation

При запуске этого скрипта будет запрошен пароль для root пользователя и будут заданы другие вопросы безопасности на которые нужно отвечать Y или N (желательно на все вопросы ответить Y).

Стандартные файлы конфигурации (/etc/my.cnf и содержимое папки /etc/my.cnf.d) заменяем прилагаемыми из этого архива: mariadb-bitrix-configs.tar.bz2

Перед запуском необходимо убедиться что MariaDB не запущена и из папки /var/lib/mysql удалить файлы ib_logfile0…ib_logfileN

Запускаем MariaDB

# systemctl start mariadb

и проверяем логи — все должно быть без ошибок.

Создаем базу данных для Битрикс-сайта. Входим в консоль mysql под root-пользователем:

# mysql -h localhost -u root -p

(вводим пароль указанный в скрипте mysql_secure_installation)

Создаем базу в кодировке UTF-8:

> CREATE DATABASE `НАША_БАЗА` CHARACTER SET utf8 COLLATE utf8_unicode_ci;
> CREATE USER 'ПОЛЬЗОВАТЕЛЬ_БД'@'localhost' IDENTIFIED BY 'ПАРОЛЬ_БД';
> GRANT ALL PRIVILEGES ON  НАША_БАЗА.* TO ' ПОЛЬЗОВАТЕЛЬ_БД '@'localhost';
> FLUSH PRIVILEGES;
> quit;

Ngnix

Заменяем содержимое /etc/nginx/nginx.conf на:

user nginx;
worker_processes auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay   on;

    server_tokens off;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

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

server {
    listen 80;
    ssi on;
    gzip on;
    gzip_comp_level 7;
    gzip_types application/x-javascript application/javascript text/css;

    server_name localhost ; #через пробел можно перечислять (192.168.1.1 localhost и т.д.)
    charset off;
    #disable_symlinks if_not_owner from=$root_path;
    index index.php;
    root $root_path;
    set $root_path /home/www/sls-stroy;
    set $php_sock unix:/var/run/php-fpm/php-fpm.sock;
    access_log /var/log/nginx/test-access.log;
    error_log /var/log/nginx/test-error.log;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    client_max_body_size 1024M;
    client_body_buffer_size 4M;

    #кому не надо убирать у домена www это не пишем
    #if ($host = 'www.test.ru' ) {
    #rewrite ^(.*)$ http://test.ru$1 permanent;
    #}
    location / {
    try_files $uri $uri/ @bitrix;
}

    location ~* /upload/.*\.(php|php3|php4|php5|php6|phtml|pl|asp|aspx|cgi|dll|exe|shtm|shtml|fcg|fcgi|fpl|asmx|pht|py|psp|rb|var)$ {
    types {
	text/plain text/plain php php3 php4 php5 php6 phtml pl asp aspx cgi dll exe ico shtm shtml fcg fcgi fpl asmx pht py psp rb var;
    }
}

location ~ \.php$ {
    try_files $uri @bitrix;
    fastcgi_pass $php_sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f АДРЕС_ПОЧТЫ";
    include fastcgi_params;
}
    location @bitrix {
	fastcgi_pass $php_sock;
	include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
	fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f АДРЕС_ПОЧТЫ";
    }
    location ~* /bitrix/admin.+\.php$ {
	try_files $uri @bitrixadm;
	fastcgi_pass $php_sock;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f АДРЕС_ПОЧТЫ";
	include fastcgi_params;
    }
    location @bitrixadm{
	fastcgi_pass $php_sock;
	include fastcgi_params;
	fastcgi_param SCRIPT_FILENAME $document_root/bitrix/admin/404.php;
	fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f АДРЕС_ПОЧТЫ";
    }

    location = /favicon.ico {
	log_not_found off;
	access_log off;
    }

    location = /robots.txt {
	allow all;
	log_not_found off;
	access_log off;
    }
    #
    # block this locations for any installation
    #

    # ht(passwd|access)
    location ~* /\.ht{ deny all; }

    # repositories
    location ~* /\.(svn|hg|git) { deny all; }

    # bitrix internal locations
    location ~* ^/bitrix/(modules|local_cache|stack_cache|managed_cache|php_interface) {
	deny all;
    }

    # upload files
    location ~* ^/upload/1c_[^/]+/ { deny all; }

    # use the file system to access files outside the site (cache)
    location ~* /\.\./ { deny all; }
    location ~* ^/bitrix/html_pages/\.config\.php { deny all; }
    location ~* ^/bitrix/html_pages/\.enabled { deny all; }

    # Intenal locations
    location ^~ /upload/support/not_image { internal; }

    # Cache location: composite and general site
    location ~* @.*\.html$ {
	internal;
	# disable browser cache, php manage file
	expires -1y;
	add_header X-Bitrix-Composite "Nginx (file)";
    }

    # Player options, disable no-sniff
    location ~* ^/bitrix/components/bitrix/player/mediaplayer/player$ {
	add_header Access-Control-Allow-Origin *;
    }

    # Accept access for merged css and js
    location ~* ^/bitrix/cache/(css/.+\.css|js/.+\.js)$ {
	expires 30d;
	error_page 404 /404.html;
    }

    # Disable access for other assets in cache location
    location ~* ^/bitrix/cache{ deny all; }

    # Use nginx to return static content from s3 cloud storage
    # /upload/bx_cloud_upload/<schema>.<backet_name>.<s3_point>.amazonaws.com/<path/to/file>
    location ^~ /upload/bx_cloud_upload/ {
	location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:]+)\.(s3|s3-us-west-1|s3-eu-west-1|s3-ap-southeast-1|s3-ap-northeast-1)\.amazonaws\.com/(.+)$ {
	    internal;
	    resolver 8.8.4.4;
	    proxy_method GET;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    proxy_set_header X-Forwarded-Server $host;
	    #proxy_max_temp_file_size 0;
	    proxy_pass $1://$2.$3.amazonaws.com/$4;
	}
	location ~* .*$ { deny all; }
    }
    # Static content
    location ~* ^/(upload|bitrix/images|bitrix/tmp) {
	expires 30d;
    }

    location ~* \.(css|js|gif|png|jpg|jpeg|ico|ogg|ttf|woff|eot|otf)$ {
	error_page 404 /404.html;
	expires 30d;
    }

    location = /404.html {
	access_log off ;
    }

}

Меняем права на директорию сессий

# chown -R nginx:nginx /var/lib/php/session

Запускаем

# systemctl enable nginx

Порты для работы Bitrix

firewall-cmd --zone=public --add-port=25/tcp   --permanent
firewall-cmd --zone=public --add-port=80/tcp   --permanent
firewall-cmd --zone=public --add-port=443/tcp  --permanent
firewall-cmd --zone=public --add-port=5222/tcp --permanent
firewall-cmd --zone=public --add-port=5223/tcp --permanent
firewall-cmd --zone=public --add-port=8890/tcp --permanent
firewall-cmd --zone=public --add-port=8891/tcp --permanent
firewall-cmd --zone=public --add-port=8893/tcp --permanent
firewall-cmd --zone=public --add-port=8894/tcp --permanent
firewall-cmd --reload

Финальная проверка

В конце концов перезагружаем сервер чтобы убедиться что все хорошо работает и успешно запускается.

Загружаем скрипты Битрикса

812 ИТ-Сервис предоставляет услугу — аренда виртуального сервера, аренда выделенного сервера.

Добавить комментарий

ТЕХСИБ

технологии сопровождение интеграция безопасность

ИТ обслуживание в СПб и Ленинградской области

Санкт-Петербург 197374, пр. Обуховской обороны д.7 офис 311