Чтобы создать свой собственный сайт, и вдоволь  с ним наиграться, если конечно уже есть доменное имя,  совсем не обязательно загаживать свой компьютер не нужными программами, или платить бешенные деньги за хостинг. Достаточно зайти на TimeWeb.ru, сразу предупрежу всех, статья не рекламная и не проплаченная, выбрать не дорогой тариф и..

TimeWeb.ru — Тариф: Danny
CPU: 1 x 2.8 ГГц
RAM: 1 ГБ
NVME: 10 ГБ
При оплате за год: 170 руб.в мес.

В панели управления Домены добавляем свой домен:
Для примера — mywebserver.ru

Строим сервер на ubuntu 20.04.
Список VDS, Консоль, входим как root, по присланным на почту логину и паролю.
Обновляем систему:

apt-get update
apt-get upgrade

задаем имя серверу:
hostnamectl set-hostname mywebserver.ru

Список VDS, главная, Список используемых IP-адресов, для примера 10.1.7.188

nano /etc/hosts
10.1.7.188 mywebserver.ru

ufw status
ufw enable
ufw allow OpenSSH

shutdown -r now

заходим через pytty по ssh

adduser
#пароль для webstaff : pa55w0rd
usermod -aG sudo webstaff
#если нужно забрать — deluser ИМЯ_ПОЛЬЗОВАТЕЛЯ sudo

# пробуем
su webstaff

создаем ключ для входа, через puttygen (здесь не рассмотрен..), получаем
authorized.txt, private-key.ppk, public-key, из public-key копируем все
от и до, далее:

cd ~
mkdir ~/.ssh

cat > ~/.ssh/authorized_keys
вставляем из public-key

chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys

#nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
AuthorizedKeyFile .ssh/authorized_keys .ssh/authorized_keys2

systemctl reload sshd.service

пробуем зайти по созданному ключу по ssh webstaff
зашли, пробуем sudo
sudo -s

все работает?, тогда далее:

Так как вход по sudo -s, больше судо не указываем..
apt install fail2ban
systemctl status fail2ban
systemctl start fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
#nano /etc/fail2ban/jail.local
включить sshd правила — секция JAIL [sshd]:
добавить enabled = true

systemctl enable fail2ban
systemctl restart fail2ban
systemctl status fail2ban
fail2ban-client status sshd

apt install chrony
systemctl enable chrony
systemctl start chrony
systemctl status chrony

——Полезные сведения по ufw:
ufw status
посмотреть правила по номерам
# ufw status numbered
удалить правило номер
# ufw delete NUM
Блокировка подсети через ufw. Синтаксис тот же:
# ufw deny proto tcp from sub/net to any port 22
Лимит на количество подключений с одного ip (iptables)
# ufw limit ssh/tcp

ufw delete allow out 80/tcp
ufw delete deny in 80/tcp

ufw allow proto tcp from any to any port 25,80,443,110,143,465,587,993,995
——-Полезные сведения по ufw

apt-get update

Установка LAMP
apt-get install lamp-server^

ufw allow Apache

Проверяем работу apache по IP-адресу
http://10.1.7.188/

Создаем php файл в /var/www/html/testphp.php
#nano /var/www/html/index.php
<?php echo date(‘Y-m-d H:i:s’); ?>
или
<?php phpinfo(); ?>

Проверяем работу php
http://10.1.7.188/testphp.php

если все отображается, удаляем файл:
rm -rf /var/www/html/testphp.php

Проверяем по имени
http://mywebserver.ru

Запуск скрипта mysql_secure_installation
mysql_secure_installation
Запрос разрешение на установку плагина валидации паролей LOW (0), MEDIUM (1) и STRONG (2)
При ответе нет, будет установка пароля root для MySQL : Hjdn7$sq
Все последующие вопросы — Yes

Проверяем MySQL
mysql -u root -p
Hjdn7$sq

Установка phpmyadmin

apt install phpmyadmin

выбираем apache, фиксируем пробелом, табом перескакиваем OK
На вопрос сконфигурировать базу данных через dbconfig-common, выбираем Yes
Вводим пароль для MySQL root
Создаем пароль для phpmyadmin — 2Ejdn7$et

—————Привилегии на создание баз данных
mysql -u root -p
Можно дать полные права пользователю phpmyadmin:
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘phpmyadmin’@’localhost’;
Применяем привилегии:
mysql> FLUSH PRIVILEGES;
mysql> exit

Можно создать необходимую базу и одного пользователя для нее, и через phpmyadmin загружать данные в эту базу:
mysql> CREATE USER ‘userwordpress’@’localhost’ IDENTIFIED BY ‘Strong_Password’;
mysql> CREATE DATABASE userwordpress;
mysql> GRANT ALL PRIVILEGES ON userwordpress.* TO ‘userwordpress’@’localhost’;
mysql> FLUSH PRIVILEGES;
mysql> exit
—————Привилегии на создание баз данных

