目前网络上对搭建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/
谢谢
网友评论
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时则没有这个问题,运行成功。尝试多次,不知道问题出在哪里。
然后我删除了nginx的默认配置:rm default.conf,(之前没有删除,只是新增了myself.conf) ,现在访问nginx 也直接变成502 bad gateway了。请问可能是什么问题呢? 弄了一个通宵还是在最后这里失败了。。。
感谢!
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
请问下怎么解决?
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>
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正常,这个报错。。
但是输入主机 ip或者指向域名的时候 都只能显示“Welcome to Nginx!”页面
这是什么原因呢 装了两次了
无法完成注册管理员账户
而且以后都不能登陆,出现一样的内容。
辛辛苦苦搞了一天也没弄明白是怎么回事,能否帮帮我呢?谢谢!