Настройка виртуальных хостов в Centos 6 используя ITK

Если к вам в руки попал VPS/VDS и вы планируете разместить на нем свои сайты/проекты, то неизбежно встает вопрос о том, как их сконфигурировать.

 

Естестственным решением будет выделить по отдельному пользователю каждому проекту, таким образом, чтобы вся логика была разнесена и сайты были полностью независимы.

 

Для этих целей я использую расширение сервера Apache под названием ITK. При его конфигурации каждому сайту задается домашняя директория, пользователь и группа.

Модуль запускает процесс Apache для каждого сайта под заданным пользователем с заданной группой. Так, для сайта Technerium создадим пользователя technerium и группу technerium. Тогда при доступе к сайту Apache будет стартовать под пользователем technerium и группой technerium. Благодаря этому, процесс будет иметь доступ только к папке соответствующего сайта, но не других проектов.

 

Сервер базируется на 64-разрядной Centos 6.

 

Приступим к настройке.

 

Заходим под рутом на сервер.

 

Подготовка сервера

 

Настройка ITK

 

Выполняем следущие команды:

yum update

обновили зависимости

 

yum -y install httpd mod_ssl php php-common php-gd php-xml php-mbstring php-pdo php-mysql httpd-itk.x86_64

установили необходимые модули php и собственно itk.

 

Теперь необходимо сконфигурировать Apache:

 

service httpd stop

останавливаем сервер Apache

 

vim /etc/sysconfig/httpd

редактируем конфигурационный файл Apache. Находим и исправляем или добавляем если не нашли следующую строку

HTTPD=/usr/sbin/httpd.itk

 

Настраиваем PHP:

vim /etc/httpd/conf.d/php.conf

 

добавляем в файл конфига эту запись:

<IfModule itk.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
 

Конфигурация MySQL

Иногда на сервере по умолчанию стоит какая-нибудь древняя версия MySQL, например 5.1

 

Конечно, это не дело и надо бы обновить.

 

yum remove mysql mysql-server  mysql-community-libs  mysql-community-common

удалили старье

 

Забэкапим старые конфиги и базы на всякий случай:

 

mv /var/lib/mysql /var/lib/mysql_bak
mv /etc/my.cnf.rpmsave /etc/my.cnf.rpmsave_bak

 

Затем идем на http://dev.mysql.com/downloads/repo/yum/ и внизу видим таблицу. Там находим ссылку для подходящей версии вашей операционки. Например, Centos 6 соответствует "Red Hat Enterprise Linux 6 / Oracle Linux 6"

Кликаем по кнопке Download, на открывшейся странице под длинным текстом видим ссылку "No thanks, just start my download.". Копируем адрес ссылки, например "http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm
"

 

Затем в консоли запускаем команду

wget <ссылка> -O centos_mysql_repo.rpm

 

например,

wget http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm -O centos_mysql_repo.rpm

Таким образом, мы скачиваем конфигурационный файл репозитория на сервер.

 

Далее запускаем команду

yum localinstall centos_mysql_repo.rpm

она установит репозиторий в систему. Сам файл теперь можно удалить.

 

затем редактируем конфигурацию установленного репозитория

vim /etc/yum.repos.d/mysql-community.repo

 

Репозиторий может ссылаться на несколько версий MySQL, по умолчанию включена 5.7 (флаг enabled). Включите нужную вам, а 5.7 выключите.

 

Затем устанавливаем и запускаем сервер MySQL

yum install mysql-community-server
service mysqld restart

 

На последок добавим запуск сервера в автозагрузку

chkconfig mysqld on
chkconfig --list mysqld

 

теперь необходимо настроить сам сервер MySQL

 

Задаем пароль root (например, 123456):

mysqladmin -u root password '123456'

 

Настраиваем MySQL для удаленного подключения наших пользователей:

vim /etc/my.cnf

 

редактируем конфиг, изменяем/добавляем следующую строку:

bind-address=0.0.0.0

 

Настраиваем фаерволл чтобы открыть порт MySQL:

vim /etc/sysconfig/iptables

 

