• Yamaha motors
  • Subaru WRX STI
  • Баба Клава!
  • Светодиодные системы освещения

Печать

Debian. Замечания по установке и настройке Web сервера

При установке и тестировании использовался дистрибутив -

Debian 9 amd64 Stretch

Также данные действия использовались при настройке VDS сервера на хостинге компании FirstVDS (размер занятого пространства на диске составил 4Гб).

 

Установка LAMP (поднимаем web-server)

Установка WEBMIN

Установка ShoreWall файервола (надстройка над iptables)

FTP сервер. Установка, настройка

Apache. Несколько сайтов на одном хостинге

Apache. Включение модуля mod_rewrite.so

Apache. Права доступа к файлам и папкам находящимся в /var/www

Apache. Защита папок средствами Apache (.htpasswd)

Apache, PHP. Установка модуля Memcached (нужен для работы PrestaShop)

Apache+MySQL+PHP. Тест производительности web сервера

PHPMyAdmin установка, первоначальная настройка

Монтирование удаленного FTP ресурса в локальную папку с помощью CurlFtpFS

Настройка Apache для работы по протоколу HTTPS с несколькими доменами на одном IP

Дополнительно (улучшалки юзабилити ОС)


 

#apt-get update
#apt-get -y install mc htop iftop apache2  mariadb-server mariadb-client mariadb-common php7.0 php7.0-mysql libapache2-mod-php7.0

 

Установка LAMP (поднимаем web-server)

1. Устанавливаем Apache

#apt-get update
#apt-get -y install apache2

2. Устанавливаем MariaDB (замена MySQL)

#apt-get -y install mariadb-server mariadb-client mariadb-common

3. Устанавливаем PHP и необходимые мне расширения к нему

#apt-get -y install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-intl

Дополнительные необходимые команды для получения информации и тестирования:

#php -v    (номер версии установленного PHP)
#php -m    (список установленных модулей PHP)
#apt-cache search php7 (список доступных для установки пакетов)
#service --status-all    (список сервисов в системе)

Установка параллельно PHP5.6 -

Откройте терминал и выполните следующую команду:
#apt-get install apt-transport-https lsb-release ca-certificates

Получить ключ gpg:
#wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
или
#curl https://packages.sury.org/php/apt.gpg | apt-key add -

Добавьте новый репозиторий в свои источники:
#echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list

Установить PHP5.6
#apt-get update
#apt-get install php5.6 php5.6-mysql php5.6-mcrypt php5.6-mbstring php5.6-xml libapache2-mod-php5.6 php5.6-intl php5.6-gd php5.5-apcu php5.6-imap

 

4. Запускаем сервер

#service apache2 restart

 

Установка WEBMIN

Инструкция по установке на официальном сайте.

Документация - Установка через подключение репозитария WebMin - https://www.tecmint.com/install-webmin-in-debian-9/

Добавляем строки в файл со списком подключенных репозитариев etc/apt/sources.list :
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Устанавливаем ключи для подключения к репозитарию и устанавливаем WebMin:
#wget http://www.webmin.com/jcameron-key.asc
#apt-key add jcameron-key.asc
#apt-get update
#apt-get -y install webmin

 

Установка ShoreWall файервола (надстройка над iptables)

Документация, читать ...

#apt-get -y install shorewall

Содержание файлов конфигурации для одиночного файервола (на одиночной Linux системе):

/etc/shorewall/zones /etc/shorewall/interfaces /etc/shorewall/policy

/etc/shorewall/rules

  fw    firewall
  net    ipv4  
  net    eth0    detect   $FW         net               ACCEPT
  net           all                DROP     info
  all            all                REJECT   info
  Ping/ACCEPT    all    all
  Web/ACCEPT    all    all
  SSH/ACCEPT    net   $FW
  Webmin/ACCEPT    net   all

Включение автозапуска ShoreWall при старте системы :

1. В файле конфигурации /etc/shorewall/shorewall.conf установить параметр STARTUP_ENABLED=Yes
2. Пользователи пакета .deb должны отредактировать файл /etc/default/shorewall и установить параметр STARTUP=1

Проверяем с удаленной машины (или используем онлайн сервисы) открытые порты -
#nmap -P0 234.234.234.23

Добрые советы по настройке файервола на WEB сервере

