Мета-пакет LAMP

Аббревиатура LAMP обозначает ряд продуктов свободного программного обеспечения, используемого совместно, чтобы работать с динамическими веб-страницами или серверами:
Linux: операционная система
Apache: веб-сервер
MySQL: менеджер баз данных или сервер баз данных
Perl, PHP и/или Python: скриптовые языки

Внимание: Компьютер, на котором ежедневно работают, не должен служить как сервер. Для сервера подойдёт только тот компьютер, который не занят другими задачами.

Возможности применения сервера:
a) локальный тестовый сервер для веб-дизайнеров без интернетa-связи (смотрите эту главу)
b) частный файловый сервер с интернет-связью
c) частный веб-сервер с обширной интернет-связью
d) коммерческий веб-сервер (не рассматривается в этом руководстве)

Минимальные требования

Для использования сервера, вам нужен минимум 256 МБ оперативной памяти (RAM). При меньшем количестве будут проблемы, так как сервер MySQL нуждается в большом количестве памяти для нормальной производительности. Когда недостаточно памяти, MySQL выдает следующее сообщение об ошибке: "cannot connect to mysql.sock".

Установите следующие пакеты:

apache2
apache2-utils
apache2-mpm-prefork
php5 php5-common
mysql-server
mysql-common
libapache2-mod-php5
php5-mysql
phpmyadmin

Внимание!

apt-get remove --purge splashy

Стартовая анимация Splashy конфликтует с mysql, удаляем её (если она установлена).

Файл конфигурации для Apache находится в: /etc/apache2/apache2.conf, а Ваш веб-каталог здесь: /var/www. Не меняйте начальных настроек debian'а в 'mpm-worker/mpm-prefork', это не имеет смысла и приведёт только к путанице.

Чтобы проверить, инсталлирован ли php и правильно ли он работает, создайте файл test.php в/var/www с функцией phpinfo (), как показано ниже:

mcedit /var/www/test.php

# test.php
<?  phpinfo(); ?>

Наберите в браузере адрес:

http://localhost/test.php
или
http://ваш_ip:80/test.php

и Вы увидите конфигурацию php и основные настройки.

Вы можете подкорректировать необходимые значения, или настроить виртуальные домены  с помощью конфигурации Apache.

Чтобы проверить инсталляцию, наберите в браузере:

http://ваш-ip-адрес/apache2-default/

Если Вы увидите приветственное сообщение, значит всё в порядке.

Корневым каталогом для документов у apache2 является /var/www. Сделайте следующее:

mkdir /home/myself/www
ln -s /home/myself/www /var/www

Теперь Вы можете редактировать веб-страницу в домашнем каталоге, с правами простого пользователя.

Клиенты FTP

Для использования SSH внимательно прочтите руководство по SSH, в aptosid имеется ещё один, встроенный в Konqueror клиент FTP, которым Вы также можете загружать файлы.

Активации защитных протоколов  для веб-сервера

Брандмауер

Лишённый брандмауэра, сервер остаётся совершенно незащищённым. Блокируйте всё, пока оно не понадобится, а потом снова блокируйте.

21 (ftp)
22 (SSH)
25 110 (email)
443 (SSL-http или https)
993 (imap ssl)
995 (pop3 ssl)
80 (http)
а также каждый другой использованный порт!

Принципы защиты данных сервера

По умолчанию сервер Apache предоставляет клиентам неограниченный доступ (default access) ко всем файлам, к которым может найти путь посредством обычных правил отображения URL.(Это важный и зачастую упускаемый аспект!)

Например:

 1. # cd /; ln -s / public_html
 2. Accessing http://localhost/~root/

Это позволит клиентам обращаться ко всей файловой системе! Чтобы не допустить этого, необходимо добавить к конфигурации сервера следующее:

<Directory />
   Каталог Deny,Allow
   Deny from all
</Directory>

Таким способом Вы запретите доступ к корневой папке файловой системы. Таким же образом добавьте блокировки <Directory> к конфигурации, чтобы разрешить доступ только к дозволенным областям. Например:

<Directory /usr/users/*/public_html>
    Каталог Deny,Allow
    Allow from all
</Directory>
<Directory /usr/local/httpd>
    Каталог Deny,Allow
    Allow from all
 </Directory>

Особенное внимание должно уделяться согласованности команд <Location> и <Directory>. Даже если команда <Directory/> запрещает доступ, команда <Location/>, может обойти этот запрет.

Избегайте экспериментов с командой UserDir; если Вы поставите что-то вроде ". / " это будет иметь тот же эффект, что и в первом примере, только для root. Для версии Apache 1.3 или выше, мы настойчиво рекомендуем вставлять следующую строку в файле конфигурации:

UserDir disabled root

SSL

Запустите скрипт “apache2-ssl-certificate”

# apache2-ssl-certificate

Вы увидите следующий диалог, внесите необходимые изменения:

Creating self-signed certificate
replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt. If you want your certificate to expire after x days call this programm
with -days x
-----
Generating a 1024 bit RSA private key
--------
writing new private key to '/etc/apache2/ssl/apache.pem'
--------
You are about to be asked to enter information that will be incorporated into your certificate request.
-----------
What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value,
----------
If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]:

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company; recommended) []:

Organizational Unit Name (eg, section) []:

server name (eg. ssl.domain.tld; required!!!) []:

Email Address []:

Запустите скрипт “a2enmod ssl” i.e

 # a2enmod ssl

Он автоматически сгенерирует символическую ссылку между mods-available и mods-enabled.

Затем сделайте копию файла '/etc/apache2/sites-available/default' в папку /etc/apache2/sites-available/ и назовите его 'ssl':

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

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

#  ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
(или)
#a2ensite ssl

После того, как измените базовые настройки в /etc/apache2/apache2.conf или измените маршрут документа в /etc/apache2/sites-available/default, перезапустите сервер Apache.

Сервер Apache перезапускается следующей командой:

#service apache2 restart

Теперь отредактируйте адреса портов в /etc/apache2/ports.conf. По умолчанию прослушивается порт 80, но так как мы устанавливаем SSL , надо изменить на порт 443.

 Listen 443

Отредактируйте файл /etc/apache2/sites-available/ssl (или как Вы назвали свой файл конфигурации ssl) измените порт сайта 80 на 443.

Добавьте две строки в /etc/apache2/apache2.conf:

  SSLEngine On

  SSLCertificateFile /etc/apache2/ssl/apache.pem

Введите путь для файлов сертификата и ключей сертификата в файл SSLCertificateFile /etc/apache2/ssl/apache.pem. Например:

Ex:- SSLCertificateFile /etc/apache2/ssl/online.test.net.crt
        SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key

Чтобы отключить ServerSignature, добавьте в /etc/apache2/apache2.conf строки:

 ServerSignature Off
 ServerTokens ProductOnly

Если Вы хотите разрешить другие типы индексных файлов, добавьте в файл /etc/apache2/apache2.conf:

 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

Перезапустите сервер Apache

 service apache2 restart

Теперь у Вас есть "Песочница" - тестовый сервер. Этот тестовый сервер НЕ ДОЛЖЕН БЫТЬ СВЯЗАН С ИНТЕРНЕТОМ. Делайте это только на компьютере, предназначенном для веб-сервера!

Источники:

http://www.mysql-apache-php.com

http://httpd.apache.org/docs/1.3/misc/security_tips.html

http://www.debianhelp.co.uk/webserver.htm

Содержание, последний раз пересмотрено 14/08/2010 0100 UTC