Opsætning af Ubuntu VPS til dit første websted
Denne opsætning af Ubuntu VPS tager en ny Ubuntu 24.04-server fra SSH-adgang til et lille statisk websted med Nginx og HTTPS. Du opretter en separat administrator, kontrollerer certifikatfornyelse og bekræfter, at webstedet virker efter en genstart.
VPSuntu · Opdateret · Ca. 4 min. læsning
I denne guide
Forbered en ny server og en vej tilbage
Brug en ny Ubuntu 24.04 VPS med offentlig IPv4, SSH på port 22 og en initial konto med sudo. Du skal have et domæne, du administrerer, og adgang til udbyderens betroede gendannelseskonsol. Denne vejledning bruger nøglen ved oprettelse af en ny maskine; den erstatter ikke adgangsopsætningen på et eksisterende websted.
Erstat 203.0.113.10 med serveradressen og app.example.com med dit hostname. Initialbrugeren er her ubuntu; brug udbyderens korrekte konto overalt. Lokale kommandoer køres i Bash på Linux, macOS eller WSL. Serverkommandoer køres efter SSH-login. Stop, hvis eksemplets stier allerede bruges.
Opret en nøgle før provisionering
Kør på din computer. Vælg et andet filnavn gennem hele vejledningen, hvis ~/.ssh/ubuntu_vps allerede findes. Brug en adgangsfrase, og opbevar den private nøgle på computeren.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubOpret derefter den nye server med indholdet af .pub-filen i udbyderens felt til SSH-nøgler. Kontrollér initialbrugeren. Den private nøgle skal ikke uploades.
Verificér serverens identitet før første login
Kør først dette i den betroede gendannelseskonsol til den nøjagtige nye instans. Det viser fingeraftrykket for gæstens offentlige Ed25519-værtsnøgle.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubÅbn derefter en ny forbindelse fra din computer. Sammenlign nøgletypen og fingeraftrykket med konsoloplysningen, før du accepterer.
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Et andet fingeraftryk kræver undersøgelse af instans og adresse. Serverens værtsnøgle er ikke din egen login-nøgle. Hold konsoladgangen tilgængelig under de følgende ændringer.
Opret og afprøv en separat administrator
Kontroller først getent passwd deploy på serveren. Der må ikke være en eksisterende konto. Hvis navnet bruges, vælg et nyt og erstat navn, grupper og hjemmestier i alle kommandoer. Dermed undgår du at overskrive en anden brugers nøgler.
Fra en anden lokal terminal kopieres den offentlige nøgle til serveren:
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubKør i den oprindelige ubuntu-session. Kontroller system og ressourcer, gennemgå opdateringerne og opret deploy med en stærk adgangskode til sudo. install-kommandoerne giver den nye konto korrekt ejerskab og begrænsede rettigheder.
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Åbn på din computer endnu en terminal, og log ind med den nye konto:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Kontroller sudo i den nye serversession. Kommandoen skal vise root efter eventuel adgangskodekontrol. Fortsæt først i denne session, når begge trin virker, og behold den oprindelige adgang.
sudo whoamiInstaller Nginx og brug den understøttede firewall
Kør på serveren som den nye administrator:
sudo apt install nginx
sudo systemctl enable --now nginxTillad i udbyderens netværksfirewall TCP 22 fra din administrationsadresse og TCP 80/443 til webstedets besøgende. Hvis SSH bruger en anden port, bevar den virkelige port. Udbyderens regler og gæstens firewall skal begge tillade trafikken.
På Oracle Cloud Ubuntu-images skal hele UFW-blokken nedenfor springes over. Bevar imagets iptables-regler, herunder nødvendige iSCSI-regler. Konfigurér OCI security lists eller NSG’er samt gæstens dokumenterede HTTP/HTTPS-regler. UFW kan komme i konflikt med imagets opsætning og blokere nødvendig adgang.
På andre nye Ubuntu-images bruges UFW-blokken kun, når udbyderen understøtter denne metode. Eksemplet forudsætter SSH på port 22; tillad den faktiske port, inden firewallen aktiveres.
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 verboseAfprøv efter begge typer ændring en ny SSH-forbindelse. En gammel session, der stadig virker, er ikke en kontrol af nye forbindelser.
Udgiv en side i sin egen Nginx-konfiguration
Kontroller, at /var/www/first-site og den tilsvarende Nginx-konfiguration ikke tilhører et eksisterende websted. Erstat hostname inde i blokken. Bevar de citerede EOF-markører, så shellen ikke udvider Nginx-variabler som $uri.
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 -tDen engelske overskrift er indholdet af testfilen. Genindlæs kun Nginx, når nginx -t er gennemført uden fejl:
sudo systemctl reload nginxFra din computer testes hostname direkte mod serverens IP, før DNS ændres:
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/Forvent din nye sides overskrift, ikke Nginx’ standardside. Ellers skal server_name, aktiveret konfiguration og destinationsadressen undersøges først.
Forbind DNS og udsted et HTTPS-certifikat
Opret en A-record til VPS’ens IPv4. Publicér kun AAAA, hvis IPv6 virker på samme server. En gammel AAAA-record kan sende besøgende og certifikatkontrol til en forkert destination. Eksemplet forudsætter direkte DNS uden proxy.
Kontroller fra din computer, at http://app.example.com/ uden --resolve viser testfilen. Installer derefter Certbot og Nginx-plugin fra Ubuntus pakkearkiv på serveren. Pakkerne kræver Universe; løs eventuelle manglende pakker, før du fortsætter.
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.timerFølg Certbots spørgsmål om e-mail og vilkår. Værktøjet ændrer konfigurationen og aktiverer HTTPS-omdirigering. Kontroller den planlagte fornyelse; hvis timeren er inaktiv, aktivér med sudo systemctl enable --now certbot.timer. Port 80 skal fortsat kunne nås til HTTP-validering og fornyelse.
Kontroller udefra og efter genstart
Kør lokalt og kontroller HTTP-omdirigering, gyldigt certifikat og indhold. Tilføj ikke curl -k, som skjuler certifikatfejl.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/Mens maskinen stadig er en testinstallation, udfør sudo reboot på serveren. Log ind igen som deploy, kontroller systemctl is-active nginx og gentag den eksterne HTTPS-test. Genstart lukker SSH-sessioner; brug konsollen, hvis maskinen ikke kommer tilbage.
Gem opsætningen og en kontrolleret backup
På en lille skærm kan du rulle tabellen sidelæns.
| Symptom | Første kontrol |
|---|---|
| SSH-timeout | Adresse, begge firewallniveauer og gendannelseskonsol |
| Publickey afvises | Brugernavn, privat nøgle og authorized_keys-rettigheder |
| Nginx’ standardside | DNS-destination, server_name og aktivt websted |
| Certifikatkontrol fejler | Offentlige A/AAAA-records og port 80 |
| Nginx starter ikke | nginx -t og tjenestens fejlmeddelelser |
Følg SSH-fejlsøgning ved adgangsproblemer. Gem webfiler, Nginx-konfiguration, DNS og genopbygningsnoter uden for VPS’en. Afprøv filgendannelse uden at overskrive dit fungerende websted.
Certifikatets private nøgle kræver beskyttet lagring, hvis den kopieres; ellers planlægges genudstedelse. Tilføj overvågning af tilgængelighed og certifikatudløb. Denne opsætning serverer statiske filer. WordPress, Node.js eller en database kræver særskilt tjenesteopsætning og backup.
Spørgsmål og svar
Kan jeg køre vejledningen på et eksisterende websted?
Start på en separat test-VPS. En eksisterende server kræver gennemgang af nuværende brugere, adgangsregler, websteder og gendannelsesplan.
Er et domæne nødvendigt til SSH?
Nej, SSH kan bruge IP-adressen. Certifikatdelen her kræver et domæne, du kontrollerer, med fungerende DNS.
Installeres en database automatisk?
Nej. Målet er et statisk HTTPS-websted. Tilføj først runtime og database, når grundopsætning, genstart og gendannelse er kontrolleret.