
Установка LAMP для хостинга
Установка LAMP
Навстройка сети:
/etc/network/interfaces
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 172.16.3.3
netmask 255.255.255.0
gateway 172.16.3.1
или, если установлен netplan
/etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [172.16.3.3/24]
gateway4: 172.16.3.1
nameservers:
search: [domain.com]
addresses: [8.8.8.8, 172.16.3.1]
Apache2:
# apt-get install apache2
Включение mpm-itk
# a2enmod mpm_itk
MariaDB:
# apt-get install mariadb-server
Настройка:
# mysql_secure_installation
PHP:
# apt install sqlite3 curl php php-cli php-common libapache2-mod-php php-mysql php-curl php-gd php-sqlite3 php-xml php-mbstring php-fpm
Проверка:
php -m
или
phpinfo();
mpm-itk:
apt-get install libapache2-mpm-itk
Привести test1.conf к виду
#AssignUserID wwwdata wwwdata
#
apt-get install libapache2-mod-ruid2
/etc/apache2/apache2.conf:
RUidGid ${APACHE_RUN_USER} ${APACHE_RUN_GROUP}
В test1.conf:
RUidGid webadmin admins
Одновременно ставить оба мода не надо.
Проверить работу мода можно кодом на РНР:
print `id`;
www-data 13929 5.6 0.5 1299920 66256 ? S 10:28 2:34 /usr/sbin/apache2 -k start
www-data 14027 5.6 0.6 1318024 83468 ? S 10:43 1:40 /usr/sbin/apache2 -k start
, где найти строку с root - родительский процесс, в данном случае 10605
, в данном случае - 16,7М
Включение дополнительных модулей(при необходимости)
# a2enmod rewrite
|
# a2enmod headers
|
# a2enmod include
|
# apache2ctl configtest && systemctl reload apache2
|
Cannot adopt OID in NET-SNMP-EXAMPLES
Удалить зрз-ытьз
sudo apt-get remove php5-snmp
sudo apt-get remove php7.0-snmp
2. Ошибка authz_core error
Проверить, чтобы конфигурационные файлы хостингов заканчивались на .conf
Вписать Require all granted в секцию
3. Отображение сайта в неверной кодировке при cp1251
Прописать в .htaccess
AddDefaultCharset WINDOWS-1251
php_value default_charset cp1251
Бэкапирование по rsync
apt-get install rsync
10.10.10.2 - рабочий сервер
10.10.10.3 - сервер бэкапов (с него коннектимся к рабочему)
1. Создание ключа
На 10.10.10.3:
# ssh-keygen -f ~/.ssh/id_rsa -q -P "" -b 4096
# cat ~/.ssh/id_rsa.pub
Вывод скопировать
На 10.10.10.2:
mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys
В файл ~/.ssh/authorized_keys копируем содержимое публичного ключа, скопированного выше
/etc/init.d/sshd restart
Проверка c 10.10.10.3
ssh -i /home/user2/.ssh/id_rsa -p 22 user1@10.10.10.2
Пример rsync:
#!/bin/sh
snapshot_dir=/var/backup/snaps-site.ru/`date '+%y-%m-%d'`
mkdir $snapshot_dir
rsync -ahz -r --delete --hard-links \
--delete-excluded --exclude-from=/root/scripts/siteru.exclude \
--backup --backup-dir=$snapshot_dir \
-e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
user@10.10.10.2:/var/www/site.ru/ /var/www/site.ru/
Монтирование yandex диска
apt-get install davfs2
sudo mkdir -p /mnt/yandex
/etc/davfs2/secret:
/mnt/yandex username@yandex.ru password
/etc/fstab:
https://webdav.yandex.ru /mnt/yandex davfs noauto,user 0 0
mount /mnt/yandex
umount /mnt/yandex
Вместо всего вышеописанного можно установить VestaCP
Для этого нужна чистая установка (из пакетов доустановить openssh-server и curl)/
Зайти на http://vestacp.com/install/ , выбрать желаемые параметры и выполнить инструкцию в SSH.
Заменить подсистему sftp в
БЭКАПИРОВАНИЕ СЕРВЕРА
RSYNC по SSH
Создать ключ
# ssh-keygen -t rsa
Скопировать на синхронизируемый сервер
№ ssh-copy-id -p22 -i /home/user1/.ssh/id_rsa.pub user1@10.10.1.3
Скрипт
#!/bin/sh
snapshot_dir=/var/data/snaps-www/`date '+%y-%m-%d'`
mkdir $snapshot_dir
rsync -ahz -r --delete --hard-links \
--delete-excluded --exclude-from=/root/scripts/www.exclude \
--backup --backup-dir=$snapshot_dir \
-e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
user1@10.10.1.3:/var/www/ /var/data/www/
rsync -avzhe "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
user1@10.10.1.3:/backup/bases/*.sql.gz /var/data/bd/
----SFTP доступ. ----
Ограничение пользователя в директории/etc/ssh/sshd_config
:
Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
Match User user1
#Match Group sftpusers
ChrootDirectory /home/user1
# ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Владец директории должен быть root, иначе:
fatal: bad ownership or modes for chroot directory
Задать
chown root:user1 /home/user1
Линковка лиректории из /tmp (tmpfs)
Я использую HLS сервер, который генерит сегменты в /tmp/folder
/tmp смонтирован в память - tmpfs через /etc/systemd/system/tmp.mount
Также я пытаюсь прилинковать эту/tmp/folder в корень виртуального хостинга, и получаю
AH00037: Symbolic link not allowed or link target not accessible:
Не смотря на то, что в .htaccess прописано
Options -SymLinksIfOwnerMatch +FollowSymlinks
Дело в том, что apache не любит линковаться в /tmp, потому что в /etc/systemd/system/multi-user.target.wants/apache2.service прописано
PrivateTmp=true
Пофиксив сие на false и послав безопасность можно лететь дальше.
CertBot
Скачать скрипт certbot:
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
Прописать репозитории:
Debian wheezy:
1
|
deb http://ftp.ru.debian.org/debian wheezy-backports main
|
Debian jessie:
1
|
deb http://ftp.ru.debian.org/debian jessie-backports main
|
Запустить генерацию ключей
sudo certbot-auto --apache
|
Ввести свой емайл для алертов, согласиться на соглашение, отвергнуть публичность своего емайла, выбрать домен для генерации, возможно согласиться на изменение в конфигураии для вирутального хоста http -> https
Продление.
Сертификат истекает через 3 месяца.
sudo ./certbot-auto renew --no-self-upgrade
|
Тестирование продления
sudo ./certbot-auto renew --dry-run
UPDATE:
Установка для debian
apt-get install certbot
если apache:
apt-get install python3-certbot-apache
certbot run --apache
если nginx:
apt-get install python3-certbot-nginx
certbot run --nginx
Обновление
certbot renew
Реврайты
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
или
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
или
RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Более быстрый универсальный способ - www.sslforfree.com/
Всё интуитивно пошагово понятно.
Для lighttpd (требуется lighttpd-mod-redirect):
PEM ключ собирать из трех полученных файлов, начиная с private.key
## bind to port (default: 80)
server.port = 80
## Ensure mod_redirect is enabled!
#server.modules += ( "mod_redirect" )
$SERVER["socket"] == ":80" {
$HTTP["host"] =~ "(.*)" {
url.redirect = ( "^/(.*)" => "https://%1/$1" )
}
}
$SERVER["socket"] == ":443" {
protocoll = "https://"
ssl.engine = "enable"
ssl.pemfile = "/pathtolg2.pem"
ssl.ca-file = "/pathto/ca_bundle.crt"
server.name = "example.com"
}
Clamav
Установка
apt-get install clamav
Обновление
freshclam
Проверка рекрусивно в /home, показывать только инфецированные, перемещать в карантин
clamscan -r /home -i --move=/infected_files
VESTA ControlPanel
Хорошая находка для автоматизации предоставления хостинга пож разные проекты на одном сервере
Установка:
# Connect to your server as root via SSH
ssh root@your.server
# Download installation script
curl -O http://vestacp.com/pub/vst-install.sh
# Run it
bash vst-install.sh
Установка разных версий PHP для вирутальных площадок
(Начиная с debian 10)
# wget -nv -O ./vesta-inst-php.sh https://c.myvestacp.com/tools/multi-php-install.sh # vi ./vesta-inst-php.sh inst_56=1 inst_70=1 inst_71=1 inst_72=1 inst_73=0 inst_74=1 # sudo bash ./vesta-inst-php.sh
Принцип работы - запуск fpm сервисов:
# systemctl start php7.4-fpm
# systemctl status php7.4-fpm
config хостинга:
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
Источник:
https://kamaok.org.ua/?p=2269
https://bozza.ru/art-190.html
https://www.f-notes.info/linux:yandex_disk
https://serveradmin.ru/ustanovka-i-nastroyka-vestacp-na-centoos-debian-ubuntu/
Lisolog 2021