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 то все настроено правильно
Можно заливать файлы, заводить БД и пользоваться сайтом

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

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги