首先上个成品:eric.com
一.购买域名,服务器
购买的渠道很多,我是直接在阿里云官网把两个买齐的.买域名没什么需要注意的,搜一下自己喜欢的域名然后按步骤购买就可以了.
买服务器的话,最低配置就可以满足需求了,操作系统要选择UBuntu 64位系统,带宽1M,具体配置如下:
买完服务器之后就可以进行域名解析啦,域名解析如下,添加两条就可以了
二.配置服务器
2.1 连接服务器
Linux/Mac OS X系统的电脑
- 打开SSH客户端
- 用户名:root 实例:120.26.xxx.xxx
- 输入实例密码进行登录。
Windows系统的电脑
- 下载安装Windows SSH和Telnet客户端Putty。 下载Putty
- 用户名:root 实例:120.26.xxx.xxx
- 按照Putty使用帮助进行登录。Putty使用帮助
ssh root@120.26.xxx.xxx
点击回车,然后输入你的服务器密码,如果密码无误就会出现欢迎界面.
2.2 安装Node.js&Nginx
sudo apt-get update sudo apt-get install -y python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js
如果敲上面的代码出现: add-apt-repository: command not found ,需要先安装才能继续进行:
sudo apt-get install python-software-properties sudo apt-get install software-properties-common
安装完成之后继续执行下面的命令:
sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
都执行完之后用node -v
查看安装是否成功:v0.10.37
npm -v
:1.4.28
接下来安装Nginx: sudo apt-get install nginx
2.3 安装MySQL
用MySQL数据库来管理存储博客的数据
sudo apt-get install mysql-server
安装过程中系统会让你给root用户设置密码,
如果安装过程中出现 mysql Access denied for user 'root'@'localhost' (using password:YES) 解决方案:
- 打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。
- 重启MySQL服务。
- 在命令行中输入“mysql -uroot -p”(不输入密码),回车即可进入数据库。
- 执行,“use mysql;”使用mysql数据库。
- 执行,“update user set password=PASSWORD("rootadmin") where user='root';”(修改root的密码)
(期间我还select下user表中的记录,查询全部的时候显示了一些乱码,然后我只查询了user表中的Host、User、Password字段,貌似当时显示了3条记录,有1个没有名称。当然,为了解决问题,这些我也管不了了。) - 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。
- 重启MySQL服务。
- 在命令行中输入“mysql -uroot -prootadmin”,问题搞定!
实际解决方案:删除mysql,重新安装
安装完MySQL后,设置utf8
执行命令:cd /etc/mysql
编辑my.conf文件:vi my.cnf
然后去修改一下配置文件,点击i进入插入模式
[mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
编辑完成之后,按ESC 然后 输入:wq
,保存并退出编辑.然后重启MySQL,
service mysql restart
之后我们来检查一下修改是否正确,进入MySQL命令行界面:
mysql -uroot -p
输入之前设置的MySQL密码,然后输入指令:
show variables like 'collation%';
,检查键值对是否一致,如果不一致,就去打开刚才的配置文件检查修改的是否有误.
2.4 创建ghost数据库,配置Nginx
- 为ghost创建一个MySQL数据库,执行如下命令:
mysql -uroot -p -e 'create database ghost;'
系统会提示你输入密码,输入刚才设置的MySQL的root用户的密码 - 我们要用Nginx做ghost的前段代理服务.首先进入Nginx目录下:
cd /etc/nginx/sites-available/
然后创建并且编辑ghost.conf配置文件:
sudo touch ghost.conf
sudo vi ghost.conf
server { listen 80; server_name ericze.com; //替换为你自己的域名! location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } }
然后为ghost.conf文件做一个软连接到当前目录下(这一步不知道是为啥),反正照着做吧:
sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
- 通过npm start 启动ghost的话,如果关闭了远程连接,Ghost也就停了,因此需要一个文件改动监听且自动重启的工具:forever来解决这个问题,输入一下命令安装forever:
sudo npm install forever -g
2.5 安装Ghost
现在前戏已经做足,重头戏登场,这里我参考的文章里给的方法都不太对,我稍微花了点时间去查找.因为下载的是zip文件,所以先下载个解压工具,
进入srv文件夹:cd /srv/
下载解压工具:sudo apt-get install unzip
然后去下载Ghost: sudo wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip
,这个地址是我当时下载的最新版,如果要下载最新版,可以直接去官网拷贝,地址为: Ghost官网下载地址.
然后解压ghost: sudo unzip ghost.zip -d ghost
解压之后,进入Ghost目录修改配置文件:cd /srv/ghost/
拷贝一份配置文件模板:sudo cp config.example.js config.js
然后打开配置文件进行编辑:sudo vi config.js
配置文件里边有两种数据库,上边的是sqlit3的,把那个注释掉,然后下边那个是MySQL的配置,把这个注释打开,注意操作过程中不要出错.这里只修改一下生产环境的配置信息,具体修改如下:
// ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production: { url: 'http://ghostchina.com', //替换为你自己的域名。 mail: {}, database: { updateCheck: false, client: 'mysql', connection: { host : '127.0.0.1', user : 'root', //我们暂且用 MySQL 的 root 账户 password : '123456', //输入你的 MySQL 密码 database : 'ghost', //我们前面为 Ghost 创建的数据库名称 charset : 'utf8' } }, server: { // Host to be passed to node's `net.Server#listen()` host: '127.0.0.1', port: '2368' } },
编辑完成之后最好检查一下,因为随便输错一个字符,就要从头排查错误,很伤!
比对无误之后,按ESC,然后输入 :wq
保存并退出编辑.
- 安装ghost依赖库 打开ghost系统的目录下面的package.json文件,将"sqlite3": "2.2.0", 这一行删除掉(注意,你看到的 sqlite 版本可能会不一样,但是,只是 sqlite3 字样,删除即可,不要注释上,一定要把那一行删除了).
接下来,进入存放Ghost目录下,安装所以来的npm包:
cd /srv/ghost
sudo npm install --production
当所有依赖包安装好之后,目录下就多出一个 node_modules 目录.
终于可以启动ghost了!
执行如下命令重启Nginx:
sudo service nginx restart
然后进入ghost文件目录:cd /srv/ghost
使用forever工具启动ghost:sudo NODE_ENV=production forever start index.js
然后打开浏览器输入你的域名就可以看到ghost画面了,如果你的域名没有备案的话,可以先输入服务器地址查看页面,书写博客。
在搭建过程中遇到什么问题,可以联系我交流问题。