11 янв 2017 08:39 1

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

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

Комментарии

  1. Цитата

    Marik

    21 окт 2021 00:55

    123 sgsd gsgsdgd gs dg dgs dg

Добавление комментария

  • Вопрос: Сколько будет Два плюс 3
Marik.kz. Блог.