Настройка FTP сервера Ubuntu. Настройка vsftpd

Какой же web сервер без ftp. Для нашего сервера мы будем использовать vsftpd - простой, быстрый и безопасный FTP сервер, который будет доступен из мира (пробросим порты на роутере).
Установка сервера предельно проста:
sudo apt-get install vsftpd
После установки необходимо немного настроить наш сервер. Для подключения к ftp серверу используеться профиль пользователя системы. Настройка сервера производится через конфигурационный файл /etc/vsftpd.conf, откроем его и немного отредактируем. Выполним команду:
sudo nano /etc/vsftpd.conf
Не будем описывать все параметры, остановимся на самых интересных:
listen=YES
anonymous_enable=NO разрешим вход только локальным пользователям
local_enable=YES
write_enable=YES разрешим пользователям записывать файлы
local_umask=022 укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы)
После всех манипуляций не забываем перезагрузить сервер:
sudo service vsftpd restart
После всех манипуляций не забываем перезагрузить сервер:
sudo service vsftpd restart

550 Permission denied при попытке записать файлы

Сервер настроен, подключение есть, но когда мы пытаемся скопировать что то на наш сервер ничего не выходит. Получаем ошибку "550 Permission denied".
В первую очередь необходимо убедится, что в конфигурационном файле /etc/vsftpd.conf присутствует строчка write_enable=YES.
Пользователям разрешена запись файлов но ничего не происходит и мы все так же получаем 550 Permission denied.
Дело в том что у папки в которую вы хотите записать файлы должны быть соответствующие права доступа, а именно 777. Выполним команду:
sudo chmod -R 777 /my_ftp_dir/

Показывать скрытые файлы при подключение

Настроили, подключаемся - все хорошо, да не очень. Не видны скрытые файлы и папки. Для того что бы скрытые файлы стали видимыми в конфигурационном файле /etc/vsftpd.conf допишем следующею строку:
force_dot_files=YES
После всех манипуляций не забываем перезагрузить сервер:
sudo service vsftpd restart


Не переходить в спящий режим при закрытии крышки ноутбука на Ubuntu Server

Предположим мы установили Ubuntu server на ноутбук (а почему бы и нет). 
Теперь нам надо устроить так чтобы он лежал закрытый под тумбочкой и пыхтел, но вопрос в том, что закрывая крышку ноутбука он падает в спячку и естественно не доступен ни по OpenSSH ни по FTP.
Для того что бы настроить режим электропитания в ubuntu srver необходимо отредактировать файл настроек /etc/systemd/logind.conf - эта служба сама обрабатывает кнопки вкл/выкл, сна и закрытие крышки. Выполним команду:
sudo nano /etc/systemd/logind.conf
В открывшемся файле следует отредактировать, раскомментировать и изменить значения, строки:
HandleLidSwitch = ignore Отвечает за действие при открытии / закрытии крышки
HandlePowerKey = ignore Отвечает за действие при нажатии кнопки питания
HandleSuspendKey = ignore Отвечает за действие при нажатии кнопки сна
HandleHibernateKey = ignore Отвечает за действие при нажатии кнопки гибернации
Сохраняем изменения. Таким образом при закрытой крышке ноутбука ничего не будет происходить

Настройка сети вручную

После установки мы столкнулись с тем что у нас нет соединения (наверное это стандартное дело, но при установке то все было ОК). Для того что бы посмотреть список и состояние сетевых устройств выполняем команду:
$ sudo lshw -C network
для настройки сети необходимо изменить файл конфигурации /etc/network/interfaces:
$ sudo nano /etc/network/interfaces 
По скольку у нас динамический IP и сервер подключен через роутер, дописываем в файл следующие:
iface eth0 inet dhcp
auto eth0 
Сохраняем изменения. Для проверке сведений о сетевом подключение выполняем команду:
ifconfig
Теперь у нас есть подключение к сети!

Более подробнее всегда можно ознакомится на сайте вики.

Настройка mysql (my.cnf)

Настройка внешнего доступа

По скольку наш сервер находится удаленно, нам надо настроить доступ к mysql из вне (ну а если быть точным из внутренней сети). Мы принципиально не устанавливаем на стороне сервера phpMyAdmin. Для подключения к mysql используем HeidiSQL.
Для этого откроем конфигурационный файл mysql /etc/mysql/my.cnf. Выполним команду:
sudo nano /etc/mysql/my.cnf
В открывшемся файле следует заменить строку
#разрешить подключатся с любого хоста
bind-address            = 0.0.0.0
или
#разрешить подключатся только с указанного IP
bind-address            = 192.168.1.23
Не забываем после манипуляций перезагрузить mysql
sudo service mysql restart

Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server 

Возникает проблема Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server 
решим ее просто 
mysql -u root -p
USE mysql;
SELECT user,host FROM user;
Увидим перед собой таблицу со списком пользователей mysql
Для того что бы открыть доступ из вне необходимо выставить нужные привилегии пользователю. Выполним следующие команды в mysql:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_user_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Для выхода из консоли mysql используем команду \q

