惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
A
About on SuperTechFans
G
Google Developers Blog
B
Blog RSS Feed
F
Fortinet All Blogs
WordPress大学
WordPress大学
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
IT之家
IT之家
P
Proofpoint News Feed
美团技术团队
量子位
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
B
Blog
有赞技术团队
有赞技术团队
U
Unit 42

herrkaefer

"Vibe planning \u003e vibe coding" "Anything to Markdown" "Built anocus: anonymous commenting for static sites" "日记与小说 -- AI 续写小说欣赏" "Any-podcast: from newsletters to a podcast" "Made MicPipe: a simple voice input tool using ChatGPT dictation" "关于 Tools 和 Skills 的一点感想" "Realtime monitoring of ComEd hourly price" "Introducing SwiftEdgeTTS" "Thoughts on the philosophy of building AI-native apps" "jelly鼻屎" "等饭的人" "Use home assistant to motivate my kid to brush teeth" "Migrated Blog to Hugo and Cloudflare Pages" "Easy Aspen monitoring for Chicago parents" "Introducing HabitBuilder: A simple Telegram bot for habit tracking" "鼓捣" "Open folder or file with Sublime Text from Finder toolbar" "Python dev workflow on macOS" "Create new text file from Finder toolbar" "Uno reinvented for 3-year-old kids" "Uno变身儿童数字游戏" "自动转发Twitter到微博" "Handle annoying operations of objects in Realm DB" "Introducing Mole" "Note taking without note taking app" "Deploy Python web application on Ubuntu server" "Setup Shadowsocks / VPN on Ubuntu Server" "Linode Notes - Basic Setup" "CLASS Style Adapted for Embedded Systems"
"Move Jekyll blog to Ubuntu VPS"
"herrkaefer" · 2017-02-20 · via herrkaefer

(Tested on: Linode with Ubuntu 16.04 LTS)

Install Jekyll on Ubuntu VPS




sudo apt update && apt -y upgrade



sudo apt install ruby ruby-dev ruby-bundler zlib1g-dev build-essential make gcc git jekyll bundler

Automated deployment with Git

On VPS,




mkdir ~/blog.git # the site source



mkdir -p ~/www/blog # the built site

Setup git hook to automatically build the site whenever after site source is updated:




cd ~/blog.git



git init --bare



cp hooks/post-update.sample hooks/post-receive

> --bare means that our folder will have no source files, just the version control.

Edit hooks/post-receive:




#!/bin/sh



GIT_REPO=$HOME/blog.git



TMP_GIT_CLONE=$HOME/tmp/blog



PUBLIC_WWW=$HOME/www/blog



git clone $GIT_REPO $TMP_GIT_CLONE



jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW



rm -Rf $TMP_GIT_CLONE



exit

Serve static site with Nginx

Install nginx:

Add a configuration:




sudo nano /etc/nginx/conf.d/blog.conf

with content:




server {



# listen on http (port 80)



# remove the "default_server" if you are running multiple sites off the same VPS



listen 80 default_server;



# the IP address of your VPS



server_name herrkaefer.com;



# see http://nginx.org/en/docs/http/server_names.html for options



# to use your own domain, point a DNS A record at this IP address



# and set the server name to (eg.) "blog.example.com"



# the path you deployed to. this should match whatever was in your



# Capistrano deploy file, with "/current" appended to the end



# (Capistrano symlinks to this to your current site)



root /home/herrkaefer/www/blog;



index index.html



# how long should static files be cached for, see http://nginx.org/en/docs/http/ngx_http_headers_module.html for options.



expires 1d;



}

Then remove default config file and restart Nginx:




sudo rm /etc/nginx/sites-enabled/default



sudo systemctl restart nginx

Remember to allow Nginx port if the firewall is enabled.

Local machine setup

On local machine, in Jekyll repo folder, add remote repository:

Show remotes:

Add remote named web:




git remote add web username@[host]:~/blog.git

If you need to specify other SSH port, you should do:




git remote add web ssh://username@[host]:[port][absolutePathTo]/blog.git

note that ssh:// can not be omitted.

Write and publish

After writing,




git commit -am "blog updated"



git push web master

Troubleshoot

Nginx 403 Forbidden

nginx 403 Forbidden 排错记录 - 简书