Установка и настройка веб сервера (Ngixnx + php-fpm)

28 нояб. 2016 г., 2:27:33
Установка и настройка веб сервера (Ngixnx + php-fpm)

Для организации web сервера установим на CentOS 7 связку nginx + php-fpm. Подразумевается, что у вас уже есть настроенный сервер CentOS 7. Связка nginx и php fpm дает большую производительность, нежели apache с php.

Перед установкой web сервера необходимо обновить все пакеты.

# yum update

Устанавливаем Nginx.

Ставим непосредственно web сервер:

# yum install -y nginx

Добавляем в автозагрузку:

# systemctl enable nginx.service

Запускаем:

# systemctl start nginx.service

Теперь можно зайти на тестовую страничку, чтобы убедиться, что nginx работает:

http://ip_сервера

Не забудьте открыть 80-й порт на фаерволе.

Настраиваем Nginx:

Открываем:

# nano /etc/nginx/nginx.conf

И приводим его к следующему виду:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    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;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 100m;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    gzip on;
    gzip_disable "msie6";
    gzip_min_length 1280;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  site.ru;
        root         /var/www/web;
        index index.php index.html index.htm;
        client_max_body_size 100m;
        access_log /var/log/nginx/site.ru/access.log main;
        error_log /var/log/nginx/qery.ru/error.log;
        include /etc/nginx/default.d/*.conf;
        location / {
          try_files $uri $uri/ /index.php$is_args$args;
        }
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
            access_log off;
            expires max;
        }
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            try_files $uri =404;
        }
        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }        
        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }
        location ~ /\.ht {
            deny all;
        }
    }
}

Не забудьте изменить site.ru на свой домен.

Перезапускаем nginx:

# systemctl restart nginx.service
Устанавливаем PHP 7 на сервер

Все изменения в PHP версии 7 с 5 версией можно прочитать здесь.

Т.к. в CentOS 7 по умолчанию нет версии PHP 7, то подключим дополнительный репозиторий:

# yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Устанавливаем сам интерпретатор PHP 7:

# yum install php70w

Ставим дополнительные пакеты:

# yum install php70w-mysql php70w-xml php70w-soap php70w-xmlrpc
# yum install php70w-mbstring php70w-json php70w-gd php70w-mcrypt
Настраиваем PHP 7

Открываем

# nano /etc/php-fpm.d/www/conf

И приводим к следующему виду:

[www]
user = nginx
group = nginx
listen = /var/run/php-fpm/php5-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_admin_value[upload_tmp_dir] = /tmp
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
php_admin_value[cgi.fix_pathinfo] = 0

Добавляем php-fpm в автозагрузку:

# systemctl enable php-fpm.service

И запускаем:

# systemctl start php-fpm.service
Проверка работы

Создаем файл в папке:

# nano /var/www/index.php

Со следующим содержимым:

<php
phpinfo();
?>

Открываем свой сайт в браузере и видим следующее:

Устанавливаем MariaDB 10.1

Создаем файл

# nano /etc/yum.repos.d/mariaDB.repo

Со следующим содержимым:

# MariaDB 10.1 CentOS repository list - created 2016-11-20 15:36 UTC
# <a href="http://downloads.mariadb.org/mariadb/repositories/">http://downloads.mariadb.org/mariadb/repositories/</a>
[mariadb]
name = MariaDB
baseurl = <a href="http://yum.mariadb.org/10.1/centos7-amd64">http://yum.mariadb.org/10.1/centos7-amd64</a>
gpgkey=<a href="https://yum.mariadb.org/RPM-GPG-KEY-MariaDB">https://yum.mariadb.org/RPM-GPG-KEY-MariaDB</a>
gpgcheck=1

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

# yum install MariaDB-server MariaDB-client
Настраиваем MariaDB

Открываем

# nano /etc/my.cnf.d/server.cnf

и настраиваем следующими настройками

[mysqld]
datadir=/var/lib/mysql
port=3306
sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
default_storage_engine=innodb
innodb_buffer_pool_size=494M
innodb_log_file_size=50M
character-set-server=utf8
innodb_flush_log_at_trx_commit =
symbolic-links=0
[client]
port=3306

Добавляем сервер БД в автозагрузку

# systemctl enable mariadb

Запускаем:

# systemctl start mariadb

На этом все, настройка nginx + php-fpm на CentOS7 закончена.

Комментарии

Чтобы оставить комментарии небходимо войти с помощью своего аккаунта.
Ничего не найдено.