Рубрики
apache \ nginx

old 2014 / LAMP на Debian / apache2 / nginx /

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

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 - показать настройки виртхостов

Популярные модули:

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


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

пример конфигурации:

0) Создаем конфиг 
nano /etc/apache2/sites-available/site_name.conf


ServerName site_name.com
ServerAlias www.site_name.com
DocumentRoot /var/www/site_dir/

 Options FollowSymLinks
 AllowOverride All



1) Включаем конфиг 
a2ensite site_name.conf

Apache Virtual host


nano /etc/apache2/sites-available/default

	ServerName shop.ru
	ServerAlias http://www.shop.ru
	DocumentRoot /var/www/opencart



	ServerName glpi.ru
	ServerAlias http://www.glpi.ru
	DocumentRoot /var/www/glpi



ServerName redmine.ru
ServerAlias http://www.redmine.ru
DocumentRoot /usr/share/redmine/public

Options Indexes ExecCGI FollowSymLinks
Order allow,deny
Allow from all
AllowOverride all



проверка работы php

 
echo "" > /var/www/html/pi.php

проверка конфигурация apache

apache2ctl configtest

показать виртуальные хосты:

apache2ctl -S 

создание ключа и ssl-сертификата

 
openssl req -new -x509 -days 30 -keyout server.key -out server.pem
server.key - приватный ключ 
server.pem - публичный сертификат

убираем пароль с ключа

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору

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


        
                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
                
                                SSLOptions +StdEnvVars
                
                
                                SSLOptions +StdEnvVars
                
                BrowserMatch "MSIE [2-6]" \
                                nokeepalive ssl-unclean-shutdown \
                                downgrade-1.0 force-response-1.0
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
        

nginx frontend

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;
  }
}