Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Linux дистрибутив Slackware. Энциклопедия настройки. Личный web-сервер для личной странички (Apache)


Информационный Канал Subscribe.Ru

Linux Slackware Энциклопедия от А до Я.


Личный web-сервер для личной странички (Apache).

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

Мне не очень понравилось имя машины, которое я дал тогда, поэтому поменял:

gena@gena:~:$ ssh root@live-cd
root@live-cd's password:
Last login: Fri Feb 25 19:12:13 2005
Linux 2.4.29.
root@gena2:~# vi /etc/HOSTNAME
reading /etc/HOSTNAME

root@gena2:~# cat /etc/HOSTNAME
slack.
root@slack:~# vi /etc/hosts
reading /etc/hosts

wrote /etc/hosts, 19 lines, 615 chars
root@gena2:~# shutdown -r 0

Broadcast message from root (pts/0) (Sat Feb 26 00:04:24 2005):

The system is going down for reboot NOW!
root@gena2:~# Connection to slack closed by remote host.
Connection to slack closed.
Не забудьте подправить /etc/hosts на всех машинах. Это нужно сделать если в сети нет DNS-сервера. Позже мы установим его на эту же машину, а пока так.

gena@gena:~:$ ssh root@slack
The authenticity of host 'slack (192.168.52.101)' can't be established.
RSA key fingerprint is b8:92:ad:8e:6d:c8:20:01:24:23:a6:c4:7b:a3:84:80.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slack,192.168.52.101' (RSA) to the list of known hosts.
root@slack's password:
Last login: Fri Feb 25 23:54:23 2005
Linux 2.4.29.
root@slack:~# ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        S      0:05 init [3]
    2 ?        S      0:00 [keventd]
    3 ?        SN     0:00 [ksoftirqd_CPU0]
    4 ?        S      0:00 [kswapd]
    5 ?        S      0:00 [bdflush]
    6 ?        S      0:00 [kupdated]
   10 ?        S<     0:00 [mdrecoveryd]
   11 ?        S      0:00 [kreiserfsd]
   65 ?        Ss     0:00 /usr/sbin/syslogd
   68 ?        Ss     0:00 /usr/sbin/klogd -c 3 -x
  118 ?        Ss     0:00 /usr/sbin/sshd
  125 ?        S      0:00 /usr/sbin/crond -l10
  128 ?        Ss     0:00 sendmail: accepting connections
  131 ?        Ss     0:00 sendmail: Queue runner@00:25:00 for /var/spool/client
  136 tty1     Ss+    0:00 /sbin/agetty 38400 tty1 linux
  137 tty2     Ss+    0:00 /sbin/agetty 38400 tty2 linux
  138 tty3     Ss+    0:00 /sbin/agetty 38400 tty3 linux
  139 tty4     Ss+    0:00 /sbin/agetty 38400 tty4 linux
  140 tty5     Ss+    0:00 /sbin/agetty 38400 tty5 linux
  141 tty6     Ss+    0:00 /sbin/agetty 38400 tty6 linux
  168 ?        Ss     0:00 sshd: root@pts/0
  171 pts/0    Ss     0:00 -bash
  183 pts/0    R+     0:00 ps ax

Видим, что сейчас работает sshd, crond, sendmail и система логов. Добавим сюда apache. Т.к. мы ставили этот пакет, то для запуска нужно просто подправить конфигурационный файл /etc/apache/httpd.conf

root@slack:~# vi /etc/apache/httpd.conf
reading /etc/apache/httpd.conf

wrote /etc/apache/httpd.conf, 278 lines, 8745 chars

Вкратце, что я там делаю. Изменяю имя и группу, под которым будет запускаться сервер для того, чтобы работали cgi-скрипты; задаю email администратора; включаю технологию SSI; отрубаю возможность использования персональных страничек пользователей вида http://slack/~username/ ибо это изврат и практически никем не используется, а лишняя дырка не нужна; добавляю акромя index.html еще .shtml и .php; разрешаю кэширование документов прокси-серверами; закрываю алиас на /manual за ненадобностью; разбираюсь с языками, удаляя лишние; разрешаю парсить только .shtml; подключаю модуль PHP. Что-то еще делал, но это мелочи. А вот и сам файл httpd.conf. Примеров его настройки в сети просто море (любой поисковик завалит вас ссылками), написаны книги, да и в конце концов прилагаемый мануал /var/www/htdocs/manual/ очень хорош, поэтому велосипед придумывать не буду.

Теперь добавим пару пользователей, для своей работы (негоже под рутом) и функционирования web-сервера.

root@slack:~# groupadd www
root@slack:~# useradd www -s /bin/false -d /dev/null -g www
root@slack:~# useradd gena -p NOtWOrDlISTPaSsworD
Теперь, при попытке запуска httpd вылезает ошибка:
Cannot load /usr/libexec/apache/libphp4.so into server: libmhash.so.2: cannot
 open shared object file: No such file or directory
