Marik - 10 фев 2017 20:52 0

CentOS 7. Установка Nginx php-fpm 7 MySQL(MariaDB) FTP


В этой статье рассмотрим установку на Linux CentOS 7 Вебсервера NginX php-fpm 7.0 ftp а также базы данных MySQL и настройку системы.
Для работы нам потребуется SSH-клиент. Для Windows можно использовать PuTTY, который можно скачать на сайте http://www.chiark.greenend.org.uk/~sgtatham/putty/. Пользователи Linux могут использовать любой другой.
Запустим PuTTY в окно  Host Name введем ip-адрес нашего сервера. И нажмем Open
 Клиент попросит ввести логин и пароль.
Вводим логин root и пароль(внимание при вводе пароль курсор не будет отображать введеные символы, вообще ничего отображать не будет, просто вводим пароль и жмем enter)
Предварительные работы
Возможно в вашей системе уже есть установленные php вебсерверы базы данных и прочее перед началом установки их надо удалить

yum remove httpd* php* php-common* mysql*
CentOS сама по себе как и RedHat Linux довольно консервативная система и в репозиториях по умолчанию вы не найдете последние версии php и NginX и поэтому, нам нужно будет установить дополнительные репозитории epel и webtatic
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 update
Установка PHP

После обновления смотрим какие версии php нам доступны -
yum search php7
Нам выдаст подобный список
mod_php71w.x86_64 : PHP module for the Apache HTTP Server
php70w.x86_64 : PHP scripting language for creating dynamic web sites
php70w-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php70w-cli.x86_64 : Command-line interface for PHP
php70w-common.x86_64 : Common files for PHP
php70w-dba.x86_64 : A database abstraction layer module for PHP applications
php70w-devel.x86_64 : Files needed for building PHP extensions
php70w-embedded.x86_64 : PHP library for embedding in applications
php70w-enchant.x86_64 : Enchant spelling extension for PHP applications
php70w-fpm.x86_64 : PHP FastCGI Process Manager
php70w-gd.x86_64 : A module for PHP applications for using the gd graphics library
php70w-imap.x86_64 : A module for PHP applications that use IMAP
php70w-interbase.x86_64 : A module for PHP applications that use Interbase/Firebird databases
php70w-intl.x86_64 : Internationalization extension for PHP applications
php70w-ldap.x86_64 : A module for PHP applications that use LDAP
php70w-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
php70w-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php70w-mysql.x86_64 : A module for PHP applications that use MySQL databases
php70w-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php70w-odbc.x86_64 : A module for PHP applications that use ODBC databases
php70w-opcache.x86_64 : An opcode cache Zend extension
php70w-pdo.x86_64 : A database access abstraction module for PHP applications
php70w-pdo_dblib.x86_64 : MSSQL database module for PHP
php70w-pear.noarch : PHP Extension and Application Repository framework
php70w-pecl-apcu.x86_64 : APCu - APC User Cache
php70w-pecl-apcu-devel.x86_64 : APCu developer files (header)
php70w-pecl-igbinary.x86_64 : Replacement for the standard PHP serializer
php70w-pecl-igbinary-devel.x86_64 : Igbinary developer files (header)
php70w-pecl-imagick.x86_64 : Provides a wrapper to the ImageMagick library
php70w-pecl-imagick-devel.x86_64 : Imagick developer files (header)
php70w-pecl-mongodb.x86_64 : PECL package MongoDB driver
php70w-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store
php70w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
php70w-pgsql.x86_64 : A PostgreSQL database module for PHP
php70w-phpdbg.x86_64 : Interactive PHP debugger
php70w-process.x86_64 : Modules for PHP script using system process interfaces
php70w-pspell.x86_64 : A module for PHP applications for using pspell interfaces
php70w-recode.x86_64 : A module for PHP applications for using the recode library
php70w-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php70w-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php70w-tidy.x86_64 : Standard PHP module provides tidy library support
php70w-xml.x86_64 : A module for PHP applications which use XML
php70w-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php71w-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php71w-cli.x86_64 : Command-line interface for PHP
php71w-common.x86_64 : Common files for PHP
php71w-dba.x86_64 : A database abstraction layer module for PHP applications
php71w-devel.x86_64 : Files needed for building PHP extensions
php71w-embedded.x86_64 : PHP library for embedding in applications
php71w-enchant.x86_64 : Enchant spelling extension for PHP applications
php71w-fpm.x86_64 : PHP FastCGI Process Manager
php71w-gd.x86_64 : A module for PHP applications for using the gd graphics library
php71w-imap.x86_64 : A module for PHP applications that use IMAP
php71w-interbase.x86_64 : A module for PHP applications that use Interbase/Firebird databases
php71w-intl.x86_64 : Internationalization extension for PHP applications
php71w-ldap.x86_64 : A module for PHP applications that use LDAP
php71w-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
php71w-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
php71w-mysql.x86_64 : A module for PHP applications that use MySQL databases
php71w-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php71w-odbc.x86_64 : A module for PHP applications that use ODBC databases
php71w-opcache.x86_64 : An opcode cache Zend extension
php71w-pdo.x86_64 : A database access abstraction module for PHP applications
php71w-pdo_dblib.x86_64 : MSSQL database module for PHP
php71w-pear.noarch : PHP Extension and Application Repository framework
php71w-pecl-apcu.x86_64 : APCu - APC User Cache
php71w-pecl-apcu-devel.x86_64 : APCu developer files (header)
php71w-pecl-igbinary.x86_64 : Replacement for the standard PHP serializer
php71w-pecl-igbinary-devel.x86_64 : Igbinary developer files (header)
php71w-pecl-mongodb.x86_64 : PECL package MongoDB driver
php71w-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store
php71w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
php71w-pgsql.x86_64 : A PostgreSQL database module for PHP
php71w-phpdbg.x86_64 : Interactive PHP debugger
php71w-process.x86_64 : Modules for PHP script using system process interfaces
php71w-pspell.x86_64 : A module for PHP applications for using pspell interfaces
php71w-recode.x86_64 : A module for PHP applications for using the recode library
php71w-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php71w-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php71w-tidy.x86_64 : Standard PHP module provides tidy library support
php71w-xml.x86_64 : A module for PHP applications which use XML
php71w-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
Как видим доступно php-fpm 7.1
Установим php
yum install php71w-fpm.x86_64
а также если необходимо дополнительные модули например
yum  install php71w-opcache php71w-devel php71w-gd  php71w-pdo php71w-pear php71w-xml php71w-mcrypt php71w-mbstring php71w-interbase php71w-common
добавим в автозагрузку php
systemctl enable php-fpm.service
Запустим
systemctl start php-fpm.service


