Ubuntu VPS ਸੈੱਟਅੱਪ: ਪਹਿਲੀ HTTPS ਵੈੱਬਸਾਈਟ ਚਲਾਓ
ਨਵੇਂ Ubuntu 24.04 LTS ਸਰਵਰ ਉੱਤੇ Nginx ਨਾਲ ਇੱਕ ਛੋਟੀ static HTTPS ਵੈੱਬਸਾਈਟ ਚਲਾਓ। ਇੱਥੇ SSH key, ਵੱਖਰਾ ਪ੍ਰਬੰਧਕ ਖਾਤਾ, ਸਰਟੀਫਿਕੇਟ ਦਾ ਨਵੀਨੀਕਰਨ ਅਤੇ reboot ਤੋਂ ਬਾਅਦ ਦੀ ਜਾਂਚ ਸ਼ਾਮਲ ਹੈ। ਇਹ ਪਹਿਲਾਂ ਤੋਂ ਚੱਲਦੀ ਸਾਈਟ ਉੱਤੇ ਬਿਨਾਂ ਜਾਂਚੇ ਲਗਾਉਣ ਵਾਲੀ ਵਿਧੀ ਨਹੀਂ ਹੈ।
VPSuntu · ਅੱਪਡੇਟ: · ਲਗਭਗ 7 ਮਿੰਟ ਪੜ੍ਹਨ ਲਈ
ਗਾਈਡ ਦੀ ਸਮੱਗਰੀ
ਸਰਵਰ, domain ਅਤੇ recovery ਪਹੁੰਚ ਤਿਆਰ ਕਰੋ
ਨਵਾਂ Ubuntu 24.04 VPS, public IPv4, port 22 ਉੱਤੇ SSH, sudo ਵਾਲਾ ਸ਼ੁਰੂਆਤੀ ਖਾਤਾ ਅਤੇ ਆਪਣੇ ਕਾਬੂ ਹੇਠ domain ਚਾਹੀਦਾ ਹੈ। ਕੰਪਿਊਟਰ ਵਾਲੀਆਂ commands Linux, macOS ਜਾਂ WSL ਦੇ Bash ਵਿੱਚ ਅਤੇ ਸਰਵਰ ਵਾਲੀਆਂ SSH session ਵਿੱਚ ਚਲਾਓ। ਜੇ ਉਦਾਹਰਨ ਦੇ paths ਪਹਿਲਾਂ ਹੀ ਕਿਸੇ deployment ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਰੁਕੋ।
ਹਰ 203.0.113.10 ਨੂੰ ਆਪਣੇ IP ਅਤੇ app.example.com ਨੂੰ ਆਪਣੇ hostname ਨਾਲ ਬਦਲੋ। ਇਹ ਦਸਤਾਵੇਜ਼ੀ ਉਦਾਹਰਨਾਂ ਹਨ। ਸ਼ੁਰੂਆਤੀ username ubuntu ਦੀ ਥਾਂ ਪ੍ਰਦਾਤਾ ਦਾ ਅਸਲ ਖਾਤਾ ਵਰਤੋ। Access ਜਾਂ firewall ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ recovery console ਖੋਲ੍ਹੋ। Oracle ਦੀ Ubuntu image ਲਈ ਹੇਠਾਂ ਵੱਖਰੀ firewall ਸ਼ਾਖਾ ਹੈ।
ਪਹਿਲਾਂ SSH key ਬਣਾਓ ਅਤੇ ਪਹੁੰਚ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ
ਆਪਣੇ ਕੰਪਿਊਟਰ ਉੱਤੇ key ਬਣਾਓ ਅਤੇ passphrase ਰੱਖੋ। ਜੇ ਇਹ filename ਮੌਜੂਦ ਹੈ ਤਾਂ ਨਵਾਂ ਨਾਮ ਚੁਣ ਕੇ ਹਰ command ਵਿੱਚ ਉਹੀ ਵਰਤੋ। ਸਿਰਫ਼ .pub ਫ਼ਾਈਲ ਸਾਂਝੀ ਕਰਨੀ ਹੈ; private key ਆਪਣੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਰੱਖੋ।
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubਨਵਾਂ VPS: ਪ੍ਰਦਾਤਾ ਦੇ creation form ਵਿੱਚ ਇਹ public key ਦਿਓ ਅਤੇ ਸ਼ੁਰੂਆਤੀ username ਜਾਂਚੋ। ਫਿਰ ਹੇਠਾਂ host fingerprint ਦੀ ਜਾਂਚ ਕਰੋ; ਮੌਜੂਦਾ ਸਰਵਰ ਵਾਲੀਆਂ commands ਛੱਡ ਦਿਓ।
ਪਹਿਲਾਂ ਬਣਿਆ ਪਰ ਖਾਲੀ VPS: ਕੰਮ ਕਰਦਾ SSH session ਖੁੱਲ੍ਹਾ ਰੱਖੋ। ਆਪਣੇ ਕੰਪਿਊਟਰ ਦੇ ਦੂਜੇ terminal ਤੋਂ ਮੌਜੂਦਾ authentication ਨਾਲ ਨਵੀਂ public key ਭੇਜੋ। existing_vps_key ਅਸਲ private-key filename ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਮੌਜੂਦਾ ਪਹੁੰਚ password ਜਾਂ SSH agent ਨਾਲ ਹੈ ਤਾਂ -i ~/.ssh/existing_vps_key ਛੱਡੋ; ਸਰਵਰ ਦੀ authentication policy ਨਾ ਬਦਲੋ।
scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubਸਰਵਰ ਦੇ ਪੁਰਾਣੇ session ਵਿੱਚ ਅੱਪਲੋਡ ਕੀਤੀ public key ਜਾਂਚ ਕੇ ਆਪਣੇ ਸ਼ੁਰੂਆਤੀ ਖਾਤੇ ਦੀ authorized_keys ਵਿੱਚ ਜੋੜੋ। ਇਹ ਮੌਜੂਦਾ keys ਸੰਭਾਲਦਾ ਹੈ। ਜੇ ਕੋਈ ਪਹੁੰਚ ਨਹੀਂ ਬਚੀ ਤਾਂ ਪਹਿਲਾਂ ਪ੍ਰਦਾਤਾ ਦੀ recovery ਵਿਧੀ ਵਰਤੋ।
if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '\n' >> ~/.ssh/authorized_keys
cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
fiਪਹਿਲੀ connection ਮਨਜ਼ੂਰ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ trusted recovery console ਵਿੱਚ ਸਰਵਰ ਦੀ ਉਸੇ ਕਿਸਮ ਦੀ host key ਦਾ fingerprint ਕੱਢੋ। Ed25519 ਲਈ:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubਆਪਣੇ ਕੰਪਿਊਟਰ ਤੋਂ ਨਵੀਂ key ਨਾਲ ਜੁੜੋ ਅਤੇ SSH prompt ਦਾ fingerprint ਮਿਲਾਓ। ਪੁਰਾਣੀ ਪਹੁੰਚ ਖੁੱਲ੍ਹੀ ਰੱਖੋ।
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਬਣਨ ਵਾਲੇ ਵੱਖਰੇ ਪ੍ਰਬੰਧਕ ਲਈ ਆਪਣੇ ਕੰਪਿਊਟਰ ਤੋਂ public key ਕਾਪੀ ਕਰੋ। ਇਹ ਅਸਥਾਈ public-key ਫ਼ਾਈਲ ਮੁੜ ਭੇਜਣਾ ਠੀਕ ਹੈ।
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubਵੱਖਰਾ ਪ੍ਰਬੰਧਕ ਬਣਾਓ ਅਤੇ ਨਵਾਂ login ਜਾਂਚੋ
ਸਰਵਰ ਉੱਤੇ ਪਹਿਲਾਂ getent passwd deploy ਚਲਾਓ। ਜੇ ਖਾਤਾ ਮਿਲਦਾ ਹੈ ਤਾਂ ਹੋਰ ਅਣਵਰਤਿਆ username ਚੁਣੋ ਅਤੇ home paths ਤੇ group names ਸਮੇਤ ਹਰ ਥਾਂ ਬਦਲੋ। ਕਿਸੇ ਹੋਰ ਖਾਤੇ ਦੀ key ਫ਼ਾਈਲ ਉੱਤੇ ਨਾ ਲਿਖੋ।
Image ਅਤੇ ਸਰੋਤ ਜਾਂਚੋ, upgrades ਪੜ੍ਹੋ ਅਤੇ sudo ਲਈ ਮਜ਼ਬੂਤ password ਨਾਲ ਪ੍ਰਬੰਧਕ ਬਣਾਓ। ਹੇਠਾਂ key ਦੀ ਮਲਕੀਅਤ ਅਤੇ permissions ਵੀ ਸੈੱਟ ਹੁੰਦੀਆਂ ਹਨ।
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ਆਪਣੇ ਕੰਪਿਊਟਰ ਦੇ ਹੋਰ terminal ਵਿੱਚ ਨਵੇਂ ਖਾਤੇ ਨਾਲ ਜੁੜੋ:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10ਉਸ ਨਵੇਂ ਸਰਵਰ session ਵਿੱਚ sudo ਜਾਂਚੋ। deploy ਦਾ password ਲੈਣ ਤੋਂ ਬਾਅਦ root ਆਉਣਾ ਚਾਹੀਦਾ ਹੈ। ਦੋਵੇਂ ਜਾਂਚਾਂ ਪੂਰੀਆਂ ਹੋਣ ਉੱਤੇ ਹੀ ਅੱਗੇ ਵਧੋ।
sudo whoamiNginx ਅਤੇ image ਦੇ ਅਨੁਕੂਲ firewall ਤਿਆਰ ਕਰੋ
ਸਰਵਰ ਉੱਤੇ Nginx ਲਗਾਓ। Recovery console ਅਤੇ ਕੰਮ ਕਰਦਾ SSH session ਖੁੱਲ੍ਹੇ ਰੱਖੋ।
sudo apt install nginx
sudo systemctl enable --now nginxਪ੍ਰਦਾਤਾ ਦੇ network firewall ਵਿੱਚ ਆਪਣੀ ਪ੍ਰਬੰਧਕੀ ਥਾਂ ਤੋਂ TCP 22 ਅਤੇ ਵੈੱਬਸਾਈਟ ਲਈ TCP 80/443 ਮਨਜ਼ੂਰ ਕਰੋ। ਵੱਖਰਾ SSH port ਹੋਵੇ ਤਾਂ ਉਸ ਦਾ ਨਿਯਮ ਸੰਭਾਲੋ। Guest firewall ਅਤੇ ਪ੍ਰਦਾਤਾ ਦਾ firewall ਦੋਵੇਂ ਪਹੁੰਚ ਉੱਤੇ ਅਸਰ ਪਾਉਂਦੇ ਹਨ।
Oracle Cloud ਦੀ Ubuntu image: ਹੇਠਾਂ ਦਿੱਤਾ ਪੂਰਾ UFW ਬਲਾਕ ਛੱਡੋ। UFW ਜ਼ਰੂਰੀ image rules ਅਤੇ iSCSI boot/block volume ਪਹੁੰਚ ਨਾਲ ਟਕਰਾ ਸਕਦਾ ਹੈ। ਮੌਜੂਦਾ iptables rules ਸੰਭਾਲੋ; OCI security lists/NSG ਅਤੇ image ਦੇ ਦਸਤਾਵੇਜ਼ਾਂ ਅਨੁਸਾਰ HTTP/HTTPS ਦੀ guest ਪਹੁੰਚ ਸੈੱਟ ਕਰੋ। Rules flush ਜਾਂ firewall packages ਬਦਲਣੇ ਠੀਕ ਨਹੀਂ।
ਹੋਰ ਨਵੀਆਂ Ubuntu images ਲਈ UFW: ਇਹ commands ਸਿਰਫ਼ ਉਦੋਂ ਵਰਤੋ ਜਦੋਂ ਪ੍ਰਦਾਤਾ UFW ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੋਵੇ। Enable ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਅਸਲ SSH port ਮਨਜ਼ੂਰ ਕਰੋ; ਇੱਥੇ port 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 login ਜਾਂਚੋ। ਪੁਰਾਣਾ ਖੁੱਲ੍ਹਾ session ਨਵੀਂ connection ਦਾ ਸਬੂਤ ਨਹੀਂ ਹੈ। ਸਰਟੀਫਿਕੇਟ ਮੰਗਣ ਤੋਂ ਪਹਿਲਾਂ ਅਗਲੇ ਕਦਮ ਦੀ ਬਾਹਰੀ HTTP ਜਾਂਚ ਵੀ ਪਾਸ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।
Nginx ਦੀ ਵੱਖਰੀ ਸਾਈਟ ਵਿੱਚ ਪੰਨਾ ਰੱਖੋ
ਸਰਵਰ ਉੱਤੇ ਨਵਾਂ document root ਅਤੇ configuration ਬਣਾਓ। ਬਲਾਕ ਵਿੱਚ hostname ਬਦਲੋ। Quoted EOF markers ਜਿਵੇਂ ਹਨ ਤਿਵੇਂ ਰੱਖੋ, ਤਾਂ ਜੋ shell $uri ਵਰਗੇ Nginx variables ਨਾ ਬਦਲੇ।
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 -tConfiguration ਸਹੀ ਹੋਣ ਉੱਤੇ ਹੀ reload ਕਰੋ:
sudo systemctl reload nginxDNS ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਕੰਪਿਊਟਰ ਤੋਂ hostname ਨੂੰ ਇਸ IP ਉੱਤੇ ਮੰਗੋ। ਤੁਹਾਡਾ ਸਿਰਲੇਖ ਆਉਣਾ ਚਾਹੀਦਾ ਹੈ, default Nginx ਪੰਨਾ ਨਹੀਂ।
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/DNS ਜੋੜੋ ਅਤੇ HTTPS ਸਰਟੀਫਿਕੇਟ ਲਵੋ
Hostname ਦਾ DNS A record VPS ਦੇ IPv4 ਵੱਲ ਕਰੋ। AAAA ਸਿਰਫ਼ ਕੰਮ ਕਰਦੇ IPv6 ਲਈ ਦਿਓ; ਪੁਰਾਣਾ AAAA visitors ਅਤੇ certificate validation ਨੂੰ ਹੋਰ ਥਾਂ ਭੇਜ ਸਕਦਾ ਹੈ। ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ DNS ਸਿੱਧਾ VPS ਵੱਲ ਹੈ, proxy ਰਾਹੀਂ ਨਹੀਂ।
ਆਪਣੇ ਕੰਪਿਊਟਰ ਤੋਂ http://app.example.com/ ਨੂੰ --resolve ਤੋਂ ਬਿਨਾਂ ਜਾਂਚੋ। ਫਿਰ ਸਰਵਰ ਉੱਤੇ Ubuntu archive ਦਾ Certbot ਅਤੇ Nginx plugin ਲਗਾਓ। Universe repository ਚਾਹੀਦੀ ਹੈ; package ਨਾ ਮਿਲੇ ਤਾਂ ਪਹਿਲਾਂ ਕਾਰਨ ਠੀਕ ਕਰੋ।
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.timerEmail ਅਤੇ ਸ਼ਰਤਾਂ ਵਾਲੇ prompts ਪੂਰੇ ਕਰੋ। Certbot ਸਾਈਟ ਦੀ configuration ਬਦਲ ਕੇ HTTP ਤੋਂ HTTPS redirect ਲਗਾਉਂਦਾ ਹੈ। Renewal timer ਅਕਿਰਿਆਸ਼ੀਲ ਹੋਵੇ ਤਾਂ sudo systemctl enable --now certbot.timer ਵਰਤੋ। HTTP validation ਅਤੇ renewal ਲਈ port 80 ਖੁੱਲ੍ਹਾ ਰੱਖੋ।
ਬਾਹਰੋਂ ਅਤੇ reboot ਤੋਂ ਬਾਅਦ ਜਾਂਚੋ
ਆਪਣੇ ਕੰਪਿਊਟਰ ਤੋਂ redirect, ਸਰਟੀਫਿਕੇਟ ਅਤੇ ਪੰਨੇ ਦਾ ਸਿਰਲੇਖ ਜਾਂਚੋ। curl ਵਿੱਚ -k ਨਾ ਜੋੜੋ; ਇਹ certificate ਦੀ ਗ਼ਲਤੀ ਲੁਕਾ ਸਕਦਾ ਹੈ।
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 ਮੁੜ ਜਾਂਚੋ। Reboot ਨਾਲ SSH ਬੰਦ ਹੋਣਾ ਸੁਭਾਵਿਕ ਹੈ; ਸਰਵਰ ਨਾ ਮੁੜੇ ਤਾਂ console ਵਰਤੋ।
ਗ਼ਲਤੀ ਦਾ ਕਾਰਨ ਲੱਭੋ ਅਤੇ recovery ਸੰਭਾਲੋ
ਛੋਟੀ ਸਕ੍ਰੀਨ ਉੱਤੇ ਸਾਰੇ ਕਾਲਮ ਵੇਖਣ ਲਈ ਸਾਰਣੀ ਪਾਸੇ ਵੱਲ ਖਿਸਕਾਓ।
| ਲੱਛਣ | ਪਹਿਲੀ ਜਾਂਚ |
|---|---|
| SSH timeout | IP, ਦੋਵੇਂ firewalls ਅਤੇ recovery console |
| Permission denied (publickey) | Username, private key ਅਤੇ authorized_keys permissions |
| Default Nginx ਪੰਨਾ | DNS, server_name ਅਤੇ enabled site |
| Certificate validation ਅਸਫਲ | Public A/AAAA ਅਤੇ port 80 |
| Nginx configuration ਅਸਫਲ | sudo nginx -t ਅਤੇ sudo journalctl -u nginx -n 50 --no-pager |
Login ਲਈ SSH ਗ਼ਲਤੀ ਦੀ ਗਾਈਡ ਵੇਖੋ। ਫ਼ਾਈਲਾਂ, Nginx configuration, DNS records ਅਤੇ ਮੁੜ ਬਣਾਉਣ ਦੇ ਕਦਮ VPS ਤੋਂ ਬਾਹਰ ਸੰਭਾਲੋ। ਕਿਸੇ ਵੱਖਰੇ ਕੰਪਿਊਟਰ ਉੱਤੇ recovery ਜਾਂਚੋ। Certificate private keys ਦੀ Backup ਹੋਵੇ ਤਾਂ storage ਸੁਰੱਖਿਅਤ ਰੱਖੋ।
ਦੋ ਫ਼ਾਈਲਾਂ ਬਹਾਲ ਕਰਨ ਦੀ ਕਸਰਤ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। ਪੂਰੀ ਸਾਈਟ ਲਈ ਹੋਰ assets, certificates ਅਤੇ service configuration ਵੀ ਚਾਹੀਦੇ ਹਨ। Availability ਅਤੇ certificate expiry ਲਈ alerts ਰੱਖੋ। Database ਜਾਂ application runtime ਲਈ ਆਪਣੀ service ਅਤੇ consistent Backup ਵਿਧੀ ਲੋੜੀਂਦੀ ਹੈ।
ਸਵਾਲ ਜਵਾਬ
ਕੀ ਇਹ commands ਚੱਲਦੀ ਵੈੱਬਸਾਈਟ ਉੱਤੇ ਲਗਾ ਸਕਦਾ ਹਾਂ?
ਪਹਿਲਾਂ ਵੱਖਰੇ test VPS ਉੱਤੇ ਕਰੋ। ਉਦਾਹਰਨ ਫ਼ਾਈਲਾਂ ਬਣਾਉਂਦੀ, firewall ਬਦਲਦੀ ਅਤੇ Certbot ਨੂੰ Nginx ਸੋਧਣ ਦਿੰਦੀ ਹੈ। ਮੌਜੂਦਾ ਸਰਵਰ ਦੀਆਂ ਸਾਈਟਾਂ, access rules ਅਤੇ recovery ਪਹਿਲਾਂ ਜਾਂਚੋ।
ਕੀ ਇਸ ਨਾਲ WordPress, Node.js ਜਾਂ database ਵੀ ਲੱਗਦਾ ਹੈ?
ਇਹ static HTTPS ਸਾਈਟ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਫਿਰ ਲੋੜੀਂਦਾ runtime ਜੋੜ ਕੇ startup, health ਅਤੇ data recovery ਵੱਖ ਜਾਂਚੋ।