Закрываем доступ к phpmyadmin со всех IP, кроме своего.
# nano /etc/phpmyadmin/apache.conf

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>

Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx/24
Allow from yyy.yyy.yyy.yyy/29
Allow from 127.0.0.0/255.0.0.0 ::1/128
#

service apache2 restart

Создаем файл для автоматического создания сайта:

—————————————————————————

#nano /var/www/addsite.sh

#!/bin/bash
echo -e «Введите название проекта (Например example.com):»;
read NAME_OF_PROJECT

sudo useradd ${NAME_OF_PROJECT} -b /var/www/ -m -U -s /bin/false

sudo usermod -a -G ${NAME_OF_PROJECT} www-data

#создаем папки проекта
sudo mkdir -p -m 754 /var/www/$NAME_OF_PROJECT/www
sudo mkdir -p -m 754 /var/www/$NAME_OF_PROJECT/logs
sudo mkdir -p -m 777 /var/www/$NAME_OF_PROJECT/tmp

#добавляем правила в конфигурационный файл апача

add_to_apache_conf=»
<VirtualHost *:80>
ServerName ${NAME_OF_PROJECT}
ServerAdmin webmaster@localhost
DocumentRoot /var/www/${NAME_OF_PROJECT}/www
<Directory /var/www/${NAME_OF_PROJECT}/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm
php_admin_value short_open_tag On
php_admin_value mbstring.func_overload 2
php_admin_value mbstring.internal_encoding UTF-8
php_admin_value date.timezone Europe/Moscow
php_admin_value opcache.revalidate_freq 0
php_admin_value opcache.max_accelerated_files 100000
php_admin_value display_errors On
php_admin_value max_input_vars 10000
php_admin_value upload_max_filesize 8M
Require all granted
</Directory>
# ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog /var/www/${NAME_OF_PROJECT}/logs/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
CustomLog /var/www/${NAME_OF_PROJECT}/logs/access.log combined
</VirtualHost>»

#добавляем новый хост
sudo touch /etc/apache2/sites-available/${NAME_OF_PROJECT}.conf
sudo echo «$add_to_apache_conf» >> /etc/apache2/sites-available/${NAME_OF_PROJECT}.conf

# добавляем домен в hosts
sudo echo «127.0.0.1 ${NAME_OF_PROJECT}» >> /etc/hosts

#включаем конфигурацию сайта
sudo a2ensite ${NAME_OF_PROJECT}

sudo chown -R ${NAME_OF_PROJECT}:${NAME_OF_PROJECT} /var/www/${NAME_OF_PROJECT}/

#ставим права 755
sudo chmod -R 755 /var/www/${NAME_OF_PROJECT}

#перезапускаем апач
service apache2 restart

echo «Сайт готов»
#
# конец nano /var/www/addsite.sh

————————————————————————————

права на выполнение:
chmod +x /var/www/addsite.sh

выполнить:
sudo ./addsite.sh

Отключить Apache по умолчанию
sudo a2dissite 000-default
sudo systemctl restart apache2

Включить mod_rewrite
a2enmod rewrite
systemctl restart apache2

Распаковать архив сайта, либо новый движок в /var/www/mywebserver.ru/www
Зайти в базу данных через phpmyadmin и загрузить сохраненную базу

если есть путаница с правами на файлы, то:
cd /var/www/mywebserver.ru/www
sudo chown -R mywebserver.ru:mywebserver.ru /var/www/mywebserver.ru/www
sudo find /var/www/mywebserver.ru/www/ -type d -exec chmod 750 {} \;
sudo find /var/www/mywebserver.ru/www/ -type f -exec chmod 640 {} \;

—————Сказать Apache слушать порт и открыть его в ufw
Добавить порт для прослушивания apacheм, если надо.
nano /etc/apache2/ports.conf
LISTEN 8089

systemctl reload apache2

открыть порт в фаервол:
ufw allow in 8089/tcp
—————Сказать Apache слушать порт и открыть его в ufw

Посмотреть какие порты, кто слушает:
isof -i
————
СЕРТИФИКАТ
Установка Certbot:
apt install certbot python3-certbot-apache

certbot —apache

будет запрос для ввода адреса электронной почты,
принять условия использования Let’s Encrypt,
подписаться на рассылку новостей,
на какой домен сертификат,
перенаправлять или нет HTTP трафик на HTTPS,

проверить состояние сервиса
systemctl status certbot.timer

Протестировать процесс обновления, запустите сухой прогон:
certbot renew —dry-run

Чтобы разблокировать трафик HTTPS:
ufw allow ‘Apache Full’
ufw delete allow ‘Apache’
————

apt-get update
apt-get upgrade

Arduinokit.ru - Свой сайт

Arduinokit.ru — Свой сайт

P.S.
Если с правами будет что не так,
sudo nano /etc/apache2/envvars
изменяем
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Вместо www-dat
export APACHE_RUN_USER=mywebserver.ru
export APACHE_RUN_GROUP=mywebserver.ru

 

Всем удачи!