Установка MySQL(MariaDB)
Переходим на сайт - https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.1
Выбираем версию операционной системы и версию MySQL которую мы ходим установить CentOS 7, на сегодняшний день последняя стабильная версия MariaDB 10.1. На сайте будут указаны команды для установки последней версии
Создаем файл  MariaDB.repo в папке - /etc/yum.repos.d/ с содержимым
# MariaDB 10.1 CentOS repository list - created 2017-02-11 15:12 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Установим
yum install MariaDB-server MariaDB-client
Запустим -
systemctl start mariadb.service

Добавим в автозагрузку -
systemctl enable mariadb.service
Установка NginX
Откроем 80 порт
iptables -A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables-save > /etc/sysconfig/iptables
установим NginX
yum install nginx
Добавим в автозагрузку
systemctl enable nginx.service
Включим
systemctl start nginx.service
Если все прошло правильно то при наборе в браузере ip сервера мы увидим приветствие NginX
Настройка сервера
Запускать сервисы из под пользователя root не хорошо и небезопасно. Поэтому мы создадим пользователя с домашней папкой и настроим систему таким образом чтобы не пускать все сервисы дальше домашней папки пользователя.
Создаем пользователя например vasya и запрещаем ему доступ по SSH
useradd vasya -b /home/ -m -U -s /bin/false
Задаем новый пароль для пользователя
passwd vasya
Настройка vsftpd
Установим и настроим vsftpd
yum install vsftpd

