Съдържание
Подгответе нова машина, домейн и възстановяване
Нужни са нов тестов Ubuntu 24.04 VPS, публичен IPv4, SSH на порт 22, начална сметка със sudo и домейн под ваш контрол. Локалните команди са за Bash на Linux, macOS или WSL. Командите за сървъра се изпълняват след SSH вход. Ако примерните пътища вече принадлежат на работещ сайт, спрете.
Навсякъде заменете 203.0.113.10 с адреса на VPS и app.example.com с вашето име. Началният потребител ubuntu трябва да съответства на образа на доставчика. Отворете конзолата за възстановяване преди промени по достъпа и мрежата. За Oracle Cloud има отделно правило: не използвайте UFW.
Подгответе ключа и проверете първата връзка
На компютъра си създайте отделен ключ с парола. Ако името съществува, използвайте друго навсякъде. Частният файл остава на компютъра.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubСега създайте новия Ubuntu 24.04 сървър с публичния .pub ключ в полето за SSH ключ. Тази инструкция следва пътя за нова машина, а не промяна на достъп до вече работещ сървър.
Преди първия вход сравнете хост отпечатъка с публичния хост ключ в доверената конзола за възстановяване. За Ed25519 изпълнете там:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubОт компютъра отворете SSH връзка. Приемете хост ключа само след съвпадение:
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10В друг локален терминал копирайте публичния потребителски ключ за отделния администратор:
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubСъздайте отделен администратор
На сървъра проверете getent passwd deploy. Не трябва да се връща съществуващ потребител. Ако името е заето, изберете ново и заменете името, групата и домашните пътища навсякъде, преди да продължите.
Проверете образа и ресурсите, прегледайте обновяванията и създайте администратора. Задайте силна парола за неговите sudo заявки. Командите задават собствеността и ограничават достъпа до ключовия файл.
cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keysВ нов терминал на компютъра се свържете като новия администратор:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10В тази нова сървърна сесия проверете sudo. След правилната парола трябва да се изпише root. Продължете там, като запазите първоначалния достъп.
sudo whoamiИнсталирайте Nginx и подходящата защитна стена
На сървъра инсталирайте Nginx. Запазете конзолата и работещата SSH сесия, докато променяте мрежови правила.
sudo apt install nginx
sudo systemctl enable --now nginxПри доставчика разрешете TCP 22 от мястото за администрация и TCP 80/443 за посетителите. Ако SSH е на друг порт, запазете реалния порт. Мрежовото разрешение не отменя забрана вътре в гостовата система.
Oracle Cloud Ubuntu: пропуснете целия блок UFW. Той може да наруши важни правила на образа и да попречи на зареждането. Запазете iptables и правилата за iSCSI дисковете. Използвайте OCI списъците за сигурност или NSG и документираните правила на гостовата система за HTTP/HTTPS. Не изчиствайте правилата и не заменяйте пакетите на защитната стена.
Друг нов Ubuntu образ: използвайте UFW само когато доставчикът го поддържа и няма друга задължителна конфигурация. Разрешете реалния SSH порт преди включване; примерът приема 22.
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseСлед избрания път проверете ново SSH влизане. Вече отворена сесия не проверява нова връзка. Проверете и външния HTTP достъп преди издаване на сертификат.
Публикувайте отделен Nginx сайт
На сървъра създайте нова папка и конфигурация. Заменете името на домейна в блока. Запазете кавичките около EOF, за да не се разширява променливата $uri от обвивката. Английският текст в примерния HTML е тестовото съдържание на оригиналната команда.
sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="en"><title>First deployment</title><h1>Ubuntu VPS is serving this page</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -tПрезаредете само ако nginx -t е успешен:
sudo systemctl reload nginxОт компютъра направете заявка към домейна на точния IP преди промяна на DNS. Очаквайте примерното заглавие, не стандартната страница на Nginx.
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/Свържете DNS и издайте HTTPS сертификат
Добавете A запис към IPv4 на сървъра. Добавяйте AAAA само при работещ IPv6: стар запис може да изпрати посетителите и проверката за сертификат другаде. Примерът използва директен DNS, без прокси.
От компютъра проверете http://app.example.com/ без --resolve. Продължете, когато виждате вашата страница. На сървъра инсталирайте Certbot и Nginx модула от Ubuntu. Пакетите изискват Universe; отстранете грешка за липсващ пакет преди следваща стъпка.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timerСледвайте въпросите за имейл и условията. Certbot променя конфигурацията и добавя пренасочване към HTTPS. Проверете таймера за подновяване; ако е неактивен, включете го с sudo systemctl enable --now certbot.timer. Порт 80 трябва да остане достъпен за HTTP проверката и подновяването.
Проверете отвън и след рестарт
На компютъра проверете пренасочването, сертификата и съдържанието. Не добавяйте -k към curl: това прикрива неуспешна проверка на сертификата.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/Докато средата е тестова, изпълнете sudo reboot на сървъра. След връщането се свържете като deploy, проверете systemctl is-active nginx и повторете външната HTTPS заявка. Рестартът затваря SSH; при проблем използвайте конзолата.
Отстранете точната грешка и запазете копие
На малък екран плъзнете таблицата настрани, за да видите всички колони.
| Симптом | Първо проверете |
|---|---|
| SSH timeout | Адрес, мрежови правила и конзола |
| Permission denied (publickey) | Потребител, ключ и права на authorized_keys |
| Стандартна Nginx страница | DNS, server_name и активния сайт |
| Неуспешен сертификат | A/AAAA и публичен порт 80 |
| Nginx не приема промяна | nginx -t и журнала на услугата |
При неуспешно влизане използвайте диагностиката на SSH. Съхранете файловете, конфигурацията, DNS записите и стъпките извън VPS. Добавете наблюдение за достъпност и изтичане на сертификата.
Проверете възстановяването на независимо файлово копие. То не включва автоматично сертификати, база данни или цяла машина. За приложение със собствена среда за изпълнение планирайте услугите, данните и ресурсите отделно.
Процедура от EN за нов Ubuntu 24.04 VPS, директен DNS и SSH на порт 22. Следвайте защитната стена за конкретния образ; OCI Ubuntu трябва да пропусне UFW. Не е заявено изпитване при всеки доставчик.
Често задавани въпроси
Мога ли да изпълня командите върху работещ сайт?
Първо използвайте отделен тестов VPS. Командите създават файлове и променят Nginx и мрежови правила; действаща система изисква собствен преглед и план за възстановяване.
Инсталира ли се база данни или WordPress?
Не. Получавате статичен HTTPS сайт. Добавете приложението отделно и проверете старта, състоянието и възстановяването на неговите данни.