Using systemd: here's the .service file:
[Unit] Description=blog.service After=network.target [Service] Type=simple ExecStart=bash /etc/systemd/system/blog.sh Restart=on-failure User=u Group=u [Install] WantedBy=multi-user.target
The bash file called by the service file instructs node to execute index.js in the build subdirectory.
#! /bin/bash cd /home/u/Apps/newblog PORT=3007 node build
Edit the application in VS Code
Enter "cd Apps/newblog".
Call "npm run build".
Push newblog to Github.
In the server, cd ~/Apps and run "git pull origin main". For blog (for example), cause "PORT=3007 node build" by calling "sudo systemctl restart blog". Running "sudo systemctl reload nginx" isn't necessary, although it might facilitate instant updating in the browser.
CAUTION: Don't include the "build" subdirectory in .gitignore.
RECAP: Call "npm run build" on the desktop after revisions, then "git push -u origin main". Navigate to ~/Apps/newblog in the server, and call "git pull origin main". Call "sudo systemctl restart blog". That loads the revised html://localhost:(port) so Nginx can work its reverse-proxy magic on the updated process.
cat blog.schalk2.com server { server_name blog.schalk2.com; location / { proxy_pass http://localhost:3007; # Your SvelteKit port proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Apply the buffer settings here if you prefer proxy_buffer_size 128k; proxy_buffers 16 64k; proxy_busy_buffers_size 128k; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/recursive-closures.schalk2.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/recursive-closures.schalk2.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = blog.schalk2.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name blog.schalk2.com; return 404; # managed by Certbot }
schalk2 and newblog in /home/u/Apps are functioning as described above. Useful-Recursive-Closures-in-Javascript, created with Svelte version 4, is bloated wth multiple versions of essential files and numerous JavaScript files used during development. This morning, I am transferring +page.svelte files from Usefull-Recursive-Closures-in-Javascript to a svelte version 5 SvelteKit app named "m-Mx-closures".