博客建设指南

本文介绍了使用ghost.js建设博客和nginx服务器配置的方法。ghost.js是依赖node.js的前后端统一的博客系统,它轻巧,灵活,高效,优雅,是建设博客的不二之选。文章详述了使用Ghost-CLI安装Ghost.js和nginx全局和WEB配置的方法。

本文介绍了使用ghost.js建设博客和nginx服务器配置的方法。ghost.js是依赖node.js的前后端统一的博客系统,它轻巧,灵活,高效,优雅,是建设博客的不二之选。文章详述了使用Ghost-CLI安装Ghost.js和nginx全局和WEB配置的方法。

安装Ghsot.js

本站使用Ghost-CLI安装。Ghost-CLI可以执行下载程序,设置博客,连接数据库,设置服务器,根据不同系统设置不同守护进程等工作。详细教程可以参考官网

安装Ghost-CLI

sudo apt-get update
sudo npm i -g ghost-cli

设置防火墙

sudo ufw allow 'Nginx Full'

此条命令只对16.04以上系统有效

设置网站目录

mkdir /var/www/ghost

使用Ghost-CLI配置网站

cd /var/www/ghost
ghsot install

请按照指示一步一步完成安装。

使用systemd操作网站

  • 启动ghost:systemctl start ghost_localhost
  • 停止ghost:systemctl stop ghost_localhost
  • 重启ghost:systemctl restart ghost_localhost

ghost_localhost根据安装名称而变化

配置nginx前端服务

Ghost.js作为后端服务,监听localhost:2368。nginx作为前端服务,将请求从远程请求转发到2368端口。同时使用nginx作为静态资源服务器和缓存,可以提高网站性能。

Nginx 全局配置

打开/usr/local/nginx/conf/nginx.conf,进行nginx全局配置。


# 根据服务器cpu核数而定
worker_processes  2;

events {
	# nginx事件调度方式,默认epoll
    use epoll;
	# nginx最大连接数
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
	# gzip压缩开启
    gzip  on;
	# 小于1KB的文件将不被压缩
    gzip_min_length 1024;
	# 压缩等级为6,大于6效果不再明显
    gzip_comp_level 6;
    gzip_vary on;
	# 设置不压缩图片
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php font/ttf font/otf font/x-wolf image/svg+xml;

	# 设置反向代理缓冲区
    client_body_buffer_size 512k;
    proxy_connect_timeout 5;
    proxy_read_timeout 60;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;

	# 设置静态文件的内存缓存,/dev/shm目录即为内存设备
    proxy_temp_path /dev/shm/nginx_temp;
	# 设置静态文件的内存缓存,这里设置了一块名为cache_one的最大128m的缓存
    proxy_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=cache_one:64m inactive=7d max_size=128m;
	# 不缓存HTML
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

	# 加载具体的网站设置,这样可以不使用root权限操作nginx配置
    include     /var/www/nginx_conf/*.conf;
}

Ghost 站点配置

# http服务器
server{
	listen 80;
	server_name          zerok.me www.zerok.me;
	server_tokens        off;
	# Let's Encrypt 证书验证
	location ^~ /.well-known/acme-challenge/ {
			alias /var/www/challenges/;
			try_files $uri =404;
		}
	# 监听http,重定向至https
	location / {
		rewrite       ^/(.*)$ https://zerok.me/$1 permanent;
	}
}
upstream  local_static {  
		 server localhost:81;  
}  
# 静态资源服务器
server{  
	listen       81;  
	server_name 127.0.0.1;  
	location ^~ /content/ {
		root             /var/www/ghost;
	}
	location ^~ /assets/ {
		# 开启静态gzip,对js,css等进行预压缩
		gzip_static  on;
		root             /var/www/ghost/current/content/themes/casper;
	}
    location ^~ /public/ {
		root             /var/www/ghost/current/core/server;
	}
}
# https服务器	
server {
	listen               443 ssl http2 fastopen=3 reuseport;

	server_name          zerok.me www.zerok.me;
	server_tokens        off;

	# 中间证书 + 站点证书
	ssl_certificate      /var/www/tls/chained.pem;

	# 创建 CSR 文件时用的密钥
	ssl_certificate_key  /var/www/tls/domain.key;

	ssl_ciphers                EECDH+AES128:EECDH+AES256:EECDH+3DES:!MD5;

	ssl_prefer_server_ciphers  on;

	ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;

	ssl_session_cache          shared:SSL:50m;
	ssl_session_timeout        1d;

	ssl_session_tickets        on;


	ssl_stapling               on;
	ssl_stapling_verify        on;

	# 根证书 + 中间证书
	ssl_trusted_certificate    /var/www/tls/full_chained.pem;

	resolver                   114.114.114.114 valid=300s;
	resolver_timeout           10s;

	access_log                 /var/www/nginx_log/zerok_me.log;

	# 将www.zerok.me重定向至zerok.me
	if ($host != 'zerok.me' ) {
		rewrite          ^/(.*)$  https://zerok.me/$1 permanent;
	}
	# 查找静态资源缓存,找不到则转发至静态资源服务器
	location ^~ /content/ {
		# 使用cache_one这块缓存
		proxy_cache cache_one;
		# 设置缓存时间
		proxy_cache_valid 200 304 302 5d;
		proxy_cache_valid any 7d;
		# 设置缓存key
		proxy_cache_key $host$uri$is_args$args;
		# 设置自动更新缓存
		proxy_cache_background_update on;
		proxy_set_header Host $host;  
		proxy_set_header X-Forwarded-For $remote_addr;
		# 监视是否命中缓存,在响应头中会出现MISS或者HIT
		add_header X-Cache $upstream_cache_status;
		proxy_pass http://local_static; 
		proxy_hide_header  vary;    
		expires          max;
	}
	location ^~ /assets/ {
		proxy_cache cache_one;
		proxy_cache_valid 200 304 302 5d;
		proxy_cache_valid any 7d;
		proxy_cache_key $host$uri$is_args$args;
		proxy_cache_background_update on;
		proxy_set_header Host $host;  
		proxy_set_header X-Forwarded-For $remote_addr;
		add_header X-Cache $upstream_cache_status; 
		proxy_hide_header  vary;  
		proxy_pass http://local_static;    
		expires          max;
	}
	location ^~ /public/ {
		proxy_cache cache_one;
		proxy_cache_valid 200 304 302 5d;
		proxy_cache_valid any 7d;
		proxy_cache_key $host$uri$is_args$args;
		proxy_cache_background_update on;
		proxy_set_header Host $host;  
		proxy_set_header X-Forwarded-For $remote_addr;
		add_header X-Cache $upstream_cache_status; 
		proxy_hide_header  vary;  
		proxy_pass http://local_static;      
		expires          max;
	} 
	# 将动态内容转发给Ghost服务
	location / {
		proxy_set_header   X-Real-IP $remote_addr;
		proxy_set_header   Host      $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_hide_header  X-Powered-By;
		proxy_hide_header  server;
		proxy_hide_header  vary;
		proxy_pass         http://127.0.0.1:2368;
	}
}

至此,博客的配置工作已经全部完成。重启nginx和ghost服务,开始博客之旅。