Для веб хостинга берем 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