Не забываем после манипуляций перезагрузить mysql
sudo service mysql restart
Более подробнее всегда можно ознакомится на сайте вики.

Настройка apache (apache2.conf)

Forbidden. You don't have permission to access. LAMP

В первую очередь нам необходимо открыть доступ для нашей директории где у нас находятся web-ресурсы. Поскольку это не стандартная апачевская директория то нам надо создать доступ к своей директории где будут находится сайты. Иначе мы получим Forbidden.
Для этого откроем конфигурационный файл Apache /etc/apache2/apache2.conf. Выполним команду:
sudo nano /etc/apache2/apache2.conf
В открывшемся файле следует дописать
<Directory  "/mysites/">
        Options All
        AllowOverride All
        Require all granted
</Directory>
Не забываем после манипуляций перезагрузить apache
sudo service apache2 restart
Это позволит открыть доступ к директории из вне. Это решает проблему "Forbidden. You don't have permission to access /"

Добавление виртуальных хостов

Для того что бы апач видел наши сайты и сопоставлял их с доменами, в конфигурационный файл Apache /etc/apache2/apache2.conf необходимо добавить виртуальные хосты.
Выполним команду:
sudo nano /etc/apache2/apache2.conf
В открывшемся файле в самый конец файла дописываем:
NameVirtualHost *:80
<VirtualHost *:80>
      DocumentRoot "/mysites/test1/www/"
      ServerName domain-name.com
      ServerAlias www.domain-name.com
</VirtualHost>
....
<VirtualHost *:80>
      DocumentRoot "/mysites/test10/www/"
      ServerName domain-name.com
      ServerAlias www.domain-name.com
</VirtualHost>
Не забываем после манипуляций перезагрузить apache
sudo service apache2 restart
По уму виртуальные хосты должны хранится в отдельной папке, по мимо этого с отдельным конфигурационным файлом для каждого сайта.
То есть мы должны создать для каждого виртуального хоста отдельный конфиг в папке sites-available.
Для этого создадим отдельный конфиг, скопировав базовый функционал
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testsite.conf
Далее откроем этот файл и допишем туда выше указанные параметры
sudo /etc/apache2/sites-available/testsite.conf

Настройка OpenSSH server

Какой же минимальный пакет утилит и программ требуется для комфортной работы с чистой установленной Ubuntu server 14.04

Сервер OpenSSH

Ни один сервер не может существовать без удаленного доступа к нему. Именно для этого мы устанавливаем и настраиваем ssh-сервер. По скольку мы не собираемся подключатся с нашего сервера к другим, то мы говорим только про OpenSSH server.

Установка сервера OpenSSH очень простая. Для установки сервер-приложения OpenSSH на нашей системе используем команду:
sudo apt-get install openssh-server
Дожидаемся пока все пакеты буду выкачены и установлены. 
Теперь нам необходимо настроить наш свежи установленный openssh-server. Для этого отредактируем файл настроек /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Обратим внимание на следующие параметры:
Port 22 - порт подключения
Protocol 2 - вторая версия протокола ssh
После сделанных манипуляций необходимо перезагрузить ssh-сервер:
sudo /etc/init.d/ssh restart

Ошибка при подключение через PUTTY. OpenSSH "Access Denied". SSH "Access Denied" Putty


Настроив сервер и попробовав подключится к нему с соседнего устройства используя всем известный PUTTY мы получили ошибку "Access Denied".
Все дело в том, что необходимо в настройках сервера включить аутентификацию по паролю. Для этого открываем файл настроек /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
И указываем параметр: 
PasswordAuthentication = Yes
После сделанных манипуляций необходимо перезагрузить ssh-сервер:
sudo /etc/init.d/ssh restart
После успешной перезагрузке подключаемся с помощью Putty без проблем.

Более подробнее всегда можно ознакомится на сайте вики

Настройка php.ini

Для того что бы размещать у себя довольно серьезные ресурсы нам не достаточно стандартных настроек PHP. Для этого немного модифицируем PHP что бы он позволял нам больше.

Отредактируем конфигурационный файл PHP, который находится по адресу etc/php5/apache2/php.ini. Выполним команду:
sudo nano /etc/php5/apache2/php.ini
В открывшемся фале заменим следующие значения:
max_execution_time = 120
max_input_time - комментируем данную строчку ";"
memory_limit = 128M
upload_max_filesize = 150M 
post_max_size = 200M
Сохраняем изменения и закрываем файл.

Для того что бы изменения вступили в силу необходимо перезагрузить apache-сервер:
sudo service apache2 restart

Настройка SSMTP почтового сервера

При настройке SSMTP почтового сервера для отправки e-mail сообщений через сторонний smtp-сервер, к примеру Gmail, в конфигурационном файле PHP указываем следующий параметр:
sendmail_path = /usr/sbin/ssmtp -t
Для того что бы изменения вступили в силу необходимо перезагрузить apache-сервер:
sudo service apache2 restart