Marik - 11 янв 2017 08:39 0

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

В этой статье рассмотрим установку на Linux Debian 8 Вебсервера 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
По умолчанию в репозиториях Debian php устаревшей 5 версии и поэтому подключаем репозиторий Dotdeb
echo -e "deb http://packages.dotdeb.org jessie all\ndeb-src http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list
После обновляемся
aptitude update
После обновления смотрим какие версии php нам доступны -
aptitude search php

Нам выдаст подобный список
p   php7.0                        - server-side, HTML-embedded scripting l
p   php7.0-apcu                   - APC User Cache for PHP
p   php7.0-apcu-bc                - APCu Backwards Compatibility Module
p   php7.0-bcmath                 - Bcmath module for PHP
p   php7.0-bz2                    - bzip2 module for PHP
v   php7.0-calendar               -
p   php7.0-cgi                    - server-side, HTML-embedded scripting l
p   php7.0-cli                    - command-line interpreter for the PHP s
p   php7.0-common                 - documentation, examples and common mod
v   php7.0-ctype                  -
p   php7.0-curl                   - CURL module for PHP
p   php7.0-dba                    - DBA module for PHP
p   php7.0-dbg                    - Debug symbols for PHP7.0
p   php7.0-dev                    - Files for PHP7.0 module development
v   php7.0-dom                    -
p   php7.0-enchant                - Enchant module for PHP
v   php7.0-exif                   -
v   php7.0-fileinfo               -
p   php7.0-fpm                    - server-side, HTML-embedded scripting l
v   php7.0-ftp                    -
p   php7.0-gd                     - GD module for PHP
p   php7.0-geoip                  - GeoIP module for PHP
v   php7.0-gettext                -
p   php7.0-gmp                    - GMP module for PHP
v   php7.0-iconv                  -
p   php7.0-igbinary               - igbinary serializer for PHP
p   php7.0-imagick                - Provides a wrapper to the ImageMagick
p   php7.0-imap                   - IMAP module for PHP
p   php7.0-interbase              - Interbase module for PHP
p   php7.0-intl                   - Internationalisation module for PHP
p   php7.0-json                   - JSON module for PHP
p   php7.0-ldap                   - LDAP module for PHP
p   php7.0-mbstring               - MBSTRING module for PHP
p   php7.0-mcrypt                 - libmcrypt module for PHP
p   php7.0-memcached              - memcached extension module for PHP, us
p   php7.0-mongodb                - MongoDB driver for PHP
p   php7.0-msgpack                - MessagePack serializer for PHP
p   php7.0-mysql                  - MySQL module for PHP
v   php7.0-mysqli                 -
v   php7.0-mysqlnd                -
p   php7.0-odbc                   - ODBC module for PHP
p   php7.0-opcache                - Zend OpCache module for PHP
v   php7.0-pdo                    -
v   php7.0-pdo-dblib              -
v   php7.0-pdo-firebird           -
v   php7.0-pdo-mysql              -
v   php7.0-pdo-odbc               -
v   php7.0-pdo-pgsql              -
v   php7.0-pdo-sqlite             -
p   php7.0-pgsql                  - PostgreSQL module for PHP
v   php7.0-phar                   -
p   php7.0-phpdbg                 - server-side, HTML-embedded scripting l
v   php7.0-posix                  -
p   php7.0-pspell                 - pspell module for PHP
p   php7.0-readline               - readline module for PHP
p   php7.0-recode                 - recode module for PHP
p   php7.0-redis                  - PHP extension for interfacing with Red
v   php7.0-shmop                  -
v   php7.0-simplexml              -
p   php7.0-snmp                   - SNMP module for PHP
p   php7.0-soap                   - SOAP module for PHP
v   php7.0-sockets                -
p   php7.0-sqlite3                - SQLite3 module for PHP
p   php7.0-ssh2                   - Bindings for the libssh2 library
p   php7.0-sybase                 - Sybase module for PHP
v   php7.0-sysvmsg                -
v   php7.0-sysvsem                -
v   php7.0-sysvshm                -
p   php7.0-tidy                   - tidy module for PHP
v   php7.0-tokenizer              -
v   php7.0-wddx                   -
p   php7.0-xdebug                 - Xdebug Module for PHP
p   php7.0-xml                    - DOM, SimpleXML, WDDX, XML, and XSL mod
v   php7.0-xmlreader              -
p   php7.0-xmlrpc                 - XMLRPC-EPI module for PHP
v   php7.0-xmlwriter              -
p   php7.0-xsl                    - XSL module for PHP (dummy)
p   php7.0-zip                    - Zip module for PHP
Как видим доступно php-fpm 7.0
Установим php
aptitude install php7.0-fpm
а также если необходимо дополнительные модули
aptitude install php7.0-mysqli php7.0-mysql php7.0-mbstring php7.0-mcrypt php7.0-cgi php7.0-bz2 php7.0-common php7.0-curl php7.0-dev php7.0-geoip php7.0-iconv php7.0-imagick php7.0-json php7.0-opcache php7.0-xdebug php7.0-xml  php7.0-gd php7.0-cli php7.0-ctype php7.0-dba php7.0-gettext php7.0-imap php7.0-interbase php7.0-memcached
Установка MySQL(MariaDB)
Переходим на сайт - https://downloads.mariadb.org/mariadb/repositories/#mirror=Beritagar&distro=Debian&distro_release=jessie--jessie&version=10.1
Выбираем версию операционной системы и версю MySQL которую мы ходим установить Debian 8, на сегодняшний день последняя стабильная версия MariaDB 10.1. На сайте будут указаны команды для установки последней версии