1. Обеспечить доступ к серверам (портам) SSH (22), FTP (21), WEBMIN (10000) на сервере только с IP адресов администратора и разработчика
2. Не забыть открыть доступ к WEB-серверу (порты 80, 443) для всех
3. Обеспечить ответ на PING

 

FTP сервер. Установка, настройка

#apt-get -y install proftpd

Для доступа пользователя root (это плохо, знаем!), через WebAdmin (можно править напрямую конфиг.файлы) :
1. Убираем в разделе "Denied FTP Users" пользователя root
2. В разделе "Authentication"  ставим YES на "Allow login by root?"

 

Установка PHPMyAdmin

#apt-get install phpmyadmin

1. Отвечаем на вопросы установщика и устанавливаем пароль.
2. После установки PHPMyAdmin пускает только локальных пользователей, вход снаружи всем запрещен, даже root. Необходимо создать нового пользователя PHPMYAdmin с полными правами и разрешением на вход от куда угодно. Делаем это через WebMin или консоль.
3. Увеличиваем размер загружаемых файлов. В файле /etc/php/7.0/apache2/php.ini

upload_max_filesize  - устанавливает максимальный размер загружаемого файла,
post_max_size - отвечает за максимальный размер сообщения методом POST. Ставим примерно 150 и 200Мб соответственно.

 

Apache. Несколько сайтов на одном хостинге

1. В папке где расположены обычно файлы сайта (var/www) создаем подпапки тип
     /var/www/site_1.ru
     /var/www/site_2.com
     /var/www/site_2.org

2. Через WebAdmin или в конфигурационных файлах Apache создаем виртуальные хосты с указанием пути к созданным до этого папкам.

3. Перезапускаем Apache. Тестируем.

P.S. Используется внешний DNS сервер с настройкой "А" записей указывающих на настраиваемый хост. При необходимости можно создать собственный DNS сервер прямо на хосте. Для этого используется пакет ПО bind, плюс к этому будет необходим дополнительный IP адрес (их нужно два, требование регистраторов доменов). Доп.информация тут ...

 

Включение отправки писем средствами PHP mail

# apt-get update
# apt-get install sendmail-bin
# apt-get install sendmail

Добавляем строку в файл /etc/php/7.0/apache2/php.ini
sendmail_path =  /usr/sbin/sendmail -t -i

 

Apache. Включение модуля mod_rewrite.so

1. Подключаем модуль командой -
#a2enmod rewrite
Можно использовать WebAdmin (раздел Configure Apache Modules)

2. Правим конфиг. файлы Apache
/etc/apache2/site-available/default

Находим следующие строки и меняем "AllowOverride None" на "AllowOverride All" :

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

В конфиг. файлах виртуальных хостов (расположены тут же /etc/apache2/site-available/ ) правим аналогично добавляя этиже строки. Пример файла site_1.com.conf :

<VirtualHost *:80>
DocumentRoot "/var/www/site_1.com"
ServerName site_1.com
ServerAlias www.site_1.com
<Directory "/var/www/site_1.com">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
</VirtualHost>

3. Перезапускаем Apache командой #service apache2 restart

4. Если не работает, смотрим логи по адресу /var/log/apache2/

 

Apache. Права доступа к файлам и папкам находящимся в /var/www

Не уверен в правильности действий.

1. Создать рядового пользователя со своей группой. Например user_1, группа user_1. От его имени будут заливаться файлы и папки на web сервер.

2. Apache на Debian работает под пользователем www-data. Включить его в группу user_1.

3. Дать права на папки и файлы типа :
На все файлы 750 - владельцу все можно, www-data писать нельзя, остальным ничего
На папки 775 - владельцу и www-data все можно, остальным читать и запускать

P.S. Для PrestaShop 1.6 дополнительно установить права на папки :

Рекурсивно права на запись для пользователя www-data на ~/config/
Рекурсивно права на запись для пользователя www-data на ~/cache/
Рекурсивно права на запись для пользователя www-data на ~/log/
Рекурсивно права на запись для пользователя www-data на ~/img/
Рекурсивно права на запись для пользователя www-data на ~/mails/
Рекурсивно права на запись для пользователя www-data на ~/modules/
Рекурсивно права на запись для пользователя www-data на ~/themes/default-bootstrap/lang/
Рекурсивно права на запись для пользователя www-data на ~/themes/default-bootstrap/pdf/lang/
Рекурсивно права на запись для пользователя www-data на ~/themes/default-bootstrap/cache/
Рекурсивно права на запись для пользователя www-data на ~/translations/
Рекурсивно права на запись для пользователя www-data на ~/upload/
Рекурсивно права на запись для пользователя www-data на ~/download/
Рекурсивно права на запись для пользователя www-data на ~/admin/backups/
Рекурсивно права на запись для пользователя www-data на ~/admin/import/

