Для веб хостинга берем LAMP1) в качестве базовой конфигурации.
Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей.
Создадим отдельную группу для пользователей веб хостинга
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. Генератор ключа будет задавать вопросы - на все вопросы жмите enter :)
su - ${WEBUSER} ssh-keygen cd .ssh cat id_rsa.pub >> authorized_keys
Итак теперь у нас есть приватная и публичная части ключа. Публичный ключ записан в список авторизованных ключей.
Теперь мы можем использовать приватный ключ id_rsa для аутентификации на сервере. Для использования в WinSCP или PuTTY нам потребуется преобразовать формат приватного ключа с помощью утилиты PuTTYgen.
Итак настроим сервер sshd следующим образом
Правим файл конфигурации сервер 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>
echo "umask 002" >> /etc/apache2/envvars
Перейдем в каталог cd /etc/apache2/sites-available/ и создадим в нем файл drivesource следующего содержания
export WEBUSER=drivesource cat <<EOFCONFIG >/etc/apache2/sites-available/${WEBUSER} <VirtualHost *:80> 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/ <Directory /var/vhost/${WEBUSER}/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> <Directory /var/vhost/${WEBUSER}/htdocs> Options Indexes Includes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> EOFCONFIG a2ensite ${WEBUSER}
Активируем сайт
/etc/init.d/apache2 reload
WEBUSER=drivesource DBPASS=secret export WEBUSER DBPASS cat <<EOFSCRIPT create database ${WEBUSER}_main; GRANT ALL PRIVILEGES ON ${WEBUSER}_main.* TO '${WEBUSER}'@'localhost' IDENTIFIED BY '${DBPASS}'; commit; exit; EOFSCRIPT mysql -u root -p