1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
1) установка Apache + PHP + MySQL apt update && apt upgrade - обновим установленные пакеты apt install apache2 php php-mysql libapache2-mod-php php-mbstring php-zip php-gd - установим apache + php apt install mysql-server mysql-client mysql-common - установим сервер баз данных Mysql 2) включить мод rewrite a2enmod rewrite 3) включить сайт name.conf /etc/apache2/sites-available/ a2ensite name.conf 4) включение мода alias ( нужен для работы Redirect / https://example.com/) a2enmod alias 5) включаем мод ssl (https) a2enmod ssl 6) включаем дефолтный конфиг default-ssl a2ensite default-ssl 7) включаем модуль remout a2enmod remoteip |
Apachectl — утилита управления web-сервером Apache
1 2 3 4 5 6 7 8 9 10 |
apachectl -h - помощь apachectl -v - версия apachectl -S - показать виртуальные хосты\конфиги\директории apachectl -t - проверка конфигурации apachectl configtest - проверка конфигурации apachectl fullstatus - состояние apache apachectl status - состояние apache apachectl -l - вывести список вкл модулей apachectl -t -D DUMP_RUN_CFG - показать запускаемый конфиг apachectl -t -D DUMP_VHOSTS - показать настройки виртхостов |
Популярные модули:
1 2 3 4 5 6 7 8 9 10 11 12 |
mod_alias mod_authz_host mod_deflate mod_dir mod_expires mod_headers mod_mime mod_rewrite mod_log_config mod_autoindex mod_negotiation mod_setenvif |
mod_rewrite в Apache
1 2 3 4 5 6 7 8 9 10 11 |
0)Включаем mod_rewrite: a2enmod rewrite 1)Редактируем конфиг nano /etc/apache2/sites-enabled/000-default AllowOverride None AllowOverride All 2)Перезагружаем Apache service apache2 reload service apache2 restart |
пример конфигурации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
0) Создаем конфиг nano /etc/apache2/sites-available/site_name.conf <VirtualHost *:80> ServerName site_name.com ServerAlias www.site_name.com DocumentRoot /var/www/site_dir/ <Directory "/var/www/site_dir"> Options FollowSymLinks AllowOverride All </Directory> </VirtualHost> 1) Включаем конфиг a2ensite site_name.conf |
Apache Virtual host
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
nano /etc/apache2/sites-available/default <VirtualHost *:80> ServerName shop.ru ServerAlias http://www.shop.ru DocumentRoot /var/www/opencart </VirtualHost> <VirtualHost *:80> ServerName glpi.ru ServerAlias http://www.glpi.ru DocumentRoot /var/www/glpi </VirtualHost> <VirtualHost *:80> ServerName redmine.ru ServerAlias http://www.redmine.ru DocumentRoot /usr/share/redmine/public <Directory "/usr/share/redmine/public"> Options Indexes ExecCGI FollowSymLinks Order allow,deny Allow from all AllowOverride all </Directory> </VirtualHost> |
проверка работы php
1 |
echo "<?php phpinfo(); ?>" > /var/www/html/pi.php |
проверка конфигурация apache
1 |
apache2ctl configtest |
показать виртуальные хосты:
1 |
apache2ctl -S |
создание ключа и ssl-сертификата
1 2 3 |
openssl req -new -x509 -days 30 -keyout server.key -out server.pem server.key - приватный ключ server.pem - публичный сертификат |
убираем пароль с ключа
1 2 3 |
cp server.key{,.orig} openssl rsa -in server.key.orig -out server.key rm server.key.orig |
скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору
1 2 3 |
sudo cp server.pem /etc/ssl/certs/ sudo cp server.key /etc/ssl/private/ sudo chmod 0600 /etc/ssl/private/server.key |
nano /etc/apache2/sites-enabled/default-ssl.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLProtocol all -SSLv2 - добавить строчку для включения SSLv2 #SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateFile /etc/ssl/certs/server.pem - публичный сертификат #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key SSLCertificateKeyFile /etc/ssl/private/server.key - приватный ключ #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt #SSLCACertificatePath /etc/ssl/certs/ #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt #SSLVerifyClient require #SSLVerifyDepth 10 <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule> |
nginx frontend
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
user www-data www-data; - пользователь и группа от которого запускается процесс worker_processes 4; - кол-во рабочих процесса #/var/log/nginx/error_log - лог для ошибок events { worker_connections 1024; - максимум рабочих соединений } http { include mime.types; - Подключаем таблицу mime default_type application/octet-stream; - mime-тип по умолчанию client_max_body_size 4000m; - директива client_max_body_size задаёт максимально размер запроса клиент client_header_timeout 10m; - директива задаёт таймаут при чтении заголовка запроса клиента client_body_timeout 10m; - директива задаёт таймаут при чтении тела запроса клиента send_timeout 10m; - директива задаёт таймаут при передаче ответа клиенту keepalive_timeout 10m; - директива задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет з$ sendfile on; - директива разрешает или запрещает использовать sendfile() #tcp_nopush on; - директива разрешает или запрещает использовать опции TCP_NOPUSH во FreeBSD #client_header_buffer_size 4k; - директива задаёт размер буфера для чтения заголовка запроса клиента #large_client_header_buffers 4 4k; - директива задаёт максимальное число и размер буферов для чтения большого заголовка запро$ #access_log logs/access.log main; - лог доступа всего веб-сервера #log_format main '$remote_addr - $remote_user [$time_local] $request ''"$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; - формат лог файла #server { # listen 80; # server_name name.ru ; # # location / { # proxy_pass http://IP_OR_DNS; # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # } #} server { server_name NAME_DNS.ru; rewrite ^ http://NAME.rU; } server { listen 80; server_name NAME_DNS; location / { proxy_pass http://IP_OR_DNS; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name name_DNS.ru name_DNS_1.net ; location / { proxy_pass http://IP; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $remote_addr; } } |