Вводим указанные комады
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://kodeterbuka.beritagar.id/mariadb/repo/10.1/debian jessie main'
apt-get update
apt-get install mariadb-server
При установке нас попросит установить новый пароль root пользователя для MySQL придумаем пароль посложнее и вводим его дважды
Сгенерировать новый сложный пароль можно на нашем сервисе  генератор паролей
Далее установим NginX командой
aptitude install nginx
Установим FTP
aptitude install vsftpd
Настройка системы
Запускать сервисы из под пользователя root не хорошо и небезопасно. Поэтому мы создадим пользователя с домашней папкой и настроим систему таким образом чтобы не пускать все сервисы дальше домашней папки пользователя.
Создаем пользователя например vasya и запрещаем ему доступ по SSH
useradd vasya -b /home/ -m -U -s /bin/false
Задаем новый пароль для пользователя
passwd vasya

Настройка vsftpd
Откроем файл /etc/vsftpd.conf и отредактируем его
Разрешаем вход и запись для локальных пользователей
local_enable=YES
write_enable=YESascii_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=60000
Добавим поддрежку 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
Комады для запуска перезапуска остановки vsftpd
/etc/init.d/vsftpd start
/etc/init.d/vsftpd restart
/etc/init.d/vsftpd stop
После того как изменяли конфигурацию vsftpd FTP надо перезапустить
/etc/init.d/vsftpd restart
Соединяемся с сервером при помощи любого 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
service nginx start
service nginx stop
service nginx restart

Настройка php-fpm
Откроем файл /etc/php/7.0/fpm/pool.d/www.conf
Изменим имя пользователя и группу с www-data на vasya
user = vasya
group = vasya
Закомментируем строку listen = /run/php/php7.0-fpm.sock и вставим ниже listen = 127.0.0.1:9000
; listen = /run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
Откроем файл /etc/php/7.0/fpm/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
service php7.0-fpm start
service php7.0-fpm stop
service php7.0-fpm restart
Скопируем в папку/home/vasya/public_html/default/
файл index.php со следующим содержимым
<?php phpinfo();?>
Запустим Nginx
service nginx start
Запустим php-fpm
service php7.0-fpm start
Наберем 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. Блог. При использовании информации, пожалуйста указывайте ссылку на оригинал. Приют милитариста