美文网首页杂记博客搭建自博客
在CentOS 系统上搭建安装 Ghost博客

在CentOS 系统上搭建安装 Ghost博客

作者: zhiyi | 来源:发表于2015-12-29 17:12 被阅读6274次

    这是我搭建好的Ghost博客

    目前网络上对搭建Ghost的教程明显比较旧了,一个流程下来并不能成功,本人整理下这篇文章,让大家也能用上写作体验轻便快捷的Ghost博客。

    我的系统是32位的CentOS 6,也是目前VPS上主流的操作系统

    我的版本信息:
    --VPS:Alpharacks
    --操作系统版本:32位的CentOS 6
    --nginx版本:1.8.0
    --node版本:node-v0.10.40 (目前Ghost官方建议的版本)
    --Mysql版本:5.1.73
    --Ghost版本:v0.7.4 full (zh)

    前期准备

    yum update 更新yum源
    yum groupinstall "Development Tools" 安装开发工具包
    yum install wget 安装wget下载工具

    开始安装Nginx

    我们先编辑下Nginx的仓储地址,新建nginx.repo文件:
    vi /etc/yum.repos.d/nginx.repo
    在文件中写入以下内容:

    [nginx] 
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
    gpgcheck=0
    enabled=1
    

    保存退出(按Esc结束编辑,Shift + ;键, 输入wq,回车),vi编辑器的使用就默认不说了
    ok现在使用yum下载Nginx,并安装:
    sudo yum install nginx -y
    sudo service nginx start 开启nginx
    sudo chkconfig nginx on 设置nginx为开机启动
    ok,这样Nginx的安装就完成了,在浏览器中输入VPS的IP或者域名就可以看见Nginx友好的提示:“Welcome to Nginx!”

    使用Nginx配置反向代理

    如果完成上一步并且在浏览器中看见Nginx的welcome,那么我们就可以开始配置反向代理,让代理从80端口指向2368端口
    去到以下这个目录:
    cd /etc/nginx/conf.d
    删掉default.conf配置文件
    rm default.conf
    在此目录下新建一个.conf文件,文件名随意
    vi myself.conf
    在文件中写入以下内容:

    server {
        listen 80;
        server_name zyden.vicp.cc;
        location / {
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   Host      $http_host;
            proxy_pass         http://127.0.0.1:2368;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    

    将server_name换成自己的域名,或者ip,保存退出,并重启nginx:
    service nginx restart
    ok,nginx的问题就close file了

    安装配置Mysql

    Ghost v0.7.4 full (zh) 集成了sqlite3,不喜欢用Mysql的话可以忽略此步骤

    yum install mysql mysql-server
    service mysqld start 启动mysql
    chkconfig mysqld on 设置为开机启动
    mysql_secure_installation 配置mysql 如下:

    Set root password? [Y/n] //设置root密码   -- 根据个人需求
    anonymous users? [Y/n] //删除匿名用户   -- y  
    Disallow root login remotely? [Y/n] //禁止root用户远程登录   --n  
    Remove test database and access to it? [Y/n] //删除默认的 test 数据库   --y  
    Reload privilege tables now? [Y/n] //是否马上应用最新的设置   --y 
    

    为了支持中文,我们还要修改mysql的字符支持,编辑MySQL的配置文件:
    vi /etc/my.cnf
    在对应的位置加上对应的内容:

    [client]
    default-character-set=utf8  
    [mysql]
    default-character-set=utf8  
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    

    新建一个ghost专用的mysql用户和专用的database:

    mysql -u root -p  
    //用root用户登录mysql
    
    create database ghost
    //创建ghost数据库  
    
    GRANT ALL PRIVILEGES ON ghost.* To 'ghost'@'%' IDENTIFIED BY '密码';
    //创建ghost database 和 用户名为ghost的用户
    //%代表能被所有地址访问
    

    安装Node.js

    这里根据Ghost官方的建议,我们安装v0.10.40版本
    wget http://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz
    tar zxvf node-v0.10.40.tar.gz
    cd node-v0.10.40
    ./configure
    make && make install

    安装Ghost

    我们将ghost安装在/var/www下
    cd /var/www没有就创建
    wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip我们下载中文版的Ghost
    unzip Ghost-0.7.4-zh-full.zip -d ghost 解压为ghost文件夹
    cd ghost
    这里要将config.example.js重命名为config.js再对其进行修改配置
    mv config.example.js config.js
    vi config.js
    我们找到生产环境的配置:production

    Ghost-0.7.4-zh-full这个版本默认集成 sqlite3 原生库,但博客篇幅比较大时,sqlite读写数据量太大时将会影响页面加载速度,我们可以根据个人需求改用mysql


    如果选择使用sqlite则在config.js中只需要修改url地址

    production: {  
        url: 'zyden.vicp.cc', //这里是你自己VPS主机的域名,或者IP
        mail: {},
        database: {
            client: 'mysql'这里我选择使用mysql作为我博客的数据库
            connection: {
                host     : '127.0.0.1',
                user     : 'ghost', //mysql用户名
                password : '', //密码
                database : 'ghost', //之前创建的ghost数据库名称
                charset  : 'utf8'
            },
        server: {
                host: '127.0.0.1',
                port: '2368'//若修改该端口记得在nginx中做相应改变
            }
        }  
    

    现在可以用命令npm start来试试启动开发者模式的Ghost,启动后在浏览器输入自己VPS 主机的地址如果能看见Ghost。那么一切就成功了!
    Ctrl + C 中断掉开发者模式。

    使用PM2让Ghost永远在线

    只要我们一断开ssh,Ghost的进程就会被关闭,这里我们使用PM2来守护Ghost服务进程,并让其运行在生产模式production上

    //!!首先进到ghost的安装目录
    //安装pm2
    npm install pm2 -g
    //让ghost以production模式运作,指定程序的入口index.js,并且此进程命名为ghost
    NODE_ENV=production pm2 start index.js --name "ghost"
    //开机启动
    pm2 startup centos
    pm2 save
    

    进程守护做完,顺便提提pm2重启进程的命令是:pm2 restart 进程名

    ok,在浏览器可以看见自己的Ghost博客了,地址后面加上/ghost就可以访问后台,一开始需要注册个账户(保存在你的数据库里),这个用户是对于你主机上的Ghost博客管理人员而言的,用于登陆你的Ghost博客后台,而与公网上的其他用户没有关系。

    有什么问题留言,我会尽量帮忙。谢谢支持

    欢迎转载,请注明出处: http://zyden.vicp.cc/centos-ghost-blog/
    谢谢

    相关文章

      网友评论

      • a642516a9a00:想请教一下,按照步骤搭建后,使用mysql时报错,
        Unhandled rejection Error: Connection lost: The server closed the connection.
        at Protocol.end (/var/www/ghost/node_modules/mysql/lib/protocol/Protocol.js:78:13)
        at Socket.<anonymous> (/var/www/ghost/node_modules/mysql/lib/Connection.js:78:28)
        at Socket.emit (events.js:117:20)
        at _stream_readable.js:944:16
        使用Sqlite时则没有这个问题,运行成功。尝试多次,不知道问题出在哪里。
      • AAAAAAlone:你好呀~ 看了你的教程,前面安装都没有报错,版本也都正常,nginx可以正常访问。开启ghost后,访问服务器IP地址提示502 bad gateway。 nginx日志报错:2017/02/04 17:44:18 [crit] 19725#19725: *19 connect() to 127.0.0.1:2368 failed (13: Permission denied) while connecting to upstream, client: x.x.x.108, server: 104.160.x.x, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:2368/&quot;, host: "byalone.tk"


        然后我删除了nginx的默认配置:rm default.conf,(之前没有删除,只是新增了myself.conf) ,现在访问nginx 也直接变成502 bad gateway了。请问可能是什么问题呢? 弄了一个通宵还是在最后这里失败了。。。

        感谢!
        AAAAAAlone:已经解决了哦,感谢你的教程。
      • 2f0a826c35d7:安装 PM2 时出现如下错误

        npm WARN engine shelljs@0.7.3: wanted: {"node":">=0.11.0","iojs":"*"} (current: {"node":"0.10.40","npm":"1.4.28"})
        npm WARN optional dep failed, continuing fsevents@1.0.14

        请问下怎么解决?
      • 汇集:你好,谢谢分享 ,学习你的blog成功搭建了blog,但是对于这个邮件不太会设置,
      • 没阳光的午后:安装好Nginx这个以后,输入 ip 并不能看到页面
      • 0a862942ef33:npm ERR! Error: ENOENT, open '/node-v0.10.40/package.json'
        npm ERR! If you need help, you may report this *entire* log,
        npm ERR! including the npm and node versions, at:
        npm ERR! <http://github.com/npm/npm/issues&gt;

        npm ERR! System Linux 2.6.32-042stab116.1
        npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "start"
        npm ERR! cwd /node-v0.10.40
        npm ERR! node -v v0.10.40
        npm ERR! npm -v 1.4.28
        npm ERR! path /node-v0.10.40/package.json
        npm ERR! code ENOENT
        npm ERR! errno 34
        npm ERR!
        npm ERR! Additional logging details can be found in:
        npm ERR! /node-v0.10.40/npm-debug.log
        npm ERR! not ok code 0

        hi,ngx正常,这个报错。。
        0a862942ef33:@zhiyi 站点打不开...
        0a862942ef33:@zhiyi 解决了,npm start没有报错,但是打不开...
        zhiyi:@一段丰碑 这个好像是npm安装的时候错误?是否npm下载配置不正确?
      • f0d12fa54839:输入IP可以访问,但是域名无法访问,输入域名后还是Welcome to Nginx!”页面,这是什么情况啊?请帮我一下
        zhiyi:@zerohk safari有DNS缓存,以前也坑我了。。
        f0d12fa54839:@zerohk 可以了 :smile: 应该是浏览器有缓存
      • 鬼晓晓:按照这个操作安装并 npm start 后显示 ghost 已经在运行
        但是输入主机 ip或者指向域名的时候 都只能显示“Welcome to Nginx!”页面
        这是什么原因呢 装了两次了
        zhiyi:@晓公子_ 用nginx后2368被80代理后,只能通过80访问,直接访问2368是访问不了ghost的
        鬼晓晓:@zhiyi 按教程部署好 ghost 之后 npm start 显示 ghost 已经上先 但是浏览器中访问 ip:2368会提示访问出错这个正常吗
        zhiyi:@晓公子_ 可能是浏览器DNS缓存,也可能是Nginx没转到ghost(2368端口)
      • 仰望湛蓝:按照此方法安装成功后首次登陆注册并登陆后台出现:Access Denied from url: www.newenergyvehicle.cn. Please use the url configured in config.js.
        无法完成注册管理员账户
        而且以后都不能登陆,出现一样的内容。
        辛辛苦苦搞了一天也没弄明白是怎么回事,能否帮帮我呢?谢谢!
        ee7327b8746d:@zhiyi 这个问题我倒腾了2天,在config.js确认配置没有问题情况下仍旧报错,后确定问题出在VPS的iptables没有开放2368端口,开放端口后马上就好了,你可以看看是不是和我这个是同样的问题。
        仰望湛蓝:@zhiyi 谢谢你 :smile: ,我检查一下!
        zhiyi:@仰望湛蓝 两个地方检察下,第一确定开启的是生产模式(NODE_ENV=production pm2 start index.js --name "ghost"),第二确定config.js里配置的生产环境url是朋友你的域名,
      • zhiyi:昨天朋友发现现在的阿尔法VPS的圣诞套餐还能买。。需要的朋友可以找我

      本文标题:在CentOS 系统上搭建安装 Ghost博客

      本文链接:https://www.haomeiwen.com/subject/cjkihttx.html