Настройка
Apache2 + SSL + PHP5 + MySQL5 в Ubuntu
Установка всего необходимого для LAMP сервера:
sudo apt-get update sudo apt-get install apache2 php5 php5-mysql mysql-server-5.0
|
По необходимости доставляются другие php модули типа php5-gd, php5-imagick, php5-curl и другие.
Конфиг apache2 в убунту организован интересным образом. Вот листинг /etc/apache2/ :
apache2.conf conf.d/ envvars httpd.conf mods-available/ mods-enabled/ ports.conf sites-available/ sites-enabled/
|
В apache2.conf - основная конфигурация веб сервера. httpd.conf - пустой, оставлен для совместимости. mods-available/ - каталог содержащий подключаемые конфигурационные файлы апача, которые активируют тот или иной его модуль. sites-available/ - каталог содержащий подключаемые конфигурационные файлы апача, которые активируют тот или иной виртуал хост. Чтобы активировать модуль или виртуал хост созданы утилиты a2enmod и a2ensite. Пример использования:
ulmen@chtulhu:~$ sudo a2enmod php5 Module php5 installed; run /etc/init.d/apache2 force-reload to enable.
|
По сути a2enmod, a2ensite, a2dismod и a2dissite создают или удаляют символический линк конфига из sites-available/ в sites-enabled/ (mods- в случае с модулями).
Добавление виртула хоста: 1. Скопировать /etc/apache2/sites-available/default в /etc/apache2/sites-available/example.com
ulmen@chtulhu:~$ cd /etc/apache2/sites-available ulmen@chtulhu:~$ sudo cp ./default ./example.com
|
2. Отредактировать example.com
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com ServerAdmin webmaster@example.com
DocumentRoot /var/httpdocs/example.com <Directory /var/httpdocs/example.com> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory〉
ErrorLog /var/log/apache2/error.log
LogLevel warn
ServerSignature On
</VirtualHost>
|
3. Создаем каталог для Document Root:
ulmen@chtulhu:~$ mkdir -p /var/httpdocs/example.com
|
Настройка SSL:
1. Создание сертификата:
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
|
(актуально для Feisty, в более старых релизах нужно выполнить apache2-ssl-certificate)
2. Добавить порт 443 в /etc/apache2/ports.conf
3. Скопировать /etc/apache2/sites-available/default в /etc/apache2/sites-available/ssl, отредактировать default таким образом:
NameVirtualHost *:80 <VirtualHost *:80> ... </VirtualHost>
|
также отредактировать /etc/apache2/sites-avaible/ssl:
NameVirtualHost *:443 <VirtualHost *:443> ... SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem ... </VirtualHost>
|
4. Добавить ssl в examle.com таким же образом как и в файле ssl, пример:
<VirtualHost *:443> ServerName www.example.com ServerAlias example.com ServerAdmin webmaster@localhost
DocumentRoot /var/httpdocs/example.com SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem <Directory /var/httpdocs/example.com> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
ServerSignature On
</VirtualHost>
|
5. Активация модуля и сайта:
ulmen@chtulhu:~$ a2enmod ssl ulmen@chtulhu:~$ a2ensite ssl
|
6. Рестарт веб сервера:
ulmen@chtulhu:~$ sudo /etc/init.d/apache2 restart * Forcing reload of web server (apache2)... [ OK ]
|
Настройка mysql:
Mysql
после установки работоспособна без дополнительных настроек. Так как
пользователь базы root без пароля, нужно задать для него пароль:
ulmen@chtulhu:~$ mysqladmin -u root password myPassword
|
Проверка базы:
ulmen@chtulhu:~$ mysql -u root -p
|
Настройка PHP: /etc/php5/apache2/php.ini, после смены настроек нужно перегрузить апач.
7. Прячем версию Apache Как я показал в этой статье, каждый может узнать подробную информацию о вашем сервере, набрав довольно простую команду.
Речь пойдет о двух директивах Apache: ServerTokens и ServerSignature и как их использовать. Использование данных директив поможет нам дать минимум информацию в банере Apache:
Эта директива контролирует как сервер отвечает на запрос клиентом поля заголовка, в котором содержится информацио о операционной системе, установленных модулях и прочее.
По умолчанию установлено в Full (ServerTokens Full). Различные дистрибутивы могут менять данный параметр. Возможные значения:
ServerTokens Setting | Server Banner Header | ProductOnly | Server: Apache | Major Server: | Apache/2 | Minor Server: | Apache/2.0 | Minimal | Server: Apache/2.0.55 | OS | Server: Apache/2.0.55 (Debian) | Full (or not specified) default | Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b |
Начиная с Apache 2.0.44, эта директива также контролирует информацию предоставляемую директивой ServerSignature, описанной ниже.
Эта директива отвечает за вывод подвала страницы в документах, сгенерированных сервером (сообщения о ошибках и прочее). - Данная директива может быть выставлена не только глобально, но и для виртуальных хостов, и в .htaccess.
- По умолчанию она отключена (ServerSignature Off), но некоторые Linux дистрибутивы могут менять данное значение и включать её.
Возможные значения: Off (default): подавлять вывод On: включать строку с указанием версии сервера. EMail: включено все, и дополнительно доступно поле "mailto:” ссылающееся на ServerAdmin.
Вывод: если вы хотите обеспечить минимум выводимой о сервере информации, установите данные значения в конфиге Apache: ServerTokens ProductOnly ServerSignature Off
8. Скрываем версию PHP (X-Powered-By) Необходимо изменить переменную expose_php в файле php.ini, установив её в значение off.
По умолчанию expose_php имеет значение On.
В файле php.ini (в разныех Linux дистрибутивах он может иметь различное местоплолажение, например /etc/php.ini, /etc/php5/apache2/php.ini, и т.д.) найдите строку содержащую "expose_php On” и установите её значение в Off:
После этого ваш веб сервер не будет показывать информацию о версии PHP.
Источник: http://ulmencave.blogspot.com |