Web Hosting

Для веб хостинга берем LAMP1) в качестве базовой конфигурации.

Secure Shell

Прежде чем настраивать веб хостинг мы обеспечим безопасность нашего сервера и данных наших потенциальных пользователей.

Учетные записи

Создадим отдельную группу для пользователей веб хостинга

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 нам потребуется преобразовать формат приватного ключа с помощью утилиты PuTTYgen.

SSH chroot-jail

Итак настроим сервер sshd следующим образом

  1. разрешить аутентификацию только по ключам
  2. пользователей группы 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 <<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

MySQL database

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
1) Linux Apache Mysql PHP
 
ubuntuvhost810/start.txt · Last modified: 2012/01/11 11:24 (external edit)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki