Веб-сервер · 3 min read · Jan 07, 2026
Создание собственного веб-сервера с BIND и Apache на CentOS 5 (упрощенная версия) - Страница 2
Снова прыгаем :) На этот раз немного дальше, до строки 1005, там вы должны увидеть:
NameVirtualHost *:80Директива NameVirtualHost говорит Apache, что мы хотим использовать виртуальный хостинг на основе имени, или, проще говоря, множество веб-сайтов, использующих один и тот же IP-адрес. Добавьте пару пустых строк под ‘#NameVirtualHost *:80’ и на строке прямо под ней укажите NameVirtualHost и ваше имя хоста или IP-адрес, за которым следует :80. ‘:80’ означает, что мы используем виртуальный хостинг на основе имени для протокола HTTP.
Таким образом, вы должны получить что-то вроде этого:
NameVirtualHost host.website.com:80Теперь мы почти закончили настраивать наш файл httpd.conf. Единственное, что нам осталось настроить, это если кто-то посетит наш сервер, используя IP, а не доменное имя, мы установим наше имя хоста по умолчанию, чтобы оно было видно этим пользователям. Мы можем вставить это в конец файла конфигурации
ServerAdmin [email protected]
DocumentRoot /www
ServerName 77.77.197.69
ErrorLog logs/error_log
CustomLog logs/access_log common
Чтобы упростить управление нашим
httpd.conf
мы должны добавить эту строку внизу файла:
Include conf/vhosts/*.confЭто означает, что мы будем включать все .conf записи из /etc/httpd/conf/vhosts, где мы будем хранить виртуальные хосты для наших веб-сайтов по мере их добавления. Это будет легче понять, по мере того как мы будем двигаться дальше. Хорошо, мы почти закончили, сохраните httpd.conf и продолжайте.
Создание директорий веб-сайта
Теперь мы должны создать структуру директорий веб-сайта, чтобы правильно управлять нашими веб-сайтами. Сначала давайте создадим основную директорию:
mkdir /wwwТеперь мы делаем root владельцем /www:
chown root.root /wwwПрежде чем идти дальше, нам нужно внести одно изменение, мы должны добавить зону для host.website.com в наш named.conf, потому что мы использовали его как имя хоста в httpd.conf, и мы получим ошибку, если не сделаем этого. Поэтому мы должны добавить это в named.conf
zone "host.website.com" IN {
type master;
file "/var/named/host.website.com.db";
};
И, конечно, ниже содержимое файла:
/var/named/chroot/var/named/host.website.com.db$TTL 14400
@ 86400 IN SOA ns1.website.com. [email protected]. (
2008021501 ; serial, todays date+todays
86400 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
host.website.com. 86400 IN NS ns1.website.com.
host.website.com. 86400 IN NS ns2.website.com.
host.website.com. IN A 77.77.197.69
localhost.host.website.com. IN A 127.0.0.1
Вы можете добавить столько записей, сколько хотите. Прежде чем перезапустить named, создайте ссылку:
ln -s/var/named/chroot/var/named/host.website.com.db /var/named/host.website.com.dbservice named restartТеперь мы возвращаемся к структуре директорий. Итак, мы добавили зону для нашего
website.com
теперь нам нужна виртуальная директория для него.
cd /www
mkdir website.com
cd website.com
mkdir html
mkdir html/cgi-bin
mkdir databases
mkdir logs
Поскольку мы создали директорию для нашего веб-сайта, все, что нам нужно, это пользователь, который будет иметь право управлять этим доменным именем. Мы можем сделать это с помощью:
useradd -d /www/your-domain/ domain_userили, если вы хотите ограничить доступ к оболочке для пользователя, используйте это:
useradd -d /www/your-domain/ -s /sbin/nologin domain_userПосле добавления пользователя мы можем изменить его пароль с помощью:
passwdУ этого пользователя все еще нет своего “домашнего” :) места, которое он владеет, теперь мы добавляем это:
cd /www && chown domain_user:domain_user website.comЕсли вы создаете директорию “databases”, то вам нужно будет изменить владельца на пользователя mysql, иначе MySQL не сможет записывать в файлы базы данных. Все директории, поддиректории и файлы, связанные с базами данных, должны принадлежать пользователю mysql, и мы можем сделать это с помощью этой команды:
cd website.com && chown -R mysql:mysql databasesС этим мы завершили создание структуры директорий веб-сайта, теперь единственное, что осталось сделать, это сказать Apache, где находится наш веб-сайт, и мы закончили.
Теперь давайте немного вернемся, когда мы настраивали httpd.conf, мы вставили там строку:
Include conf/vhosts/*.confТеперь вы поймете, почему мы это сделали, если вы еще не поняли. Поскольку папка еще не существует, мы должны создать ее:
cd /etc/httpd/conf && mkdir vhostsТеперь мы заходим в директорию vhosts:
cd vhostsи создаем новый файл для нашего домена:
nano website.com.80.confМы должны вставить следующее в этот файл:
ServerAdmin [email protected]
ServerName website.com
ServerAlias www.website.com
DocumentRoot /www/website.com/html
ScriptAlias /cgi-bin/ /www/website.com/html/cgi-bin/
ErrorLog /www/website.com/logs/error_log
CustomLog /www/website.com/logs/access_log combined
Мы наконец достигли конечной точки, когда мы сказали apache, где находится директория нашего веб-сайта, теперь каждый запрос от браузера для www.website.com будет читаться из /www/website.com/html; туда вы должны поместить свои файлы, например index.html. Теперь мы можем включить наш httpd или перезапустить, если он уже был включен.
service httpd startили
service httpd restartЕсли у вас возникли какие-либо проблемы с этим руководством или с конфигурацией Apache или BIND, не стесняйтесь обращаться ко мне. Я уверен, что у меня были такие же и даже более серьезные проблемы - я буду рад помочь в свободное время.
Автор
: Эмир Ибрагимбегович
E:
[email protected]
W:
Спасибо:
Тони Бхимани, Себастьен Уэйнс, Найяр Ахмад
Get new posts in your inbox
No spam. Unsubscribe anytime.