Консольная команда на рекурсивное изменение прав доступа только на папки :

#find . -type d -exec chmod 0755 {} ';'

При переносе магазина на PrestaShop не забываем удалить и заново сгенерировать файл .htaccess находящийся в корне движка сайта.
Регенерация производится в админке PrestaShop 1.6 :
Настройки -> SEO и URL -> Сохранить
Изменить логин, пароль, и наименование базы данных. Файл настройки с данными по доступу к базе данных расположен по адресу:
/config/settings.inc.php

 

Apache. Защита папок средствами Apache (.htpasswd)

1. В защищаемой папке создаем файл с инструкциями для сервера Apache : .htaccess

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/site.com/admindir/.authfile
Require user admin

2. Генерируем файл с паролем (ключ -с создание нового файла, без него добавление в имеющийся файл нового пользователя) :

#htpasswd -c /полный_путь_к_файлу/.authfile логин_пользователя

Внимание!
Модуль Apache Rewrite должен быть включен, в настройках сайта прописан параметр AllowOverride All

 

Apache, PHP. Установка модуля Memcached (нужен для работы PrestaShop)

Подробная инструкция тут и тут...

#apt-get install memcached php5-memcache
#apt-get install memcached
#pecl install memcache

 

Apache+MySQL+PHP. Тест производительности web сервера

Провести тест производительности сервера можно провести с помощью утилиты AB (Apache HTTP server benchmarking tool), входящей в состав пакета установки Apache.

#ab -c10 -n500 http://mydomen.dom/index.php

 

Монтирование удаленного FTP ресурса в локальную папку с помощью CurlFtpFS

Монтирование производим для обычного пользователя (user_id=1000,user_group=1000). Используем автозагрузку через fstab.

Установка пакета CurlFtpFS:
#apt-get -y install curlftpfs

1. Добавляем пользователя в группу fuse
2. Правим файл конфигурации etc/fuse.conf, вставляем строку :
user_allow_other
3. Создаем папку в которую будем монтировать FTP ресурс. Можно так:
media/ftp_dir
4. Вставляем строку автомонтирования в файл etc/fstab :
curlftpfs#ftp.server.net /media/ftp_dir fuse user=password:uname,uid=1000,gid=1000,umask=002,allow_other,default_permissions,_netdev 0 0

 


Настройка Apache для работы по протоколу HTTPS

Пошагово для конфигурации на одном IP несколько разных доменов, подробности ниже :

  1. Генерируем или покупаем сертификаты для доменов (по одному на каждый. Мультидоменные сертификаты не рассматриваются) и раскладываем их по папкам чтобы не путаться. По умолчанию сертификаты и ключи лежат тут - /etc/ssl;
  2. Включаем модуль SSL в Apache командой #a2enmod ssl (если через WebAdmin модуль называется - ssl);
  3. Удаляем, отключаем файл с дефолтовыми настройками SSL в Apache (default-ssl) чтобы не мешался под ногами. См.ниже;
  4. Для каждого домена правим файл конфигурации Apache. Дописываем виртуальные хосты для порта 443 с указанием путей к сертификатам (пример ниже);
  5. В файл /etc/apache2/ports.conf вписываем строку - NameVirtualHost *:443 (пример реального файла ниже);
  6. Включаем принудительное перенаправление всех запросов к сайтам на HTTPS. Тут несколько вариантов с помощью дериктивы Apache - Redirect, с помощью настроек .htaccess расположенного в корне сайта или если у Вас сайты на движках PrestaShop, Joomla, через настройки в панели управления типа "Включить SSL" / HTTPS для всех страниц сайта и т.д. Читаем соответствующую документацию.
  7. Перезапускаем Apache.

Для работы сервера Apache потребуется ssl-сертификат необходимый для проверки соединения. Сертификаты бывают самоподписанный (генерируются самостоятельно например с помощью OpenSSL), платные и бесплатные, которые выдаются специализированными центрами сертификации, а также "пустые" сертификаты с временной, фиктивной информацией необходимые только для создания SSL-соединения.

