Створення локального серверу пидтримки мережного часу и його захист
Державний вищий навчальний заклад
«Український державний хіміко-
Кафедра спеціалізованих комп’ютерних систем
РОЗРАХУНКОВО-ПОЯСНЮВАЛЬНА ЗАПИСКА
До курсової роботи з системного програмного забезпечення
Створення локального серверу підтримки мережного часу і його захист.
Студент групи 4--IC-1 Абдурахмонзода Ш.
Керівник роботи
Дніпропетровськ
2012
ДВНЗ «Український державний хіміко-технологічний університет»
Кафедра: Спеціалізованих комп’ютерних систем
Дисципліна: “Системне програмне забезпечення”
Спеціальність: " Спеціалізовані комп’ютерні системи "
Курс: 4 Група: 4-IC-1 Семестр: 7 Тетраместр: 14
ЗАВДАННЯ
на курсову роботу студента
______________________________
Тема роботи: Створення локального серверу підтримки мережного часу і його захист.
Термін здачі студентом закінченої роботи:.____________
Вихідні дані роботи:
______________________________
______________________________
Зміст розрахунково-пояснювальної записки :
Вступ
1. Теоретична частина
- Проектна частина
2.1 Постановка задачі.
2.2. Розробка алгоритма рішення задачі.
- Програмна реалізація алгоритма.
- Опис розробленої програми.
Висновки
Список використаних джерел
Додатки
А. Інструкції по використанню програмних модулів.
Б. Лістінг програмних модулів
В. Протокол виконання програми
Дата видачі завдання: ___________
Календарний план
№ п/п |
Назва етапів курсової роботи |
Термін виконання етапів роботи |
Примітки |
1 |
Аналіз літературних джерел |
|
|
2 |
Розробка програмного |
|
|
3 |
Оформлення пояснювальної |
||
4 |
Захист курсової роботи |
Студент ___________________
(підпис)
Керівник: ___________________
(підпис)
Содержание
Вступление.
1.Установка локального WEB–сервера
и его компонентов.
1.1. Структура каталогов.
1.2. Установка Apache.
1.3. Конфигурационные файлы сервера Apache.
1.4Создание виртуальных хостов.
2.Практичекая часть.
2.1.Для системы Linux.
2.2.Для системы Windows.
3.Список литературы.
Вступление.
Работающий
Webсервер и СУБДтребуются при
создании Интернет проектов с использованием
современных технологий. Наилучший
вариант — это установка
Язык программирования РНР, специально
предназначенный для работы в Интернет,
изначально создавался под Unixподобные
операционные системы — Linux, FreeBSD, и т.п.
Под Windowsсуществует свой аналог РНР, который
называется ASP(Active Server Pages). Он полностью
ориентирован на Windowsи позволяет учитывать
и использовать все особенности этой операционной
системы. При этом в качестве HTTPсервера
рекомендуют использовать IIS(Internet Information
Server) — продукт компании Microsoft.
Желательно, чтобы на сервере и на компьютере,
на котором создаются и тестируются РНР
-сценарии, стояли одинаковые операционные
системы. Бывает так, что РНР -программа
отлично работает на Windowsкомпьютере, но
отказывается работать или работает некорректно
под Linux. Профессиональное использование
РНРориентировано на Linux (Unix). Существуют
детали и возможности, которые нельзя
учесть в силу разности ОС Windowsи ОС Linux
(Unix).
Можно ли разрабатывать и отлаживать скрипты
в Windows, а потом без изменений переносить
их в Unix? К счастью, ответ на этот вопрос,
чаще всего, — да. Для этого используют
локальный Web-сервер Apacheдля Windows, а также
устанавливают РНРи MySQL, способные работать
в этой ОС.
Почему именно Apache? Потому что это самый
распространенный сервер. Он установлен
у большинства хостинг-провайдеров. Существует
его Windowsверсия, практически идентичная
по функциональности своему Unixсобрату.
Рекомендуется устанавливать самую последнюю
версию Apache. Ссылка на каталог, в котором
расположены последние версии Apache: http://www.apache.org/dist/
Установка сервера Apacheи сопутствующих
программ вручную - утомительное занятие.
Приходится разбираться с многочисленными
параметрами конфигурации Apache, PHPи MySQL.
Существуют готовые комплексы, не нуждающиеся
в настройке. Наиболее популярным из таких
комплексов является Денвер – это "Джентльменский
набор Web-разработчика". Денвер— это
те же самые дистрибутивы Apache, PHP, MySQL.Они
объединены в единый архив и снабжены
удобным инсталлятором и утилитами настройки
(включая средства автоматического конфигурирования
виртуальных хостов).
Денверсоздавался для того, чтобы упростить
настройку и установку свободно распространяемых
программ (Apache, PHP, MySQLи т. д.). Он имеет модульную
структуру. Его ядро — так называемый
"базовый пакет". Все остальные компоненты
поставляются в виде автономных пакетов
расширений, для работы которых нужен
базовый пакет.
Базовый пакет содержит большинство необходимых
Web-программисту программ и утилит:
? Apacheс поддержкой SSI, mod_rewrite, mod_php.
? PHPс поддержкой GDи MySQL.
? MySQLс поддержкой транзакций (mysql-max).
? phpMyAdmin— система управления MySQLчерез
Web-интерфейс; полностью заменяет командную
строку MySQL.
? Ядро Perlбез стандартных библиотек (они
поставляются отдельно).
? Эмулятор sendmail(отладочная "заглушка",
помещающая приходящие письма в каталог
/tmp); поддерживается работа совместно
с РНРи Perl.
? Система управления виртуальными хостами,
основанная на шаблонах. Чтобы создать
новый хост, вам нужно лишь добавить каталог
в /home, править конфигурационные файлы
не требуется.
? Система настройки и управления запуском/завершением.
?. Инсталлятор.
Дистрибутив, содержащий все перечисленные
выше компоненты, занимает около 2 Мбайт.
На сайте http://web.dklab.ruдоступно множество
пакетов расширений для Денвера, содержащих:
? Документацию ко всем программам, входящим
в комплекс.
? Полную версию Perlсо стандартными библиотеками.
? Полную версию PHP 3и PHP 4, а также модули
для РНР 5.
? Модули Apache, не вошедшие в базовый пакет
Денвера.
? Разнообразные "облегченные" и "специализированные"
версии базового пакета — в частности,
дистрибутив, помещающийся на одну дискету,
и базовый пакет с поддержкой РНР 4, а не
РНР 5по умолчанию.
По адресу http://forum.dklab.ru/denwer/
Если Вы желаете детально разобраться
в работе локального web-сервера, то рекомендуется
собрать и настроить его собственноручно
из отдельных программных продуктов. Полезно
предварительно изучить статью «Установка
и настройка Apache+PHР», расположенную по
адресу http://php5/ru/study/instal. И, конечно же -
разделы официальной документации, посвященные
установке соответствующих программ.
- Установка локального WEB–сервера и его компонентов.
1.1. Структура каталогов.
Рекомендуется логически отделить
Web-проекты от всех остальных на локальном
ПК. Для этого следует установить
все программное обеспечение
локального web-сервера, а также записывать
все HTMLфайлы, скрипты и документы в
отдельный каталог. Локальный сервер удобнее
расположить на отдельном логическом
диске (не на С), причем организовать его
как реальный сервер. Лучше установить
и настроить сервер на отдельном диске
D. На этом диске можно устроить «Unix»:создать
подкаталог /home/для хранения локальных
сайтов, а для Apache, PHP, MySQLи т.д. создать подкаталог
/usr.
Создайте на диске Dдве папки с названиями
usrи home. Названия папок и файлов, во избежание
проблем, следует писать строчными буквами,
т.к. в *nixоперационных системах homeи Homeне
одно и тоже. Большинство серверов, на
одном из которых в дальнейшем будет размещен
созданный Вами Интернет проект, работают
под *nixоперационными системами.
1.2. Установка Apache
1. Запустите файл инсталляции
«apache_1.3.24-win32-x86-no...
2. В появившемся диалоге нажмите кнопку
Yes, а затем - кнопку Next:
3. Прочитайте лицензионное соглашение
и поставьте галочку напротив «I accept the
terms in the license agreement»и нажмите на кнопку
Next:
4. В следующем окне «Server Information»нужно написать:
? Network Domain имя Вашего домена: localhost
? Server Name имя Вашего сервера: www.localhost.ru
? Administrator's Email Address Ваш почтовый адрес:
[email protected].
? Установите переключатель «Run when started
manually, only for me»(Запускать вручную только
для меня), чтобы запускать сервер в ручном
режиме:
В окне «Server Information»можно указать и другую
любую информацию о сервере, так как она
в дальнейшем может быть исправлена при
редактировании файла httpd.conf.
5. В следующем окне «Setup Type»выберите установку
«Complete»и нажмите кнопку Next:
6. В окне «Destination Folder»нажмите «Change»и измените
путь, на тот где будет располагаться web-сервер,
а именно D:usr.
По умолчанию Web – сервер будет установлен
в папку C:Program FilesApacher Group
C помощью кнопки «Сhange» (
В итоге путь будет изменен, нажмите Next,
а в следующем окне - кнопку Install:
7. Будет произведено копирование файлов:
8. Затем появиться окно, в котором
нужно нажать Finish:
9. Apacheустановлен. Запустите установленный
Web – сервер Apache. Для этого выберите команду
главного меню Пуск ? Программы ? Apache HTTP
Server ? Start Apache in Console (Programs ? Web-сервер Apache
? Запустить Apache в консольном режиме).
На экране появится окно программы Apacheс
сообщением: Apache/1.3.24 (Win32) running...(Apache/1.3.24
(Win32) работает...):
10. Теперь можно подключиться к Web-серверу
Apache.Для этого:
? Средствами операционной системы Windowsв
папке D:usrApachehtdocs:
переименуйте файл index.html.enв файл index.html:
? Запустите браузер Microsoft Internet Explorer или
любой другой, например Mozilla Firefox.
? В поле ввода Address (Адрес) браузера введите
http://localhostи нажмите клавишу Enter. В окно
браузера загрузится начальная страница
Web-сервера Apache:
Начальная страница Web-сервера Apacheна русском
языке:
Если открылась начальная страница, значит
Apacheустановлен правильно.
? Перейдите в окно Web-сервера Apacheс помощью
Панели задачоперационной системы Windowsи
завершите работу сервера с помощью кнопки
[X] в правом верхнем углу окна.
- Конфигурационные файлы сервера Apache
Сервер Apacheимеет три
Рассмотрим, какие функции выполняют эти
файлы:
? Файл httpd.conf— это основной файл конфигурации
сервера. В нем содержится техническое
описание работы сервера.
? В файле srm.confзадаются параметры документов,
которые размещены на сервере.
? Файл access.confсодержит параметры доступа
к серверу.
Начиная с версии 1.3, рекомендуется все
директивы, которые раньше находились
в файлах srm.confи access.conf, помещать в файл
httpd.conf.
Сервер Apacheверсии 2.0, который входит в
состав дистрибутива Linux Red Hat 9.0, содержит
еще несколько конфигурационных файлов:
apache-mime.types, vhosts/vhosts.conf,vhosts/
1.4.Создание виртуальных хостов.
Разработчики Apacheпредусмотрели
Для этого при настройке Apacheбыл создан
файл vhosts.conf:
и в конец файла httpd.confдобавлена строчка
«Include conf/vhosts.conf», которая подключила этот
файл:
Для того чтобы добавить новый сервер:
? необходимо создать папку, в директории
home, в которой будут расположены серверные
папки и файлы;
? сделать описание этого сервера в файле
vhosts.conf;
? добавить название сервера и IPадрес в
файл C:
Т.к. в файле httpd.confимя сервера мы установили
localhostи папку для документов установили
home, то это нас не устроит, потому что во
всем должен быть порядок (сейчас поймете,
о чем идет речь).
Если мы оставим все как есть, то htmlдокументы,
принадлежащие серверу localhost, и новые виртуальные
серверы окажутся в одной папке home. Это
выглядит не очень красиво и удобно.
Поэтому мы перенастроим localhost, оформив
его в виде виртуального сервера:
1. Создайте в папке homeпапку localhost, а в ней
папку cgi-bin:
2. Добавьте следующее описание в файл
vhosts.conf:
#----localhost
DocumentRoot "/home/localhost/"
ServerName localhost
ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/"
ErrorLog /home/localhost/error.log
Здесь папка cgi-bin(вместо cgi), htmlфайлы (которые
должны располагаться в папке html) и файл
error.logбудут находиться в одной папке localhost:
Эти описания можно было сделать в файле
httpd.conf, но если все виртуальные серверы
описать в отдельном файле, то строение
вашего httpсервера становится более наглядным.
3. Создайте второй виртуальный хост.
Допустим, что Ваш сайт расположен в Internetпо
адресу http://mysite.ru. Настроим Apache так, чтобы
при наборе этого адреса загружался Ваш
сайт, без выхода в Internet.
Для этого в папке homeсоздайте папку mysiteи
в папке mysiteпапки cgiи html:
Опишите данный сервер в файле виртуальных
хостов vhosts.conf:
- задается IP-адрес сервера
DocumentRoot "/home/mysite/html/" - папка расположения
документов
ServerName www.mysite.ru - имя сервера
ScriptAlias /cgi-bin/ "/home/mysite/cgi/" - папка с
cgi-скриптами
ErrorLog /home/mysite/error.log - расположение файла
ошибок
CustomLog /home/mysite/access.log common - расположение
файла доступа
- закрываем описание сервера
#----localhost
DocumentRoot "/home/localhost/"
ServerName localhost
ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/"
ErrorLog /home/localhost/error.log
#----mysite
DocumentRoot "/home/mysite/html/"
ServerName www.mysite.ru
ScriptAlias /cgi-bin/ "/home/mysite/cgi/"
ErrorLog /home/mysite/error.log
CustomLog /home/mysite/access.log common
В конец файла С:
добавьте IPадрес и имя сервера:
127.0.0.2 mysite.ru
Перезапустите Apache.
5) Если Вам понадобиться обратить к сайту
mysite.ruна удаленном сервере, то закомментируйте
строку: #127.0.0.2 mysite.ru
в файле С:
Не забывайте про это, иначе при попытке
обращения к удаленному серверу, Вы будете
оказываться на своем локальном.
Что бы этого не делать, лучше виртуальные
хосты называть так же, как и на настоящем
web – сервере, но только без «суффикса»
.ruили .com. В этом случае, используя правило
«отсечения суффиксов» можно легко обращаться
к «реальному» и «виртуальному» хостам,
даже если имеется подключение к Интернет.
Вы можете использовать любой IPадрес из
диапазона 127.0.0.1 – 127.255.255.255.
На этом настройка сервера окончена. Перезапустите
его. Все должно работать:
Если Вы получаете сообщение об ошибке
и номер строки в файле http.conf, где она произошла,
то исправьте ошибку и перезапустите сервер.
Если ошибок больше нет, то появится показанное
выше окно.
Практическая часть.
2.1.Для системы Linux.
Bash скрипт создания виртуальных хостов Apache и Nginx
#!/bin/bash
####### CONFIG START ########
OWNER_NAME='username' # Пользователь, которому будет принадлежать директория вирт. хоста
OWNER_GROUP='username' # Группа, которой будет принадлежать директория вирт. хоста
HOME_WWW=~username/www # Домашняя директория для вирт. хостов
HOST_DIRS=('backup' 'logs' 'public_html')
SERVER_IP='127.0.0.1' # IP адрес сервера
WHEREIS_APACHE=/etc/apache2
WHEREIS_NGINX=/etc/nginx
APACHE_HOSTS_DIR=$WHEREIS_
NGINX_HOSTS_DIR=$WHEREIS_NGINX
NGINX_HOSTS_ENABLED=$WHEREIS_
######## CONFIG END ##########
# COLORS
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_NORMAL="echo -en \\033[0;39m"
SETCOLOR_NOTICE="echo -en \\033[1;33;40m"
# FUNCTIONS
function restart_servers {
echo 'Перезапускаем Apache'
/etc/init.d/apache2 reload
echo 'Перезапускаем Nginx'
/etc/init.d/nginx reload
return 1
}
function error_config {
$SETCOLOR_FAILURE
echo "$(tput hpa $(tput cols))$(tput cub 6)[Fail]"
echo '[CONFIG ERROR]: '$1
$SETCOLOR_NORMAL
exit
}
function error_force_exec {
$SETCOLOR_FAILURE
echo "$(tput hpa $(tput cols))$(tput cub 6)[Fail]"
echo -n '[FORCE EXEC ERROR]: '
if [ -z "$1" ]; then
echo 'Скрипт не может корректно выполнить все процедуры в автоматическом режиме'
else
echo $1
fi
$SETCOLOR_NORMAL
exit
}
function error_failure {
$SETCOLOR_FAILURE
echo "$(tput hpa $(tput cols))$(tput cub 6)[Fail]"
echo '[ERROR]: '$1
$SETCOLOR_NORMAL
exit
}
function error_notice {
$SETCOLOR_NOTICE
echo '[NOTICE]: '$1
$SETCOLOR_NORMAL
return 1
}
# Если запущен с ключем -f, значит задаем пользователю минимум вопросов
# Игнорируются вопросы:
# - имя директории виртуального хоста
# - вопрос о перезапуске
if [ "$1" == "-f" ]; then
force_execution=true
else
force_execution=false
fi
echo
$SETCOLOR_NORMAL
if [ -d $HOME_WWW ]; then
cd $HOME_WWW
else
error_config "Директория $HOME_WWW не существует"
fi
# Запрашивает имя домена, пока не будет введено
function get_domain_name {
echo -n "Имя домена: "
read domain_name
# Если ничего не было введено
if [ -z $domain_name ]; then
$SETCOLOR_FAILURE
echo "Вы не ввели имя домена"
$SETCOLOR_NORMAL
get_domain_name
else
return 1
fi
}
# Запрашивает имя директории для виртуального хоста или предлагает создать автоматически
# проверяет его на существование
function get_host_dir {
echo -n "Имя директории хоста: "
read host_dir
# Если ничего не было введено
if [ -z $host_dir ]; then
$SETCOLOR_NOTICE
echo -n "Вы не ввели имя директории хоста. Создать автоматически? [Н/д]? "
$SETCOLOR_NORMAL
read answer
case "$answer" in
Y|y|д|Д)
host_dir=${domain_name//\./_}
host_dir=${host_dir//\-/}
if [ -d ${HOME_WWW}'/'${host_dir} ]; then
error_notice "Автоматический выбор имени директории невозможен. Задайте его самостоятельно"
get_host_dir
else
error_notice "Директория хоста будет создана автоматически: $host_dir"
fi
return 1
;;
N|n|о|О) get_host_dir
;;
*) get_host_dir
;;
esac
get_host_dir
else
return 1
fi
}
get_domain_name
if $force_execution; then
host_dir=${domain_name//\./_}
if [ -d ${HOME_WWW}'/'${host_dir} ]; then
error_force_exec
fi
else
get_host_dir
fi
# Проверяем пути апача из конфига
if [ -d $APACHE_HOSTS_DIR ]; then
if [ -a $APACHE_HOSTS_DIR'/'$domain_
error_failure "Виртуальный хост $domain_name уже существует для Apache"
fi
else
error_config "Директория $APACHE_HOSTS_DIR не существует"
fi
# Проверяем пути nginx из конфига
if [ -d $NGINX_HOSTS_DIR ]; then
if [ -a $NGINX_HOSTS_DIR'/'$domain_
error_failure "Виртуальный хост $domain_name уже существует Nginx"
fi
else
error_config "Директория $NGINX_HOSTS_DIR не существует"
fi
echo "Домен: $domain_name"
# Создаем директории виртуального хоста
host_dir_path=${HOME_WWW}'/'${
echo "Создаем директории виртуального хоста:"
mkdir $host_dir_path
for dir_name in ${HOST_DIRS[@]}; do
mkdir $host_dir_path'/'$dir_name
echo -e "\t $host_dir_path/$dir_name"
done
touch ${host_dir_path}'/public_html/
# Рекурсивно проставляем права
chown -R $OWNER_NAME:$OWNER_GROUP $host_dir_path
apache_template="<VirtualHost 127.0.0.1:8080>
ServerAdmin webmaster@$domain_name
ServerName $domain_name
ServerAlias www.$domain_name
DocumentRoot $HOME_WWW/$host_dir/public_
ScriptAlias /cgi-bin/ $HOME_WWW/$host_dir/public_
ErrorLog $HOME_WWW/$host_dir/logs/
LogLevel warn
CustomLog $HOME_WWW/$host_dir/logs/
</VirtualHost>"
# Создаем конфиг виртуального хоста apache
echo 'Создаем конфиг виртуального хоста apache:'
touch ${APACHE_HOSTS_DIR}'/'${
echo -e "\t"${APACHE_HOSTS_DIR}'/'${
temp_ifs=$IFS
IFS=
echo $apache_template > ${APACHE_HOSTS_DIR}'/'$domain_
IFS=$temp_ifs
# создаем симлинк
a2ensite $domain_name
nginx_template="server {
listen $SERVER_IP:80;
server_name $domain_name www.$domain_name;
access_log $HOME_WWW/$host_dir/logs/
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|
root /home/omm/www/$host_dir/
}
location / {
proxy_pass http://backend;
proxy_redirect off;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
charset utf-8;
index index.html;
root $HOME_WWW/$host_dir/public_
}
}"
# Создаем конфиг виртуального хоста nginx
echo 'Создаем конфиг виртуального хоста nginx:'
touch ${NGINX_HOSTS_DIR}'/'${domain_
echo -e "\t"${NGINX_HOSTS_DIR}'/'${
temp_ifs=$IFS
IFS=
echo $nginx_template > ${NGINX_HOSTS_DIR}'/'$domain_
IFS=$temp_ifs
# создаем симлинк
ln -s $NGINX_HOSTS_DIR'/'$domain_
# Перезапускаем сервера
if $force_execution; then
restart_servers
else
echo -n 'Перезапустить Apache и Nginx? [Д/н] '
read restart_answer
case "$restart_answer" in
Y|y|д|Д)
restart_servers
;;
*)
echo 'Apache и Nginx не были перезагружены'
;;
esac
fi
$SETCOLOR_SUCCESS
echo "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
$SETCOLOR_NORMAL
Конфигурирование скрипта
В скрипте есть комментарии, но опишу переменные настройки еще раз.
OWNER_NAME – имя системного пользователя, которому будут принаджелать директории и файлы, создаваемые скриптом для виртуального хоста.
OWNER_GROUP – системная группа, которой будут принаджелать директории и файлы, создаваемые скриптом для виртуального хоста.
HOME_WWW – внутри этой директории будет создана директория виртуального хоста.
HOST_DIRS – директории виртуального хоста, которые будут созданы. По-умолчанию сюда вписана директория для логов apache и nginx, директория для бэкапов и директория, которая будет доступна по http протоколу, собственно, куда и нужно будет класть все файлы вашего сайта.
SERVER_IP – ip адрес вашего сервера. Прописывается в конфигах nginx.
WHEREIS_APACHE – директория установки Apache. Относительно нее будут искаться конфиги виртуальных хостов и прочее.
WHEREIS_NGINX – директория установки Nginx. Относительно нее будут искаться конфиги виртуальных хостов и прочее.
APACHE_HOSTS_DIR – директория, где Apache хранит конфиги для каждого отдельного виртуального хоста. Обычно это sites-available.
NGINX_HOSTS_DIR – директория, где Nginx хранит конфиги для каждого отдельного виртуального хоста. Обычно это sites-available.
NGINX_HOSTS_ENABLED – директория, где хранятся симлинки на конфиги виртуального хоста Nginx. В nginx нет утилиты подобной a2ensite, поэтому нужно знать, куда создать ссылку самим. Обычно данная директория называется sites-enabled.
Есть еще несколько переменных, в которых хранится код разукраски сообщений, которыми скрипт отписывается в консоль. Также можно поправить поведение ряда функци. Но все это совсем опционально и если очень хочется, то поглядите сами. Там все просто.
В скрипте есть еще две переменных, которые объявлены почти в конце листинга: apache_template и nginx_template. В них хранятся шаблоны для виртуальных хостов. Хотя бы посмотрите, что в них описано, чтобы быть уверенными в том, что конфиги имеют именно тот вид, который вам требуется.
Работа со скриптом
Скрипт может работать в двух режимах.
Простой запуск – запускаете скрипт и отвечаете на его вопросы. Он потребует ввести:
- имя домена, для которого создаются конфиги;
- имя директории виртуального хоста;
- спросит перезагрузить ли сервера, после того, как конфиги будут созданы
Если не задать скрипту имя директории виртуального хоста, то он создает ее автоматически. От перезагрузки серверов можно отказаться. Это удобно, когда вы планируете создать несколько виртуальных хостов подряд и нет смысла каждый раз заставлять Nginx и Apache делать reload (при reload создается избыточная нагрузка на процессор и потребляется больше памяти. Лучше сделать это один раз, когда все хосты будут добавлены).
Форсированный запуск – это типа автоматического режима. Скрипт задает только один вопрос – о имени домена. Все остальное он делает сам, в том числе перезагружает Nginx и Apache. При этом, если в ходе проверок скрипт выяснит, что выполнить какие-то операции он не сможет, то работа прекратится. Но учтите, что никаких подробных сообщений о проблеме не будет. Скрипт просто скажет, что он не может отработать в автоматическом режиме (скорее всего, конфликты с путями).
Для вызова скрипта в форсированом режиме необходимо запустить его с параметром –f
2.2.Для системы Windows.
Self-hosting. Скрипт управления Apache.
Для облегчения процесса управления вэб-сервером Apache необходимо создать командный скрипт реализующий следуюшие функции
- инслалляция и деинсталляция службы Apache
- остановка и запуск службы Apache
- создание и удаление виртуальных хостов
- выбор используемого PHP
Создадим папку C:\www, в которой
будут храниться файлы
mkdir C:\www |
Создадим шаблон конфигурации виртуального хоста C:\etc\apache\vhost_conf
<VirtualHost *:80> ServerName _HOST_ ServerAlias www._HOST_ DocumentRoot C:/www/_HOST_ <Directory C:/www/_HOST_> AllowOverride All Require all granted Options -Indexes +Includes +FollowSymLinks </Directory> # php_admin_value open_basedir C:/www/_HOST_/ ErrorLog C:/var/log/apache/_HOST_- CustomLog C:/var/log/apache/_HOST_- </VirtualHost> |
Создаем скрипт управления Apache C:\usr\bin\apachectl.bat
@echo off ::::::::::::::::-------------- :: :: Установите переменную $have_mklink в :: 0 - если используется XP или 2003 :: 1 - если используется 7 или 2008 :: set $have_mklink=1 :: ::::::::::::::::-------------- call :GetUID set $_httpd_UID=C:\tmp\%~n0~%UID% pushd .. & C: & cd \ & call :@%1 %2 %3 %4 %5 %6 %7 %8 %9 & popd & exit /b :@ :@--help echo. echo Использование: %~n0 [опция] echo. echo Опции: echo --activate установить и запустить службу Apache echo --deactivate остановить и удалить службу Apache echo --install установить службу Apache echo --uninstall удалить службу Apache echo --start запустить службу Apache echo --restart перезапустить службу Apache echo --stop остановить службу Apache echo --test проверить конфигурацию Apache echo --create-host создать виртуальный хост echo --delete-host создать виртуальный хост echo --use-php задать используемую версию PHP echo --version показать версию Apache echo --php-version показать версию PHP echo --help этот экран exit /b ::::::::::::::::-------------- :@--delete-host if "%~1"=="" echo Не задано имя виртуального хоста & exit /b set $_host=%~1 call :locase $_host if exist C:\etc\apache\vhost\%$_host%. type %windir%\system32\drivers\etc\ type %$_httpd_UID% > %windir%\system32\drivers\etc\ del %$_httpd_UID% /Q call :FlushDNS call :@--restart if exist C:\www\%$_host%\nul rmdir C:\www\%$_host% /S /Q exit /b ::::::::::::::::-------------- :@--create-host if "%~1"=="" echo Не задано имя виртуального хоста & exit /b set $_host=%~1 call :locase $_host if not exist C:\www\%$_host%\nul ( mkdir C:\www\%$_host% echo # %$_host% # www.%$_host%>C:\www\%$_host%\. echo User-agent: *>C:\www\%$_host%\robots.txt echo Disallow: />>C:\www\%$_host%\robots.txt echo ^<html^>> C:\www\%$_host%\index.php echo ^<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /^>>> C:\www\%$_host%\index.php echo ^<title^>Welcome^</title^>>> C:\www\%$_host%\index.php echo ^<body^>>> C:\www\%$_host%\index.php echo ^<H2^>Welcome to ^<?php echo $_SERVER['SERVER_NAME']; ?^>^</H2^>>> C:\www\%$_host%\index.php echo ^</body^>>> C:\www\%$_host%\index.php echo ^</html^>>> C:\www\%$_host%\index.php ) if not exist C:\etc\apache\vhost\%$_host%. type %windir%\system32\drivers\etc\ echo 127.0.0.1 %$_host% www.%$_host% # Apache Virtual Host>>%$_httpd_UID% type %$_httpd_UID% > %windir%\system32\drivers\etc\ del %$_httpd_UID% /Q call :FlushDNS call :@--restart exit /b ::::::::::::::::-------------- :FlushDNS ipconfig /flushdns >nul exit /b ::::::::::::::::-------------- :@--use-php if "%~1"=="" echo Не задана версия PHP ^(На пример 5.4.4^) & exit /b if "%~2"=="" echo Не задан тип PHP ^(TS или NTS^) & exit /b set $_php_version=%~1 set $_php_mode=%~2 call :locase $_php_mode if "%$_php_mode%"=="ts" goto :_php_mode_is_valid if "%$_php_mode%"=="nts" goto :_php_mode_is_valid echo Не правильный тип PHP ^(TS или NTS^) & exit /b :_php_mode_is_valid set $php_dir=C:\php%$_php_version: if not exist %$php_dir%\nul echo Папка %$php_dir% не найдена call :@--stop call :$mklink%$have_mklink% echo Define PHP_%$_php_mode% > C:\etc\apache\php_define.conf call :@--test call :@--php-version call :@--start exit /b ::::::::::::::::-------------- :$mklink0 rmdir C:\php /S /Q xcopy %$php_dir% C:\php\ /S /E /Q exit /b ::::::::::::::::-------------- :$mklink1 rmdir C:\php mklink /D C:\php %$php_dir% exit /b ::::::::::::::::-------------- :@--php-version php -v php -i | grep "Thread Safety" php -i | grep "Architecture" exit /b ::::::::::::::::-------------- :@--version httpd -v exit /b ::::::::::::::::-------------- :@--test httpd -t exit /b ::::::::::::::::-------------- :@--stop httpd -k stop exit /b ::::::::::::::::-------------- :@--start httpd -k start exit /b ::::::::::::::::-------------- :@--restart httpd -k restart exit /b ::::::::::::::::-------------- :@--install httpd -k install exit /b ::::::::::::::::-------------- :@--uninstall httpd -k uninstall exit /b ::::::::::::::::-------------- :@--activate call :@--install call :@--start exit /b ::::::::::::::::-------------- :@--deactivate call :@--stop call :@--uninstall exit /b ::::::::::::::::-------------- :locase if not defined %~1 exit /b for %%a in ( "A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z" ) do call set %~1=%%%~1:%%~a%% exit /b ::::::::::::::::-------------- :GetUID set i=26 set n=16 set char=0 1 2 3 4 5 6 7 8 9 A B C D E F set UID=<nul :loop set /a r=1+%n%*%RANDOM%/32768 for /f "tokens=%r%" %%q in ("%char%") do (set UID=%%q%UID%) set /a i-=1 if %i% GTR 0 goto loop exit /b ::::::::::::::::-------------- |
Для корректного отображения
Для Windows XP и Windows Server 2003 перед сохранением файла необходимо строку
set $have_mklink=1 |
заменить на
set $have_mklink=0 |
При использовании скрипта управления Apache следует помнить, что
- При своей работе скрипт преобразует имя виртуального хоста в нижний регистр и создает алиас имени виртуального хоста с префиксом www
- При создании виртуального хоста скрипт делает запись в системный файл hosts
127.0.0.1 ИМЯ_ХОСТА www.ИМЯ_ХОСТА # Apache Virtual Host |
- Скрипт не поддерживает создание виртуальных хостов с кириллическим именем (IDN)
- Показ содержимого папок без индексного файла запрещен
- При удалении виртуального хоста происходит физическое удаление файла конфигурации и папки виртуального хоста, а также удаляется запись из системного файла hosts
Для проверки работоспособности скрипта
создадим виртуальный хост pma,
который в дальнейшем будем использовать
для phpMyAdmin
Для этого выполним команду
apachectl --create-host pma |
И проверим правильность выполненных действий.
Нет похожих записей.
Rating: 10.0/10 (3 votes cast)
Rating: +3 (from 3 votes)
3.Список литературы.
1. Армстронг Д. Секреты UNIX. -М.:Вильямс, 2001.
2. Колисниченко Д.Н. Linux-сервер своими руками. -СПб. Наука и техника, 2004.
3. Костромин В. Самоучитель Linux для пользователя. -СПб.:БХВ-Петербург, 2004.
4. Уилсон Э. Руководство по сценариям Windows PowerShell. -М.:ЕСОМ, 2009.
5. Немет Э. Руководство
6. Робачевский А. Операционная система UNIX / Уч. пос. -СПб.:БХВ-Петербург, 2003.
7. Шредер К. Linux. Сборник рецептов. -СПб.:Питер, 2006.
8. Свиридов С.В. Системные
9.Такет Д., Барнет С. Специальное издание. Использование LINUX. Пер. с англ.- 4-е изд.-К.:, Н.:, СПб.: Издательский дом «Вильямс», 1999.