| by 丛陈 | No comments

搭建ghost博客详细步骤

环境: CentOS 7 64bit、Node.js、Nginx、Ghost ####具体步骤: ######  1.购买服务器
######  2.申请域名 ######  3.[附]搭建ss ######  4.Ghost的准备工作 ######  5.Ghost的部署 ######  6.Ghost的后期优化    #####1.购买服务器   博主是从Vultr购买的VPS,有众多地区和型号的服务器可选,而且支持支付宝和微信支付,方便快捷。   服务器地区建议选择硅谷、洛杉矶、东京或达拉斯的机器,延迟较低;服务器容量根据个人需求自行选择,3.5刀对于大部分用户来说足够使用。 填入邀请码7547220 可获得限时优惠。 建立快照(snapshot)是个好习惯,万一哪天你的服务器被qiang了,还能从快照中恢复。   可能遇到的问题: *搭建好的服务器可以ping通,但无法通过ssh连接:   先通过ping测试网页输入你的IP地址,测试地区选择中国和港澳台,如果中国地区的丢包率为100%,那就是被qiang了,只能把机器destroy然后重建;   如果丢包率为0,我们再通过端口扫描,如果监测到22端口为关闭状态说明IP被封,也只能删除机器重建。   *当然,机器搭建的时候没有被封不说明以后不会被封,比如博主之前用了2个多月的机器突然被封,没有snapshot,只能重新搭建环境。这个故事告诉我们随时备份的重要性:( #####2.申请域名   博主是从Godaddy购买的域名,国内万网也是不错的选择。申请好之后的域名要做好域名解析,博主使用的是阿里云的域名解析服务,具体步骤请自行百度。 #####3.[附]搭建ss   开始安装前更新一下系统:`yum update -y `   直接运行脚本`wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh `   然后给脚本添加可执行权限:`chmod +x shadowsocks.sh`   安装时打印日志:`./shadowsocks.sh 2>&1 | tee shadowsocks.log`   安装期间需要你设置密码、端口号和加密方式,加密方式建议选择aes-256-cfb,最后出现
Congratulations, Shadowsocks-python server install completed! Welcome to visit:https://teddysun.com/342.html Enjoy it!
字样表示安装成功,脚本为开机自启,无需另行配置。
——————ss使用命令——————
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status
  安装bbr加速器,直接执行命令: `wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh`   安装好后会提示你是否现在重启机器,选择是,重启之后可以使用命令`lsmod | grep bbr` 检查模块是否成功启动。
附:
在这之后又遇到过bbr失效,导致网速非常非常慢,暂未找出原因;
再此补充,如果上述方法失效,尝试使用以下解决方案。
安装elrepo并升级内核: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml -y 成功安装完成后用以下命令查看当前已安装的内核: awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 返回值如下:(根据实际情况会显示不同的效果)

0 : CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core) 1 : CentOS Linux (4.20.8-1.el7.elrepo.x86_64) 7 (Core) 2 : CentOS Linux (4.20.5-1.el7.elrepo.x86_64) 7 (Core) ………………(略略略)……………… 8 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core) 9 : CentOS Linux (0-rescue-84d6e1c3c43d427ab345edad898ac223) 7 (Core)

