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)По умолчанию в репозиториях 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[/code]После обновляемся
aptitude update[/code]После обновления смотрим какие версии php нам доступны -
aptitude search php[/code]
Нам выдаст подобный список
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[/code]Как видим доступно php-fpm 7.0
Установим php
aptitude install php7.0-fpm[/code]а также если необходимо дополнительные модули
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[/code]
Установка 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[/code]При установке нас попросит установить новый пароль root пользователя для MySQL придумаем пароль посложнее и вводим его дважды
Сгенерировать новый сложный пароль можно на нашем сервисе генератор паролейДалее установим NginX командой
aptitude install nginx[/code]Установим FTP
aptitude install vsftpd[/code]
Настройка системыЗапускать сервисы из под пользователя root не хорошо и небезопасно. Поэтому мы создадим пользователя с домашней папкой и настроим систему таким образом чтобы не пускать все сервисы дальше домашней папки пользователя.
Создаем пользователя например vasya и запрещаем ему доступ по SSH
useradd vasya -b /home/ -m -U -s /bin/false[/code]Задаем новый пароль для пользователя
passwd vasya[/code]
Настройка vsftpdОткроем файл /etc/vsftpd.conf и отредактируем его
Разрешаем вход и запись для локальных пользователей
local_enable=YES
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES[/code]Выставляем права по умолчанию для файлов заливаемых пользователем по формуле 777 отнять права которые надо получить допустим 755.
777-755=22 выставляем маску 22 и все файлы у нас будут заливаться с правами 755
local_umask=022[/code]Запретим доступ анонимным пользователям
anonymous_enable=NO[/code]Добавим работу в пассивном режиме
pasv_min_port=50000
pasv_max_port=60000[/code]Добавим поддрежку ipv6
listen=NO
listen_ipv6=YES[/code]Запретим пользователю FTP выходить за пределы домашней директории
chroot_local_user=YES
chroot_list_enable=NO[/code]Разрешим пользователю запись в корень своей домашней директории
allow_writeable_chroot=YES[/code]Откроем файл /etc/pam.d/vsftpd Так как у нашего пользователя нет SSH доступа то чтобы работал FTP доступ закомментируем последнюю строчку
#auth required pam_shells.so[/code]Комады для запуска перезапуска остановки vsftpd
/etc/init.d/vsftpd start
/etc/init.d/vsftpd restart
/etc/init.d/vsftpd stop[/code]После того как изменяли конфигурацию vsftpd FTP надо перезапустить
/etc/init.d/vsftpd restart[/code]Соединяемся с сервером при помощи любого 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;
}
}
}[/code]
Этот конфиг настроен таким образом что при обращении к серверу по 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[/code]
Настройка php-fpm
Откроем файл /etc/php/7.0/fpm/pool.d/www.conf
Изменим имя пользователя и группу с www-data на vasya
user = vasya
group = vasya[/code]Закомментируем строку 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[/code]Откроем файл /etc/php/7.0/fpm/php.ini
установим следующие значения
Запретить php выход за пределы домашней папки
open_basedir ="/home/vasya/"[/code]
Разрешить коротки теги(многие разработчики пишут скрипты короткими тегами)
short_open_tag = On[/code]Установим папку для временных файлов
upload_tmp_dir = "/home/vasya/tmp/"[/code]Установим папку для хранения сессий php
session.save_path = "/home/vasya/session/"[/code]
Команды для запуска перезапуска остановки php-fpm
service php7.0-fpm start
service php7.0-fpm stop
service php7.0-fpm restart[/code]Скопируем в папку/home/vasya/public_html/default/
файл index.php со следующим содержимым
<?php phpinfo();?>[/code]Запустим Nginx
service nginx start[/code]Запустим php-fpm
service php7.0-fpm start[/code]Наберем http://ваш-ip/
Если появилось phpinfo то все настроено правильно
Можно заливать файлы, заводить БД и пользоваться сайтом
Комментарии