====== Web Hosting ======
Для веб хостинга берем LAMP((Linux Apache Mysql PHP)) в качестве базовой конфигурации.
===== Secure Shell =====
Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей.
* [[usergroup|учетные записи и ключи авторизации ssh]]
* [[sshd_chroot_jail|chroot-jail средствами sshd]]
==== Учетные записи ====
Создадим отдельную группу для пользователей веб хостинга
groupadd -r webuser
Теперь создадим учетную запись пользователя веб хостинга
export WEBUSER=drivesource
useradd -s /bin/bash -G www-data,webuser -m ${WEBUSER}
Создадим папку для веб-сайта drivesource. Обратите внимание что **владельцем папки** /var/vhost/drivesource должен быть обязательно **root**!
mkdir /var/vhost/${WEBUSER}
mkdir /var/vhost/${WEBUSER}/htdocs /var/vhost/${WEBUSER}/cgi-bin
chown ${WEBUSER}.www-data /var/vhost/${WEBUSER}/*
chmod 6750 /var/vhost/${WEBUSER}/*
mkdir /var/log/apache2/${WEBUSER}
chown root.adm /var/log/apache2/${WEBUSER}
chmod 0750 /var/log/apache2/${WEBUSER}
==== Ключи ssh ====
Сгенерируем для него ключи аутентификации ssh. Генератор ключа будет задавать вопросы - на все вопросы жмите enter :)
su - ${WEBUSER}
ssh-keygen
cd .ssh
cat id_rsa.pub >> authorized_keys
Итак теперь у нас есть приватная и публичная части ключа. Публичный ключ записан в список авторизованных ключей.
Теперь мы можем использовать приватный ключ **id_rsa** для аутентификации на сервере. Для использования в WinSCP или PuTTY нам потребуется преобразовать формат приватного ключа с помощью утилиты [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|PuTTYgen]].
==== SSH chroot-jail ====
Итак настроим сервер sshd следующим образом
- разрешить аутентификацию только по ключам
- пользователей группы webuser заключать в chroot-jail
Правим файл конфигурации сервер sshd **/etc/ssh/sshd_config**
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match group webuser
ForceCommand internal-sftp
ChrootDirectory /var/vhost/%u
X11Forwarding no
AllowTcpForwarding no
Перезапустим сервер ssh чтобы параметры вступили в силу
/etc/init.d/ssh restart
Теперь пользователи группы webuser могут получить доступ к сайту **только по протоколу SFTP**
root@deamon:~# sftp drivesource@localhost
Connecting to localhost...
drivesource@localhost's password:
sftp> ls
htdocs
sftp> pwd
Remote working directory: /
sftp>
===== Apache Virtual Host =====
echo "umask 002" >> /etc/apache2/envvars
Перейдем в каталог cd /etc/apache2/sites-available/ и создадим в нем файл drivesource следующего содержания
export WEBUSER=drivesource
cat </etc/apache2/sites-available/${WEBUSER}
ServerAdmin svschwartz[at]gmail.com
DocumentRoot /var/vhost/${WEBUSER}/htdocs
ServerName ${WEBUSER}.ru
ServerAlias www.${WEBUSER}.ru
ErrorLog /var/log/apache2/${WEBUSER}/error.log
TransferLog /var/log/apache2/${WEBUSER}/access.log
CustomLog /var/log/apache2/${WEBUSER}/traf.log traff
CustomLog /var/log/apache2/${WEBUSER}/combined.log combined
ScriptAlias /cgi-bin/ /var/vhost/${WEBUSER}/cgi-bin/
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
EOFCONFIG
a2ensite ${WEBUSER}
Активируем сайт
/etc/init.d/apache2 reload
===== MySQL database =====
WEBUSER=drivesource
DBPASS=secret
export WEBUSER DBPASS
cat <