可以看到1是我们升级到的最新内核,把最新内核设置为默认: grub2-set-default 0 然后重启VPS:reboot
设置BBR参数: 编辑配置文件:vim /etc/sysctl.conf,添加内容如下: net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr 然后重新加载系统参数:sysctl -p(不指定即从默认的/etc/sysctl.conf加载)
接下来验证bbr是否成功开启: 输入命令:sysctl net.ipv4.tcp_available_congestion_control 返回net.ipv4.tcp_available_congestion_control = reno cubic bbr 即表示成功,或输入命令:lsmod |grep bbr 返回tcp_bbr 相关信息则表示成功。 附中附:删除更新系统后的旧内核 查看系统当前内核:uname -r; 查看系统内全部的内核rpm包:rpm -qa | grep kernel; 删除旧内核的rpm包:yum remove kernel-xxxxxxx -y(不要误删当前内核!); 重启系统后再查看全部内核检查是否成功:rpm -qa | grep kernel
在此处引用ss一键脚本的制作者说的一段话:
  最后,请仔细阅读下面的话,姑且称之为作者有话说。
  Shadowsocks 没有办法离开去中心化的服务器。要么自己花钱买 VPS,要么用有人分享的账号,要么用有人提供的付费服务,他们各有所长,适合不同的人。所以作为开发者,保持中立,不偏袒其中任何一方,顺其自然发展下去是最好的吧。
  很多人要么一窝蜂的支持,要么一窝蜂的反对,还要把它给封禁掉,大概这种心理鲁迅先生也曾批判过。如果你们真的那么讨厌商业,那你们应该首先把你们的苹果设备给摔了,因为它就是商业社会巅峰造极的产物。我反对不喜欢一个东西就要拿出简单粗暴的制裁手段,正是这种习性成就了 GFW。
  维护这个项目到现在大概总共回复过几千个问题,开始慢慢想清楚了一件事,为什么会存在 GFW。从这些提问可以看出,大部分人的自理能力都很差,只是等着别人帮他。特别是那些从 App Store 下载了 App 用着公共服务器的人,经常发来一封只有四个字的邮件:“不能用了?” 我觉得这是一个社会常识,花一分钟写的问题,不能期待一个毫无交情的陌生人花一个小时耐心地问你版本和操作步骤,模拟出你的环境来帮你分析解决。
  Windows 版加上 GFWList 功能以来,我反复呼吁给 GFWList 提交规则,但是一个月过去了竟然一个提交都没有。如果没有人做一点什么,它自己是不会更新的啊,没有人会义务地帮你打理这些。我觉得,政府无限的权力,都是大部分人自己放弃的。假货坑爹,让政府审核。孩子管不好,让政府关网吧。房价太高,让政府去限购。我们的文化实在太独特,创造出了家长式威权政府,GFW 正是在这种背景下产生的,一个社会矛盾的终极调和器,最终生活不能自理的你每天做的每一件事情都要给政府审查一遍,以免伤害到其他同样生活不能自理的人。这是一个零和游戏,越和这样的用户打交道,越对未来持悲观态度,觉得 GFW 可能永远也不会消失,而墙内的这个局域网看起来还似乎生机勃勃的自成一体,真是让人绝望。
#####4.Ghost的准备工作   安装gcc-c++: `yum install -y gcc-c++`;   安装node.js:`yum install -y nodejs`,安装完成后可以用命令`node -v`查看版本号,如果成功显示版本号则成功;   安装npm:`yum install -y npm`,安装完成后可以用命令`npm -v`查看版本号,如果成功显示版本号则成功;   **安装Nginx**:   先要将nginx放到yum repo库中: `rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm`;   然后可以用命令查看nginx信息:`yum info nginx`;   再安装nginx: `yum install -y nginx`;   启动nginx服务:`systemctl start nginx.service`;   执行命令`curl -l localhost`查看是否能读取到网页信息,如果能则表示nginx成功启动。   如果想通过外网访问,修改nginx配置文件`vim /etc/nginx/conf.d/default.conf` (最好将其重命名或删除另新建一个不同名字的配置文件) 把其中的server_name 改成 *你的域名* , 然后重载服务 `/usr/sbin/nginx -s reload`   从浏览器中访问 *你的域名*,访问成功表示配置成功;如果网页无法访问,可能是防火墙导致的,尝试关闭防火墙   先查看防火墙的状态:`systemctl status firewalld.service`;   如果状态显示“on”尝试关闭防火墙:`systemctl stop firewalld.service`,再重新检查防火墙状态查看是否关闭;   也可以直接开机禁用防火墙:`systemctl disable firewalld.service`; #####5.Ghost的部署   首先要把最新的安装包下载下来`curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip` (建议放在方便记忆的文件夹里,如/var/www/ghost)   然后将其解压`unzip ghost.zip`   把目录下的config.example.js复制一份并重命名为config.js`cp config.example.js config.js`   ghost可以通过三种模式运行,production、development和test,我们使用production模式,编辑config.js`vim config.js`,找到production一栏里面的url,改为你的域名地址;可以看出ghost默认使用sqlite3数据库,我们暂时不做修改,保存退出。   运行ghost:`npm start –production`,然后启动浏览器,输入你的IP地址或者域名,就可看到ghost安装成功,页面将引导你配置ghost;输入你的域名/ghost即可进入后台管理界面。   现在如果你关闭ssh的窗口就不能访问你的ghost博客了,所以要让ghost一直在后台运行,我们要用到pm2: `npm install pm2 -g # 安装PM2` `NODE_ENV=production pm2 start index.js –name “ghost”` `pm2 startup centos` `pm2 save`   至此,ghost博客的安装过程已经完成,接下来的优化工作将后续更新。 #####6.Ghost的后期优化   未完待续。说到待续,让我想起了我还没有拍完的电影。明年年初,中美合拍的《西游记》即将正式开机,我将继续扮演美猴王孙悟空,努力创造一个中华英雄形象,弘扬西游文化,文体两开花,希望大家能多多关注。
更新: ######用acme.sh申请免费ssl证书   首先安装acme.sh:`curl https://get.acme.sh | sh`   等安装完毕后重载.bashrc:`source ~/.bashrc`这样我们就可以使用acme.sh命令了   这里我们可以使用`./acme.sh –issue –dns dns_ali -d sudi.me -d *.sudi.me`命令申请免费的证书,只需把域名更换为你自己的域名即可,如果你像我一样使用的nginx,也可以使用`acme.sh –issue -d sudi.me –nginx`自动申请证书   当最后出现下列字样时表示证书申请成功:
Your cert is in  /root/.acme.sh/sudi.me/sudi.me.cer   
Your cert key is in  /root/.acme.sh/sudi.me/sudi.me.key   
The intermediate CA cert is in  /root/.acme.sh/sudi.me/ca.cer   
And the full chain certs is there:  /root/.acme.sh/sudi.me/fullchain.cer  
  建议将cer、key等放在便于记忆和管理的目录下,例如`/var/sudi.me/`;   修改nginx的配置文件:`vim /etc/nginx/conf.d/ghost.conf`   在server中添加两行代码:    `ssl_certificate /var/sudi.me/fullchain.cer;`    `ssl_certificate_key /var/sudi.me/sudi.me.key;` 保存并退出,然后重启nginx,这时再访问你的网站就不会提示不安全了,可以点击网站前的锁查看证书的详细资料   Let’s Encrypt的免费证书只有三个月的期限,到期后就得重新申请证书,使用命令`acme.sh –cron –debug 2 –force`生成新的证书,覆盖掉原来的证书,重启nginx即完成更新证书。 ######http强制跳转https设置   修改nginx的配置文件:
