关于如何搭建ghost的文章也很多,但是对于服务器什么第一次接触的我还是感觉很多地方教程没涉及到),比如

  1. 买国内服务器是需要备案才能使用域名.一度以为自己配置出错。打开不了ghost。
  1. 关于如何在云服务器上部署FTP。
  2. ftp文件权限问题
  3. 等等一波坑

填了很多坑所以决定记录下来这个填坑的艰辛证明我填过,顺便给其他像我这样的小白少填点坑,心情舒畅点。

注意事项:

本文文章内容引用和参考自:


1. 购买域名和云服务器及解析域名

这步就不多说,阿里上购买还是挺方便的。提示也很清楚,按流程走就对了。不过服务器最好考虑清楚再买。本身我没试过备案的过程,想恶心下自个,就买了个杭州的服务器备案(把自己坑了=。=自作孽)。不想麻烦的买香港或者其他国外的服务器。

购买完域名和服务器要做的就是把它们关联起来,把域名绑定到服务器的地址。专业术语叫做 解析

开始解析呗,在阿里的后台控制中,点击域名可以看到购买的域名,然后点击上图中的解析,跳转到下图:

将上图中的记录值改成你的服务器IP地址,就算绑定完成咯!

主机类型 A 就是指域名指向主机服务商提供的IP地址, 主机记录 @ 代表是顶级域名。这里普及两个名词: 顶级域名 和 二级域名 。我们平常所知道正确网址是www.XXX.xxx。其实不然, 我们只要输入XXX.xxx就可以了,不需要输入前面的www。www只是一个前缀。www.XXX.xxx就是一个二级域名,类似的还有mail.qq.com、open.weibo.com 等。而顶级域名就是XXX.xxx ,比如baidu.com、qq.com。所以我们在解析的时候主机记录这项就只是个前缀。顶级域名一般用@表示。

好,域名配置好就配置云服务器了。过程有点繁杂,需要耐心=。=。


2. 配置云服务器

购买完成,在实例中可以看见购买的服务器。会提示你重置服务器密码。在更多中设置。记住这个密码!!很重要!!

第一步连接云服务器。打开终端Terminal,输入命令行:ssh root@你的云服务器IP地址 ,回车。会提示输入服务器密码即购买完重置的密码(输入密码不会显示输入),输入完成回车。

显示如图,代表连接成功。

2.1 安装Node.js

终端执行安装命:

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make  
sudo add-apt-repository ppa:chris-lea/node.js  
sudo apt-get update  
sudo apt-get install nodes 

检查安装是否成功:(输出版本号表示安装完成)

nodejs -v
v0.10.37

npm -v
1.4.28
2.2 安装Nginx
sudo apt-get install nginx 
2.3 安装MySQL

对数据流量没什么要求的可以跳过这步,Ghost 默认采用 Sqlite3 数据库。
使用 MySQL,避免将来由于数据多、访问量多而导致性能下降。(我只是看到教程使用mysql 就也用上好了有益无害,免得下面的步骤有不一致。还得再招其他教程)

开始安装mysql:

sudo apt-get install mysql-server mysql-client  

安装过程中,系统会提示你给 mysql 的管理账号设置密码:

MySQL 安装成功后,我们执行以下指令进一步加强 MySQL 的安全设置:

sudo mysql_secure_installation  

此工具所做的增强安全设置包括:移除所有匿名账户、限制远程 root 账户登录、删除 test 数据库等。下面列出详细设置:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL  
  SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current password for the root user.  If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here.

//输入安装 MySQL 时为 root 账户设置的密码
Enter current password for root (enter for none):  
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

//是否修改 root 账户的密码?前面设置过 root 账户的密码了,如果不打算修改密码的话,输入 'n'
Change the root password? [Y/n] n  
 ... skipping.

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them.  This is intended only for testing, and to make the installation go a bit smoother.  You should remove them before moving into a production environment.

//是否删除匿名用户?
Remove anonymous users? [Y/n] y  
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This  ensures that someone cannot guess at the root password from the network.

//是否禁止 root 账户远程登录?
Disallow root login remotely? [Y/n] y  
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can access.  This is also intended only for testing, and should be removed before moving into a production environment.

//是否删除 MySQL 默认创建的 test 数据库,并删除所有对 test 数据库的权限设置?
Remove test database and access to it? [Y/n] y  
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

//是否重新加载权限表?
Reload privilege tables now? [Y/n] y  
 ... Success!

Cleaning up...



All done!  If you've completed all of the above steps, your MySQL installation should now be secure.

Thanks for using MySQL!  

到此,已经装好了mysql.接着就是设置mysql的默认字符集。将数据库、html页面、源码文件都设置为统一的utf8字符集会减少很多麻烦。

打开mysql的配置文件用 Vim 编辑器打开进行设置:

cd /etc/mysql  
vi my.cnf 

如图,找到 [mysqld] 位置,按 "i" ,进入编辑模式,添加如下设置:

collation-server = utf8_unicode_ci  
init-connect='SET NAMES utf8'  
character-set-server = utf8  

修改完成之后,先按 esc ,然后输入 :wq ,保存退出编辑器。

接着检查一下是否设置成功:

输出如果如上图,说明配置成功 MySQL 了。


3. 安装Ghost

3.1 创建数据库

安装完 MySQL 数据库,那就为 Ghost 创建一个 MySQL 数据库:

mysql -uroot -p -e 'create database ghost;' 

系统会提示你输入 MySQL 数据库的 root 账户密码。指令执行之后就创建了一个叫做 ghost 的数据库,用来保存文章的数据了~

3.2 配置Nginx

Nginx作为反向代理,配置多个Ghost博客,同时也能增加了网站的负载。 输入下面命令进入 /etc/nginx/sites-available/ 目录配置 ghost.conf 文件:

cd /etc/nginx/sites-available/
sudo touch ghost.conf  
sudo vi ghost.conf  

打开vim进行编辑。我们输入如下内容

server {  
listen 80;
server_name linbling.com *.linbling.com 218.244.134.182;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

记得修改这行替换域名和IP地址为你自己的:server_name linbling.com *.linbling.com 218.244.134.182;

完成之后按etc :wq 退出编辑。

然后我们为 ghost.conf 文件做一个软链接到 /etc/nginx/sites-enabled/ 目录下:

sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf  
3.3 安装forever

如果是通过 npm start 启动 Ghost 的话,只要你关闭了远程连接,Ghost 也就停了,forever 可以保持Ghost一直在后台运行,接着安装forever :

sudo npm install forever -g  
3.4 Ghost配置
3.4.1 下载ghost

Ghost 安装包是经过压缩的,在 Linux 上我们需要用 unzip 工具对其解压,因此,首先要安装 unzip 工具:

sudo apt-get install unzip 

接下来我们下载 Ghost 安装包

cd /srv/  
sudo curl -L http://dl.ghostchina.com/Ghost-0.7.0.zip -o ghost.zip  

Ghost-0.7.0 是我安装时的版本,具体最新的版本去Ghost下载地址 查看。

下载完成,解压:

sudo unzip ghost.zip -d ghost 

解压后 ghost 就被放在 /srv/ghost/ 目录下了,以后就到这个目录地址执行ghost 命令!

3.4.2 修改Ghost配置文件

我们进入 Ghost 系统目录,为 Ghost 增加配置文件并配置数据库:

cd /srv/ghost/  
sudo cp config.example.js config.js  
sudo vi config.js  

我们只修改 production 一节的配置信息,修改为如下形式(注意按照你自己的实际情况替换!):

// ### Production
// When running Ghost in the wild, use the production environment.
// Configure your URL and mail settings here
    production: {
    url: 'http://linbling.com',//修改这里为你的域名,如果买的国内服务器且备案未通过,建议先使用IP地址保证博客能正常跳转页面。备案通过后替换为域名

    mail: {},
    database: {
    updateCheck:false,
        client: 'mysql',
        connection: {
	host :'127.0.0.1',
	user :'root',//我们暂且用 MySQL 的 root 账户
	password :'1234',//root 账户 密码
	database :'ghost',//我们前面为 Ghost 创建的数据库名称
	charser  :'utf8'
        }
    },
	
    server: {
        host: '127.0.0.1',
        port: '2368'
    }
},

完成之后按etc :wq 退出编辑。

3.4.3 安装 Ghost 依赖库

因为生产环境使用了mysql,所以在依赖库中将sqlite删除。打开 Ghost 系统的目录下面的 package.json 文件:

cd  /srv/ghost/
vi  package.son

找到 "sqlite3":"X.X.X" ,删除这行代码。按etc :wq 退出编辑。

3.4.3 启动 Ghost

执行如下指令重启 Nginx、启动 Ghost:

sudo service nginx restart  
cd /srv/ghost  
sudo NODE_ENV=production forever start index.js  

好!到这里就算完成了ghost的安装。可以打开你的域名或者IP地址查看了~
你博客的后台: 你的域名/ghost ,进入设置和开写你的博客吧!


Q&A:

Q1. 主页显示很慢,界面很久才展示出来.
A:还是因为google被墙了,需要删除三处引用了谷歌字体的地方。/core/server/views 下的两个default.hbs 和 user-error.hbs 以及主题目录content/themes/你的主题/default.hbs中的:

Q2. service nginx restart 重启Nginx失败. A:原因在于你已经把端口映射的配置写进default这个默认的配置文件了,但是你又写了一份同样的配置到ghost.conf,结果这两个配置同时生效,重启时冲突了。所以你应该:

输入以下命令:/etc/nginx/sites-available# rm -rf ghost.conf.

检查:/etc/nginx/sites-available# ls

应该就只会显示:default

然后 service nginx restart重启Nginx 就行了 重启成功了。

Q3. npm start ghost 正常运行以后,访问ghost, 无法进入后台,web端显示的状态码为302.
A:进入ghost 后台系统会自动检测更新,是否有新版本,但是国内无法访问这个地址 update.ghost.org.
所以你应该在config.js中加入updateCheck: false, 看起来像这样:

development: {
updateCheck: false,
database: {
client: 'mysql',
connection: {
host : '127.0.0.1',
......
Q4. 如何备份现有的文件?
A:cp /srv/ghost /srv/ghost_bak
这样就可以把原来的文件备份到ghost_bak文件夹.

Q5. 如何备份数据库?
A:先按cd /srv 进入/srv目录,再mysqldump -uroot -p你的密码 ghost > ghost.sql
这样就会把你的数据库内容备份到srv目录的ghost.sql这个文件里.


下篇: ftp的安装使用和如何修改主题