分类 标签 存档 黑客派 订阅 搜索

CentOS 安装 Ghost 博客并实现全站 HTTPS

80 浏览

1. 前期准备

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

2. 安装 Nginx

yum install nginx -y   //安装nginx
service nginx start  //开启nginx
chkconfig nginx on   //设置开机自启动

Nginx 安装完成, 现在用 IP 或者域名就可以访问你的服务器了.

使用 Nginx 配置反向代理, 指向 ghost 博客的 2368 端口.

cd /etc/nginx/conf.d  //cd到nginx目录
vim default.conf   //打开default.conf文件

在文件中写入一下内容:

server {  
    listen 80;
    server_name jingxuetao.com;
    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 替换成自己的域名, 保存退出, 并重启 Nginx.

service nginx restart

3. 安装 MySQL

Ghost 集成了 sqlite3 数据库, 如果不用 MySQL, 本步可以忽略.

yum install mysql mysql-server  //安装MySQL
service mysqld restart  //启动数据库
chkconfig mysqld on  //设置开机启动
mysql_secure_installation  //开始配置数据库
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 字符支持.

 vim /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 的用户
//% 代表能被所有地址访问

### 4.安装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

### 5.安装Ghost

mkdir /var/www // 创建 Ghost 安装路径
wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip // 下载 Ghost(中文版)
unzip Ghost-0.7.4-zh-full.zip // 解压 zip 文件到当前文件夹
mv config.example.js config.js // 重命名, 并配置
vim config.js // 打开 config.js 文件, 并在里面填写对应内容. 如果用 sqlite3, 只需要配置 url


production: {
url: 'http://jingxuetao.com', // 这里是你自己 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 中做相应改变
}
}

现在在www目录下用命令npm start启动Ghost,网页就可以浏览了.
### 6.使用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 ghost

用http://jingxuetao.com/ghost 访问后台
### 7.设置外部存储
Ghost默认是将图片存储在服务器上的,但是服务器存储空间有限,并且外部存储又不花钱.

https://portal.qiniu.com/ 创建七牛云存储账号,并创建一个空间(公开空间).(使用免费空间之前得冲10块钱),然后修改Ghost配置文件如下:
   /*storage: {
        provider: 'local-file-store'
    }*/  //注释掉本地存储代码.
    storage: {
        provider: 'qiniu',
        bucketname: 'blog-pic',//空间名称
        ACCESS_KEY: 'd05f31DxWMuCdnqxxxxHOFc5cMJ4rQbdpnPJGB4F',//账号->密钥(左边菜单栏),将AK,SK分别对应ACCESS_KEY,SECRET_KEY填入
        SECRET_KEY: 'q6l8YgfxOdxGSR8U5_DwBhtyC5133xurgBGyjIHt',
        root: '/image/',
        prefix: 'http://o3pxzuakz.qnssl.com'//选择一个空间->空间设置->域名设置->七牛域名,将网址复制到这.
    }

然后,在default.conf文件的location中添加

client_max_body_size 5m; // 设置上传图片最大是 5M, 不设置上传图片会不成功, 默认上传图片大小比较小.


重启Ghost,上传一张图片试试,看看图片地址.
### 8.设置HTTPS
①申请沃通免费证书,参考这篇文章.
[Wosign沃通免费SSL申请开通](http://www.freehao123.com/cloudflare-wosign-ssl/)

②选择nginx的证书,改名为cert.crt跟cert.key

③将证书上传到服务器的/etc/nginx目录下,然后配置Nginx.在/etc/nginx/conf.d目录下,除了default.conf文件之外,应该还有一个sslxxxxx.conf文件(没有就创建ssl.conf文件),将下面内容对比填入或者复制进去.

HTTPS server

#
server {
listen 443 ssl;
server_name jingxuetao.com;

ssl_certificate      /etc/nginx/cert.crt;
ssl_certificate_key  /etc/nginx/cert.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers   on;

location / {
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass         http://127.0.0.1:2368;
    client_max_body_size    5m;
}

}

**另外还得在config.js文件中将url字段http后面加个s,例如:**

url: 'https://jingxuetao.com'


现在通过https://jingxuetao.com 就可以访问自己的网站了.

要想将HTTP请求自动跳转到HTTPS,在default.conf文件的location中添加下面内容

return 301 https://$server_name$request_uri;
```
现在是实现 HTTPS 了, 但是因为网页中含有其他网站的资源文件 (图片, 一个是头像, 另一个就是后台左上角的那个小图标, 再就是自己上传到七牛的图片.), 所以现在浏览器地址栏中并没有显示安全连接.

往后需要各种注意的细节, 文字描述不清楚. 不说了, 心好累.

博客本来访问量就不多, 耐心看到这的就更少了. 如果需要, 加我 QQ 吧, 1247846317 验证问题: 荆学涛.

END

评论  
留下你的脚步
推荐阅读