//建议直接复制以下代码覆盖nginx配置文件  
server {
    listen *:80;  
    listen *:443 ssl http2;  
    server_name sudi.me;  #修改你的域名

    #修改你的证书路径
    ssl_certificate             /var/sudi.me/fullchain.cer;
    ssl_certificate_key         /var/sudi.me/sudi.me.key;  

    access_log /var/log/nginx/ghost.access.log;
    error_log /var/log/nginx/ghost.error.log;

    root /var/www/ghost;  #修改为你的网站根目录
    index index.html index.htm index.php;
    
    if ($scheme = http){  #http强制跳转https的实现
        return 301 https://\$server_name\$request_uri;
    }

    location  / {
        proxy_pass http://127.0.0.1:2368; #端口号,视情况更改
        proxy_set_header Host \$http_host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-Proto \$scheme;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header HTTPS   \$https;
    }  
}  
然后重启nginx即可生效。   至此,ghost博客搭建完成,后期如出现小问题会后续更新解决方法。
为博客添加Valine评论系统
  初次见到Valine,就被这简洁清新的风格吸引了,而且可以发Emoji,支持Markdown语法,还要啥自行车呢。
  Valine是一款基于Leancloud的无后端评论系统,如果还未注册请于[Leancloud官网](https://leancloud.cn/)注册账号,具体操作步骤详见[Valine快速入门](https://valine.js.org/quickstart.html),操作步骤非常简单,介绍也很详,此处不再赘述。
  现在发现的问题是评论的字太小了,留待后续更新。
添加不蒜子页面访问量计数
  其实Valine自带的一个参数visitor可以统计浏览量,但是不知道什么原因我的blog不显示,不过这是发现了不蒜子,真·极简风格,只需把以下代码放置于您的网页中合适的位置 ` 本站总访问量` ![例如我放在这里](/content/images/2019/02/busuanzi1.png) 然后重新启动ghost:`pm2 restart ghost`即可看到效果。 ![](/content/images/2019/02/busuanzi2.png)

  感谢云帆为本文提供大力资瓷(●′ω`●)

Leave a Reply