Откроем файл /etc/vsftpd/vsftpd.conf и отредактируем его
Разрешаем вход и запись для локальных пользователей
local_enable=YES
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
Выставляем права по умолчанию для файлов заливаемых пользователем по формуле 777 отнять права которые надо получить допустим 755.
777-755=22 выставляем маску 22 и все файлы у нас будут заливаться с правами 755
local_umask=022
Запретим доступ анонимным пользователям
anonymous_enable=NO
Добавим работу в пассивном режиме
pasv_min_port=50000 
pasv_max_port=50020
Добавим поддрежку ipv6
listen=NO
listen_ipv6=YES
Запретим пользователю FTP  выходить за пределы домашней директории
chroot_local_user=YES
chroot_list_enable=NO
Разрешим пользователю запись в корень своей домашней директории
allow_writeable_chroot=YES
Откроем файл /etc/pam.d/vsftpd Так как у нашего пользователя нет SSH доступа то чтобы работал FTP доступ закомментируем строчку
#auth   required        pam_shells.so
Добавим в автозагрузку
systemctl enable vsftpd.service
Откроем 21 порт и динамические порты для FTP
iptables -A IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPTiptables -I INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 50000:50020 -j ACCEPT
iptables-save > /etc/sysconfig/iptables

Запустим FTP
systemctl start vsftpd.service
Соединяемся с сервером при помощи любого FTP клиента например FileZilla - https://filezilla-project.org/
Создаем в корневой папке пользователя следующие папки
public_html - здесь будут находится нашы сайты
session - в эту папку php будет писать сессии
tmp - папка для временных файлов php
в папке public_html создадим папку default временно для проверки работоспособности nginx и php
а также папку site.com(название вашего сайта)
Настройка Nginx
Откроем файл /etc/nginx/nginx.conf
 и приведем его к такому виду
user  vasya;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
server_names_hash_bucket_size  128;
    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;
client_max_body_size 50m;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
server {
        listen 80;
       server_name ""; #default
        location / {
            root  /home/vasya/public_html/default;
            index  index.php index.html index.htm;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            root   /home/vasya/public_html/default;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        }
server {
        listen 80;
        server_name site.com www.site.com;
        location / {
            root   /home/vasya/public_html/site.com;
            index  index.php index.html index.htm;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            root   /home/vasya/public_html/site.com;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        }
}
Этот конфиг настроен таким образом что при обращении к серверу по ip  адресу будут отдаваться файлы из папки

/home/vasya/public_html/defaultА при обращении по адресу site.com или www.site.com будут отдаваться файлы из папки
/home/vasya/public_html/site.comПерезапустми Nginx
systemctl restart nginx.service
Настройка php-fpm
Откроем файл /etc/php-fpm.d/www.conf
Изменим имя пользователя и группу с www-data на vasya
user = vasya
group = vasya
Откроем файл /etc/php.ini
установим следующие значения
Запретить php выход за пределы домашней папки
open_basedir ="/home/vasya/"
Разрешить короткие теги(многие разработчики пишут скрипты короткими тегами)
short_open_tag = On
Установим папку для временных файлов
upload_tmp_dir = "/home/vasya/tmp/"
Установим папку для хранения сессий php
session.save_path = "/home/vasya/session/"
Перезапустим php-fpm
systemctl restart php-fpm.service
Скопируем в папку/home/vasya/public_html/default/
файл index.php со следующим содержимым
<?php phpinfo();?>
Наберем http://ваш-ip/
Если появилось phpinfo то все настроено правильно
 Можно заливать файлы, заводить БД и пользоваться сайтом

Другие статьи по теме:

Комментарии

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

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent
Marik.kz. Блог. При использовании информации, пожалуйста указывайте ссылку на оригинал. Приют милитариста