Автор: Пользователь скрыл имя, 20 Декабря 2012 в 20:19, курсовая работа
Работающий Webсервер и СУБДтребуются при создании Интернет проектов с использованием современных технологий. Наилучший вариант — это установка локального Webсервера на тот же ПК, где создается Интернет проект. Этот ПК всегда доступен по IP-адресу 127.0.0.1, что эквивалентно доменному имени localhost. Поэтому для доступа к Webсерверу через браузер можно использовать адрес http://localhost. При использовании локального сервера все изменения в файлах доступны через браузер сразу же. Когда все скрипты будут отлажены, можно зайти в Интернет и скопировать их на сервер хостинг-провайдера.
Вступ
1. Теоретична частина
Проектна частин
2.1 Постановка задачі.
2.2. Розробка алгоритма рішення задачі.
Програмна реалізація алгоритма.
Опис розробленої програми.
Висновки
Список використаних джерел
Додатки
А. Інструкції по використанню програмних модулів.
Б. Лістінг програмних модулів
В. Протокол виконання програми
$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 необходимо создать командный скрипт реализующий следуюшие функции
Создадим папку 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 следует помнить, что
127.0.0.1 ИМЯ_ХОСТА www.ИМЯ_ХОСТА # Apache Virtual Host |
Для проверки работоспособности скрипта
создадим виртуальный хост 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.
Информация о работе Створення локального серверу пидтримки мережного часу и його захист