博客建设指南
本文介绍了使用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服务,开始博客之旅。