Установка и настройка веб сервера Apache 2
В данной статье мы рассмотрим установку и настройку веб сервера Apache 2 на Ubuntu server 14.04 LTS.
Также будет рассмотрена настройка сайтов на 80 и 443 портах и создание ssl сертификатов.
Перейдем к установке веб сервера.
Обновим все пакеты:
1 |
apt-get update |
1 |
apt-get upgrade |
Удалим кэш пакетов и ненужные пакеты:
1 |
apt-get clean |
1 |
apt-get autoclean |
1 |
apt-get autoremove |
Установим часовой пояс.
1 |
dpkg-reconfigure tzdata |
Установим NTP.
1 |
apt-get install ntp |
Установим Openssh сервер (если он не установлен).
1 |
apt-get install openssh-server |
Устанавливаем веб сервер Apache2.
1 |
apt-get install apache2 |
Устанавливаем PHP.
1 |
apt-get install php5 libapache2-mod-php5 php5-mysql |
Устанавливаем Mysql сервер.
1 |
apt-get install mysql-server |
Настраиваем безопасность Mysql.
1 |
mysql_secure_installation |
Устанавливаем значения firewall.
1 |
ufw allow OpenSSH |
1 |
ufw allow Apache |
1 |
ufw limit OpenSSH |
1 |
ufw enable |
Установка веб сервера завершена.
Перейдем к настройке.
Настроим первый сайт на 80-м порту.
Создадим папку с сайтами (если не хотим использовать папку /var/www).
1 |
mkdir /hosting |
Далее откроем доступ к папке с сайтами, для этого редактируем файл /etc/apache2/apache2.conf и вносим в него следующие строки:
1 2 3 4 5 |
<Directory /hosting> Options FollowSymLinks AllowOverride all Require all granted </Directory> |
Сохраняем файл.
Включаем необходимые для работы модули Apache2.
1 |
a2enmod rewrite |
1 |
a2enmod ssl |
Так же вы можете отключить лишние модули, например вот так отключается модуль status.
1 |
a2dismod status |
Перезапускаем Apache2.
1 |
service apache2 restart |
Перейдем к настройке сайтов (виртуальных хостов).
Удаляем дефолтные сайты.
1 |
rm -f /etc/apache2/sites-available/*.* |
1 |
rm -f /etc/apache2/sites-enabled/*.* |
Создадим новый конфиг.
1 |
touch /etc/apache2/sites-available/newsite.conf |
Ниже пример конфига сайта:
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName newsite.test.com ServerAlias newsite.test.local DocumentRoot /hosting/newsite CustomLog /var/log/apache2/newsite.access.log combined ErrorLog /var/log/apache2/newsite.error.log </VirtualHost> |
В данном примере:
Сайт работает на 80-м порту
Сайт доступен по DNS адресам newsite.test.com и newsite.test.local
Сайт расположен в директории — /hosting/newsite
Создаем каталог с новым сайтом.
1 |
mkdir /hosting/newsite |
Выставляем права на каталог с сайтами.
1 |
chown -R www-data /hosting/ |
Создадим тестовую страницу.
1 |
touch /hosting/newsite/index.html |
1 |
echo "Test site page" >> /hosting/newsite/index.html |
Включаем сайт:
1 |
a2ensite newsite.conf |
Перезагрузим конфиги apache2
1 |
service apache2 reload |
Теперь добавьте DNS записи А с именем вашего сайта и ip адресом сервера.
В моем случае DNS имя newsite.test.com
Теперь сайт доступен по адресу http://newsite.test.com
Рассмотрим настройку SSl.
Создадим ssl сертификат.
Вводим команду ниже, вводим пароль и отвечаем на вопросы.
1 |
openssl req -new -x509 -days 30 -keyout server.key.orig -out server.pem |
Снимаем пароль с сертификата, иначе Apache будет спрашивать пароль каждый раз при загрузке.
1 |
openssl rsa -in server.key.orig -out server.key |
Если вам нужно создать сертификат, который будет подписываться в стороннем центре сертификации, то выполните следующий запрос:
1 |
openssl req -new -inform DER -sha1 -newkey rsa:2048 -nodes -keyout server.key -out request.der |
Далее подпишите содержимое request.der
Далее конвертируем полученный подписанный сертификат:
1 |
openssl x509 -in cert.cer -inform DER -out server.pem |
Копируем полученные файлы в /etc/ssl
1 |
cp server.pem /etc/ssl/certs/ |
1 |
cp server.key /etc/ssl/private/ |
Устанавливаем права на чтение только администратору.
1 |
chmod 0600 /etc/ssl/private/server.key |
Теперь рассмотрим конфиг сайта с настроенным ssl и редиректом с 80 порта на 443:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<VirtualHost *:80> DocumentRoot /hosting/newsite ServerName newsite.test.com ServerAlias newsite.test.com ErrorLog /var/log/apache2/newsite-error.log <Location /> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R] </Location> </VirtualHost> <VirtualHost *:443> DocumentRoot /hosting/newsite ServerName newsite.test.com ServerAlias newsite.test.com ErrorLog /var/log/apache2/newsite-ssl-error.log CustomLog /var/log/apache2/newsite-ssl-access.log combined SSLEngine On SSLProtocol all -SSLv2 SSLCertificateFile /etc/ssl/certs/server.pem SSLCertificateKeyFile /etc/ssl/private/server.key </VirtualHost> |
Измените предыдущий конфиг на конфиг с ssl.
Протокол работы ssl указывается тут:
1 |
SSLProtocol all -SSLv2 |
Пути к сертификатам указываются тут:
1 2 |
SSLCertificateFile /etc/ssl/certs/server.pem SSLCertificateKeyFile /etc/ssl/private/server.key |
Перезапускаем Apache2.
1 |
service apache2 reload |
Добавляем разрешающее правило в Firewall.
1 |
ufw allow 443/tcp |
Теперь перейдя по ссылке http://newsite.test.com Вы будете перенаправлены на https://newsite.test.com
Удачной установки!
Добавить комментарий