На примере хостинга Beget, с использованием Git bash или PowerShell
- Регистрация аккаунта и создание нового сервера не представляют особой сложности. Одновременно с созданием сервера установить предлагаемую версию операционной системы (я установил сборку LEMP (Linux, Nginx, MySQL, PHP)).
- Установить Git bash (если не хотите пользоваться PowerShell).
Внимание! В примерах подключение под root (с правами суперпользователя), но лучше создать нового пользователя (например, user) и работать под ним!
- Запустить Git bash (или PowerShell).
- Выполнить команду ssh root@IP_server, где IP_server - внешний IP созданного вами сервера.
- Если в системе отсутствуют SSH-ключи, то необходимо их сгенерировать на локальной машине (подробнее...) и затем разместить в файле /root/.ssh/authorized_keys.
Для получения ключа rsa вашего сервера наберите в Git bash команду (где server_ip - IP-адрес вашего сервера, например 192.168.2.1):
$ ssh-keyscan -t rsa server_ip
Пример ответа:
# server_ip SSH-2.0-OpenSSH_4.3
server_ip ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwH5EXZG...
Затем скопируйте всю строку ответа (ssh-rsa AAAAB3NzaC1yc2EAAAABIwA...) и добавьте этот ключ в конец файла ~/.ssh/known_hosts (в папке пользователя на локальном компьютере).
Используйте следующие команды для перезапуска сервисов:
- Nginx: systemctl restart nginx
- MySQL: systemctl restart mysql.service
- PHP-FPM: systemctl restart php8.1-fpm.service
Для выполнения команд с учетом привилегий суперпользователя необходимо использовать sudo.
- Обновить операционную систему (у меня Ubuntu):
- sudo apt-get update
- sudo apt-get dist-upgrade
- Установить Midnight Commander или mc - аналог Norton Commander и FAR Manager, обладает всеми традиционными возможностями типичного двухпанельного файлового менеджера:
- apt install mc
- Установить сервер nginx (установится в папку /etc/nginx) (LEMP его уже содержит):
- sudo apt-get install nginx
- Установить NodeJS:
- sudo apt-get update
- sudo apt-get install nodejs
- node -v (проверить версию)
- Установить npm:
- sudo apt-get install npm
- npm -v (проверить версию)
- Установить менеджер процессов Node.js pm2:
- npm install pm2@latest -g
- Отредактировать файл default в папке /etc/nginx/sites-available. Например, для простейшего сайта, состоящего из одного html-файла index.html в папке /home/TEST:
-
12345678server {listen 80;server_name server_IP (domen_name);location /{root /home/TEST;index index.html index.htm}}
-
- Проверить валидность файла default командой nginx -t (при необходимости исправить ошибки).
- Перезагрузить сервер nginx:
- sudo service nginx restart
Подробнее о настройке читай https://nginx.org/ru и смотри https://www.youtube.com (примерно с 15:40).
- Установить базу данных MySQL:
- sudo apt-get install mysql-server
- mysql (проверить установку)
- Для просмотра пользователей БД MySQL:
- select user, authentication_string, plugin, host from mysql.user;
- Создать новую базу данных:
- create database db_name;
- show databases; (проверить создание базы данных)
- Создать нового пользователя и передать ему root-права (подробнее...):
- create user 'user_name'@'localhost' identified by 'user_password';
- select user from mysql.user; (проверяем создание)
- grant all privileges on db_name.* to 'user_name'@'localhost'; (назначаем привилегии)
- flush privileges; (перезагружаем таблицы назначения привилегий)
- проверить создание пользователя командой п. 2
- Выйти из mysql (exit) и в новом окне Git bash создать SSH-туннель (если необходимо подключаться с локального компьютера):
- ssh -L33060:localhost:3306 -n user_name@IP_server
- На сервере перейти в папку /home
- Скачать в папку /home с github.com приложение:
- git clone https://github.com/git_login/project_name.git
- Отредактировать файл default в папке /etc/nginx/sites-available так, чтобы он перенаправлял на папку проекта и прослушивал (проксировал) нужный порт, например:
-
123456789101112131415161718192021222324252627server {listen 80 default_server;listen [::]:80 default_server;root /home/project_folder;index index.html index.htm index.nginx-debian.html;server_name your_domen_name;location / {proxy_pass http://localhost:5500/;}location / {try_files $uri $uri/ =404;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;}location ~ /\.ht {deny all;}}
-
- В командной строке перейти в папку приложения и запустить исполняемый файл приложения (у меня это server.js):
- node server.js
- В браузере
- Отредактировать параметры подключения к базе данных в приложении.
Установить certbot (мануал) для автоматического обновления сертификатов Let'sEncrypt.
- установить snapd :
- sudo apt update
- sudo apt install snapd
- Убедиться, что ваша версия snapd обновлена:
- sudo snap install core
- Удалить certbot-auto и любые пакеты ОС Certbot:
- sudo apt-get remove certbot
- Установить certbot:
- sudo snap install --classic certbot
- Подготовить команду certbot:
- sudo ln -s /snap/bin/certbot /usr/bin/certbot
- Подключить сертификаты через nginx:
- sudo certbot --nginx
- Проверить доступ на сайт по https.