Ubuntu 16. Установка Nginx php-fpm 7 MySQL(MariaDB) FTP
В этой статье рассмотрим установку на Linux Ubuntu 16 Вебсервера 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) Подготовка системы
apt install aptitude
aptitude update
Установка php-fpm7
Установим 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
Переходим на сайт - https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=Ubuntu&distro_release=xenial--ubuntu_xenial&version=10.1
Выбираем версию операционной системы и версю MySQL которую мы ходим установить Ubuntu 16, на сегодняшний день последняя стабильная версия MariaDB 10.1. На сайте будут указаны команды для установки последней версии Вводим указанные комады
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.1/ubuntu xenial main'
Обновляем и устанавливаем
apt update
apt install mariadb-server
В ходе установки попросит ввести пароль доступа к MySQL Сгенерировать новый сложный пароль можно на нашем сервисе генератор паролей
Далее установим NginX командой
aptitude install nginx
Установим FTP
aptitude install vsftpd
Запускать сервисы из под пользователя root не хорошо и небезопасно. Поэтому мы создадим пользователя с домашней папкой и настроим систему таким образом чтобы не пускать все сервисы дальше домашней папки пользователя.
Создаем пользователя например vasya и запрещаем ему доступ по SSH
useradd vasya -b /home/ -m -U -s /bin/false
Задаем новый пароль для пользователя
passwd vasya
Откроем файл /etc/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=60000
Добавим поддрежку ipv6
listen=NO
listen_ipv6=YES
Запретим пользователю FTP выходить за пределы домашней директории
chroot_local_user=YES
chroot_list_enable=NO
Разрешим пользователю запись в корень своей домашней директории
allow_writeable_chroot=YES
Разрешим просмотр скрытых файлов
force_dot_files=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
log - сюда будет писать логи nginx
в папке public_html создадим папку default временно для проверки работоспособности nginx и php
а также папку site.com(название вашего сайта)
Откроем файл /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
Откроем файл /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 то все настроено правильно Можно заливать файлы, заводить БД и пользоваться сайтом