/usr/sbin/apachectl start: httpd could not be started
Это потому что в прошлый раз я забыл поставить пакет mhash, с кем не бывает - типичная ситуация. Решаем попутно.
root@slack:~# mkdir /mnt/slackware-current
root@slack:~# echo 192.168.52.1 gena >> /etc/hosts
root@slack:~# mount -t nfs -o ro,nolock \
> gena:/home/ftp/pub/distr/slackware/slackware-current/ \
> /mnt/slackware-current/
root@slack:~# installpkg /mnt/slackware-current/slackware/l/mhash-0.9.1-i486-1.tgz
Installing package mhash-0.9.1-i486-1...
PACKAGE DESCRIPTION:
mhash: mhash (Thread-safe hash library)
mhash:
mhash: mhash is a thread-safe hash library, implemented in C, and provides a
mhash: uniform interface to a large number of hash algorithms (MD5, SHA-1,
mhash: HAVAL, RIPEMD128, RIPEMD160, TIGER, GOST). These algorithms can be
mhash: used to compute checksums, message digests, and other signatures.
mhash: The HMAC support implements the basics for message authentication,
mhash: following RFC 2104.
mhash:
Executing install script for mhash-0.9.1-i486-1...
root@slack:~# /etc/rc.d/rc.httpd start
/usr/sbin/apachectl start: httpd started
root@slack:~# ps ax|grep httpd
  437 ?        Ss     0:00 /usr/sbin/httpd
  438 ?        S      0:00 /usr/sbin/httpd
  439 ?        S      0:00 /usr/sbin/httpd
  440 ?        S      0:00 /usr/sbin/httpd
  441 ?        S      0:00 /usr/sbin/httpd
  442 ?        S      0:00 /usr/sbin/httpd
  444 pts/0    S+     0:00 grep httpd
Вуоля. Теперь проверяем удаленно.
gena@gena:~:$ links http://slack/
Если все прошло удачно, то вы увидите стандартное приветствие сервера. Далее - все в ваших руках. Проверим работу CGI.
root@slack:~# chmod +x /var/www/cgi-bin/test-cgi
Смотрим удаленно:
gena@gena:~:$ links http://slack/cgi-bin/test-cgi
Если все ок, видим:
CGI/1.0 test script report:

argc is 0. argv is .

SERVER_SOFTWARE = Apache/1.3.33 (Unix) PHP/4.3.10
SERVER_NAME = slack
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.1
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = text/html, application/xml;q=0.9, application/xhtml+xml,
 image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING =
REMOTE_HOST =
REMOTE_ADDR = 192.168.52.1
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
Теперь проверим SSI:
root@slack:~# echo '<html><!--#include virtual="xxx.txt" --></html>' >\
> /var/www/htdocs/index.shtml
root@slack:~# echo Hello>/var/www/htdocs/xxx.txt
root@slack:~# cat /var/www/htdocs/index.shtml
<html><!--#include virtual="xxx.txt" --></html>
root@slack:~# cat /var/www/htdocs/xxx.txt
Hello
root@slack:~# chown www:www /var/www/htdocs/index.shtml
root@slack:~# chown www:www /var/www/htdocs/xxx.txt
Заодно проверим PHP.
root@slack:~# echo '<?php print "Hello in PHP"; ?>' > /var/www/htdocs/index.php
root@slack:~# chown www:www /var/www/htdocs/index.php

Убеждаемся:
gena@gena:~:$ links http://slack/index.shtml
gena@gena:~:$ links http://slack/index.php

Теперь можно удалить все файлы и директории из /var/www/htdocs/ и начать свой проект. Конец пожалуй. Добавлю только о виртуальном хостинге. В примере httpd.conf спецально оставил закомментированной секцию VirtualHost. Если планируется небольшое количество виртуалок, то просто скопируйте эту секцию столько раз, сколько нужно и замените символ "*" на имя этого хоста (например www чтобы получить хост www.slack). Не забудьте указать новый каталог в DocumentRoot. Кстати, чтобы это работало в локальной сети, необходимо сделать соответствующие записи на DNS-сервере этой локалки так, чтобы все виртуальные хосты имели один IP адрес - 192.168.52.101. Все просто, но почему-то у некоторых вызывает проблемы. Если DNS еще нет, то скоро будет - об этом в следующий раз. На этом настройку простого web-сервера считаю законченной.

Все вышеизложенное не претендует на звание лучший web-сервер. В моем понимании хороший - это тот, который скомпилирован тобой собственноручно со статическими выборочными модулями и засунутый в chroot. Зато этот ставится за 5 мин и для небольшого проекта типа моего вполне даже сойдет, я не параноик :), хотя придет время - обязательно сделаю хороший и расскажу как.

01.03.2005 Gena

Жду ваших отзывов на форуме, в разделе "Статьи".



http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.linux.slackware
Отписаться

В избранное