Инструкция уже оттестированная на xubuntu 16.04
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mc nano python-software-properties snmp
Mysql
sudo apt-get install mariadb-server mariadb-client
настройка
sudo service mysql stop
sudo mysql_install_db
sudo service mysql start
sudo mysql_secure_installation
//вводим рут пароль = просто жмем энтер (пароль у нас еще не установлен, хотя можно что то ввести), потом предложит установить пароль для рута мускула
ставим новый пароль мускулу
далее несколько раз надо будет нажать y на предложеные вопросы
// проверим
mysql -V
// зайдем под рутом, надо будет пароль написать
sudo mysql -p
// вывод помощи
\h
// выход
exit
// теперь нам нужен пользователь для phpmyadmin
sudo mysql --user=root mysql
// выполняем три запроса, где qwerty это пароль
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'qwerty';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ставим пых и сервер
sudo apt-get install php-fpm php-gd php-gmp php-ldap php-mysql php-recode php-snmp php-sqlite3 php-tidy php-xml php-xmlrpc php-bz2 php-bcmath php-enchant php-intl php-mbstring php-mcrypt php-soap php-xsl php-zip php-curl php-imagick
sudo apt-get install nginx-full
создаем папки
cd /srv
sudo mkdir www www/localhost ftp logs logs/server logs/mysql logs/ftp logs/php
добавляем группу и пользователя нашего сервера
sudo addgroup server
sudo useradd -d /srv -g server -s /bin/bash server
sudo passwd server
sudo chmod -R 777 /srv
sudo chown server:server /srv
настраиваем nginx
делаем резервные копии файлов которые будем редактировать (позже, тонкая настройка)
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.def
добавляем хост localhost
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/localhost
удаляем симлинк на дефолтную конфигурацию
sudo rm /etc/nginx/sites-enabled/default
активируем наш новый хост
sudo ln -nfs /etc/nginx/sites-available/localhost /etc/nginx/sites-enabled/
редактируем конфиг
sudo nano /etc/nginx/sites-available/localhost
зажать ctrl + k держать пока файл не очистится
вставить все что между //
//
server {
listen 80 default_server;
listen [::]:80 default_server;
root /srv/www/localhost;
index index.html index.php;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
//
sudo service nginx configtest
sudo service nginx reload
настройка php-fpm
резервные копии (тюнинг позже)
sudo cp /etc/php/7.0/fpm/php-fpm.conf /etc/php/7.0/fpm/php-fpm.conf.def
sudo cp /etc/php/7.0/fpm/php.ini /etc/php/7.0/fpm/php.ini.def
sudo cp /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/server.conf
переименовываем для памятки в файл без расширения, инклюды только conf файлов
sudo mv /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/default
настройка
так же стереть все и вставить (тюнинг позже)
sudo nano /etc/php/7.0/fpm/pool.d/server.conf
//
[server]
;prefix = /path/to/pools/$pool
user = server
group = server
listen = /run/php/php7.0-fpm.sock
;listen.backlog = 511
listen.owner = server
listen.group = server
listen.mode = 0666
;listen.acl_users =
;listen.acl_groups =
;listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500
;pm.status_path = /status
;ping.path = /ping
;ping.response = pong
;access.log = log/$pool.access.log
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
;slowlog = log/$pool.log.slow
;request_slowlog_timeout = 0
;request_terminate_timeout = 0
;rlimit_files = 1024
;rlimit_core = 0
;chroot =
;chdir = /var/www
;catch_workers_output = yes
;clear_env = no
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
;slowlog = log/$pool.log.slow
;request_slowlog_timeout = 0
;request_terminate_timeout = 0
;rlimit_files = 1024
;rlimit_core = 0
;chroot =
;chdir = /var/www
;catch_workers_output = yes
;clear_env = no
;security.limit_extensions = .php .php3 .php4 .php5 .php7
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
//
sudo service php7.0-fpm reload
делаем тест файл
sudo nano /srv/www/localhost/index.php
//
<?php
$start_time = microtime(true);
$done = 0;
$count = 0;
while (!$done) {
for ($idx = 0; $idx < 10000; $idx++) {
$x = 45 * 67 / 2 + $idx - 239892382.23232323;
$y = 3483434.33483 / 28328372 * 384 + $idx - $x;
}
$count++;
$now = microtime(true);
if ($now - $start_time >= 1.0) { $done = 1; }
}
echo 'CPU Benchmark: ' . $count . "\n";
phpinfo();
//
сохранить комбинация клавиш ctrl + o
выйти ctrl + x
ставим pma
cd /srv/www/localhost
sudo wget
https://files.phpmyadmin.net/p ... ar.gz
sudo tar -zxf phpMyAdmin-4.6.4-all-languages.tar.gz
sudo mv /srv/www/localhost/phpMyAdmin-4.6.4-all-languages /srv/www/localhost/pma
файл архива оставляем для теста фтп
настройка
удалить директорию setup
переименовать config.sample.inc.php -> config.inc.php
отредактировать config.inc.php
// $cfg['blowfish_secret'] = SHA1('1234567890qwerty');
sha1 обязателен
в самом пма нижний правый угол отобразит ссылку на установку таблиц phpmyadmin
FTP
sudo apt-get install vsftpd
sudo usermod -d /srv/ftp ftp
sudo addgroup ftpuser
sudo useradd -d /srv/ftp -g ftpuser ftpuser
sudo passwd ftpuser
sudo chmod 555 /srv/ftp
sudo chown ftpuser:ftpuser /srv/ftp
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.def
sudo nano /etc/vsftpd.conf
зажать ctrl + k держать пока файл не очистится
# Запускать vsftpd в независимом режиме
listen=YES
# Делаем анонимный доступ
anonymous_enable=YES
# Анонимные входят без пароля
no_anon_password=YES
# Анонимные будут попадать в публичную директорию
anon_root=/srv/ftp
anon_umask=022
# Разрешаем вход локальным пользователям с правом записи в домашних директориях
local_enable=YES
write_enable=YES
local_umask=022
# Локальные пользователи будут входить только в свои домашние каталоги
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
# Сообщения будут записываться в собственный журнал
#xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log
# Установки публичного FTP
max_clients=100
max_per_ip=10
hide_ids=YES
idle_session_timeout=600
data_connection_timeout=120
dirmessage_enable=YES
ftpd_banner=Welcome!
sudo service vsftpd reload