в конфиге добавляем следующую строку (обязательно выше строки COMMIT)

-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

 

рестартуем фаерволл

service iptables restart

 

Настройка FTP

Здесь настроим FTP доступ для наших пользователей:

 

Устанавливаем необходимый сервис

yum -y install vsftpd ftp

 

редактируем конфиг

vi /etc/vsftpd/vsftpd.conf

 

Приводим опции к следующему виду:

anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
use_localtime=YES
ftpd_banner=FTP configuration described on technerium.ru

 

Стартуем FTP и добавляем в автозагрузку

service vsftpd restart
chkconfig vsftpd on

Добавление пользователя

 

Centos пользователь

 

Нам необходимо выбрать домашнюю директорию для пользователя. Например, все домашние папки будут располагаться в /sites/ и у каждого проекта будет своя папка и юзер.

 

Для technerium сделаем соответствующего пользователя/группу и папки логов, собственно файлов сайта и папку для временных файлов

 

mkdir -p /sites/technerium/logs
mkdir -p /sites/technerium/public_html/www
mkdir -p /sites/technerium/tmp
groupadd technerium
useradd technerium -d '/sites/technerium' -g 'technerium'

 

Задаем пароль 12345 для пользователя

passwd technerium

вводим пароль 12345

 

Задаем доступ к папкам:

chown -R technerium:technerium /sites/technerium
chmod -R 755 /sites/technerium

 

Виртуальный хост

 

Добавляем виртуальный хост Apache. Эта конфигурация будет задавать группу для процесса Apache при доступе к сайту:

vim /etc/httpd/conf/httpd.conf

 

в конфиге внизу правим строки:

По умолчанию (при доступе по IP, а не доменному имени) сервер будет рендерить содержимое папки /sites/default/public_html/www

 

NameVirtualHost *:80

<Directory "/sites/default/public_html/www">
     AllowOverride All
</Directory>

 

Ниже добавляем конфигурацию хоста для сайта:

<VirtualHost *:80>
     ServerAdmin admin@technerium.ru
     ServerName technerium.ru
     ServerAlias www.technerium.ru
     DocumentRoot /sites/technerium/public_html/www/
     ErrorLog /sites/technerium/logs/error.log
     CustomLog /sites/technerium/logs/access.log combined
     AssignUserId technerium technerium
     php_admin_value open_basedir  "/sites/technerium"
     php_admin_value safe_mode "off"
     php_admin_value upload_tmp_dir "/sites/technerium/tmp"
     php_admin_value session.save_path "/sites/technerium/tmp"
</VirtualHost>

Сохраняем конфиг.

 

Рестартуем сервер и добавляем в автозагрузку

service httpd restart
chkconfig httpd on

 

Пользователь и база данных MySQL

 

Подключаемся к MySQL

mysql -u root -p

здесь вводим пароль рута (в нашем примере 12345).

 

Попадаем в консоль сервера MySQL

 

Создаем базу данных с именем techdb (обратите внимание на обратные кавычки!)

CREATE DATABASE `techdb`;

 

Создаем пользователя techuser с паролем 123

CREATE USER 'techuser'@'%' IDENTIFIED BY '123';

за счет % в команде мы позволяем доступ этому пользователю с любого IP, более подробная настройка легко гуглится

 

даем доступ пользователю к базе

GRANT ALL PRIVILEGES ON `techdb`.* TO 'techuser'@'%' WITH GRANT OPTION;

 

Перезагружаем настройки доступа в базе

FLUSH PRIVILEGES;

 

Выходим из консоли MySQL

quit;

 

Ну и я еще на всякий случай рестартую сервер

service mysqld restart

 

Категория: 
Была ли статья полезна: 

Добавить комментарий

HTML

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <p>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Поместите примеры вашего исходного кода в теги <code>...</code> or <source>...</source> и он будет красиво отформатирован.

Plain text

  • Поместите примеры вашего исходного кода в теги <code>...</code> or <source>...</source> и он будет красиво отформатирован.
  • Строки и параграфы переносятся автоматически.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <code> <source>
CAPTCHA
Пожалуйста, подтвердите, что вы человек.