Платные сертификаты также делятся по типу валидации:

  • Сертификаты, которые подтверждают только доменное имя (Domain Validation — DV).
  • Сертификаты, которые подтверждают домен и организацию (Organization Validation — OV).
  • Сертификаты, с расширенной проверкой (Extendet Validation — EV).

Сервер генерации бесплатных SSL-сертификатов - SSL For Free (https://www.sslforfree.com/).
Внимание! Срок действия бесплатного сертификата 90 дней! Можно зарегестрироваться на сайте, тогда Вы будете получать уведомления об окончании действия сертификатов. Самый быстрый метод и рабочий медод подтверждения владения доменом - внесение TXT записей в DNS, после генерации сертификатов их можно удалить. После генерации получаете три файла:

ca_bundle.crt - файл корневого сертификата
certificate.crt  - файл сертификата
private.key     - файл ключа сертификата

Раскладываем их в папки /etc/ssl/ca_certs, /etc/ssl/certs, /etc/ssl/private соответственно или лучше создать для каждого домена размещенного на сервере отдельную папку и прописать в файле конфигурации Apache пути к ним. См. ниже.
Не забудьте перезагрузить WEB сервер, чтобы сертификаты заработали.

#service apache2 restart

Поддержка нескольких SSL-сертификатов (несколько сайтов с разными доменными именами) расположенных на одном сервере (на одном IP) осуществляется с помощью модуля SNI. Включен в новых версиях Apache и OpenSSL по умолчанию. Проверить это можно посмотрев в файле логов Apache после старта: /var/log/apache2/error.log. Должна быть строка вида:

Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)

Для "много-доменного" сервера файл с настройками по умолчанию /etc/apache2/sites-avalable/default-ssl и символическую ссылку на него в папке /etc/apache2/sites-enabled/@default-ssl нужно удалить.

Содержание файла конфигурации для виртуального сервера.

По умолчанию для каждого домена свой файл с конфигурацией.

<VirtualHost *:80>
DocumentRoot /var/www/site.ru
ServerName site.ru
ServerAlias www.site.ru
<Directory "/var/www/site.ru">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
</VirtualHost>

<VirtualHost *:443>
DocumentRoot /var/www/site.ru
ServerName site.ru
ServerAlias www.site.ru
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
SSLCACertificateFile /etc/ssl/certs_ca/ca_bundle.crt
<Directory "/var/www/site.ru">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
</VirtualHost>

Пример файла конфигурации Apache etc/apache2/ports.conf

NameVirtualHost *:80
Listen *:80

<IfModule mod_ssl.c>  
    NameVirtualHost *:443
    Listen *:443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Решение проблемы при запуске Apache: apache2 could not reliably determine the server's fully qualified domain name using…
Надо создать файл /etc/apache2/conf.d/vhosts.conf  и добавить в него директиву: ServerName localhost

 

Дополнительно (улучшалки юзабилити ОС)


Включение автозавершения ввода команд в командной строке bash

1. Устанавливаем пакет - bash-completion
#apt-get install bash-completion
Редактируем файл /etc/profile, добавляя следующие строки в конец файла -
if [ -f /etc/bash_completion ]; then
 /etc/bash_completion
fi
2. Изменить Shell для пользователя на /bin/bash
это возможно через Webmin или дать команду :
#usermod -s /bin/bash user

Для графической оболочки, если десктоп.

1. Установка шрифтов из Windows. Выполняется из панели управления KDE.

2. Изменение шрифтов KDE на Tahoma и отключение их сглаживания. Выполняется из панели управления KDE.

3. Русификация KDE. При установке выявлен недочет сборки - неполная русификация KDE. Лечится установкой пакета локализации.

#apt-get update
#apt-get install kde-l10n-ru

Установка дополнительных, необходимых программ

#apt-get -y install mc iftop htop

TineMCE отключение абсолютного пути при вставке изображения, включение относительного

При инициализации редактора необходимо установить следующие опции в конфигурационном файле:

relative_urls : false,  // включив получим адрес вида ../img/sample.jpg
remove_script_host : true,  // обрезает наименование хоста, домена. Адрес вида /img/sample.jpg
convert_urls: true,  // включает режим конвертации пути

В PrestaShop файл с параметрами запуска TineMCE расположен по адресу - /js/admin/tinemce.inc.js

Источник информации

 

 

 

 

Документация:

Debian LAMP