2017/8/9 20:13:11当前位置推荐好文阿里云问答浏览文章

本文详细地讲述了怎样从零到一在阿里云服务器上搭建你的Ghost博客。参考了之前的一些文章,过程大致一样,但是自己又仔细地理了一遍流程,相比而言,也更详细一些吧。实现环境为新购买的 阿里云服务器ECS

一. Linux 格式化和挂载数据盘

这部分直接参考阿里云的文档就可以了,写得十分详细,点击标题即可跳转。
如果不知道如何用远程工具连接Linux实例,附上连接 Linux 实例教程

二. nginx安装

1. 升级一下所有软件包

yum -y update

2. 安装编译工具及库文件

yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel

3. 通过rpm包管理器添加nginx:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

4. 安装nginx:

yum -y install nginx

5. 设置nginx服务器自动启动

systemctl enable nginx.service

6. 启动nginx并查看nginx服务状态:

systemctl start nginx.servicesystemctl status nginx.service

到这里nginx安装完毕,之前有些文章介绍通过浏览器输入公网ip访问,可以看到nginx的欢迎页面。试了一下,发现打不开,需要进入阿里云控制台添加安全组规则,允许通过80端口访问。如果是https,则是443端口

三. 添加安全组规则

允许公网通过 HTTP、HTTPS 等服务访问实例

  • 进入阿里云控制台,点击侧边栏的安全组



  • 点击配置规则,新增一个规则



  • 填写内容并加入到实例



  • 再次通过浏览器访问你的公网ip就可以出现nginx的欢迎页面了

四. 安装nvm

Linux环境下使用nvm来管理node.js的版本

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bashsource ~/.bashrc

五. 通过nvm安装node.js

  • 安装ghost所需版本,之前本地用的是4.2.0:nvm install 4.2.0
  • 查看已安装版本:nvm ls
  • 切换至ghost所需版本4.2.0:nvm use v4.2.0
  • 设置默认版本:nvm alias default v4.2.0

说明一下,如果你的系统主要就玩Ghost的话,最好将默认版本设置成支持Ghost的,避免有时候忘了版本做一些无用的操作

下面是一些nvm常用命令:

nvm install stable #安装最新稳定版 node nvm install 4.2.0 #安装 4.2.2 版本 nvm list-remote #列出Node.js的所有版本nvm ls #查看已安装版本nvm use v4.2.0 #切换至ghost所需版本4.2.0nvm alias default v4.2.0 #设置默认版本nvm help #命令帮助

六. 安装Ghost

  • 新建一个目录存放Ghost
cd /datamkdir ghost
  • 下载Ghost
    我下载的是完整中文版的:wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip

  • 解压:unzip Ghost-0.7.4-zh-full.zip

  • 从示例配置文件复制并新建 Ghost 配置文件 config.js:cp config.example.js config.js

  • 将production里的url修改为你的域名,如果需要用其他环境,一并修改

config = {    // ### Production    // When running Ghost in the wild, use the production environment.    // Configure your URL mail settings here    production: {        url: http://yourdomain.com,   //替换成你的域名,如果没有域名,先用公网ip        mail: {},
  • 进入Ghost主目录,执行npm start,因为我下载的是完整版的,所以不需要npm install --production,如果下载的不是完整版的,需先安装依赖,再启动

七. 配置nginx站点

  • 进入nginx配置目录,一般都在/etc/nginx里,如果不在这里,可以用whereis nginx命令查找一下
  • 新建Ghost博客的nginx配置文件:
    vi /etc/nginx/conf.d/ghost_blog.conf
  • 配置站点信息
server {    listen 80;    server_name yourdomain.com;  //替换成你的域名    location / {        proxy_set_header   X-Real-IP $remote_addr;        proxy_set_header   Host      $http_host;        proxy_pass         http://127.0.0.1:2368;    }}
  • 修改默认的配置文件default.conf为default.conf.bak,使Nginx只应用ghost.conf:
    mv default.conf default.conf.bak
  • 重新加载nginx配置:/usr/sbin/nginx -s reload
  • 不出意外的话,通过浏览器访问你的域名或公网ip,应该能看到Ghost的首页了
  • 如果不成功,重启一下nginx:systemctl restart nginx.service

到这里Ghost博客已经可以跑起来了,但是还没有结束。如果你关掉远程连接的客户端,再次访问你的博客,发现已经挂了,因为node命令是无法作为守护进程在后台执行的。

八. 安装forever

forever是一个简单的命令式nodejs的守护进程,能够启动,停止,重启App应用。forever完全基于命令行操作,在forever进程之下,创建node的子进程,通过monitor监控node子进程的运行情况,一旦文件更新,或者进程挂掉,forever会自动重启node服务器,确保应用正常运行。

  • 安装:npm install forever -g
  • 用法
forever start test.jsforever stop test.jsforever restart test.jsforever list

九. 通过forever启动 Ghost

//进入ghost主目录cd /data/ghost//设置环境变量为productionexport NODE_ENV=production //可以打印一下环境,确保是productionecho $NODE_ENV//通过forever启动ghostforever start index.js  

这样ghost博客可以作为一个守护进程一直在后台执行,关掉远程连接的客户端,还是可以访问

十. 安装mysql

1. 下载mysql的repo源:

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2. 安装mysql57-community-release-el7-11.noarch.rpm包

sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

3. 安装mysql

  • yum repolist all | grep mysql,会列出所有的版本


  • 查看可安装的版本
    yum repolist enabled | grep mysql

  • 开始安装mysql
    sudo yum install mysql-community-server
    期间会让你确认,按y就行了

4.启动mysql服务

sudo service mysqld start//For EL7-based platforms, this is the preferred command:sudo systemctl start mysqld.servicesudo service mysqld status//For EL7-based platforms, this is the preferred command:sudo systemctl status mysqld.service

5. 修改root密码

  • sudo grep temporary password /var/log/mysqld.log 可查看初始密码
  • mysql -uroot -p 用初始密码登录root用户
  • ALTER USER root@localhost IDENTIFIED BY 新的密码;
    修改后用新的密码登录试试

6. 加强 MySQL 安全设置

输入 mysql_secure_installation,输入后会执行一系列安全设置

You already have a root password set, so you can safely answer n.//能否修改 root 账户的密码?前面设置过 root 账户的密码了,如果不打算修改密码的话,输入 nRemove anonymous users? [Y/n] y  //能否删除匿名用户?Disallow root login remotely? [Y/n] y  //能否禁止 root 账户远程登录?Remove test database access to it? [Y/n] y  //能否删除 MySQL 默认创建的 test 数据库,并删除所有对 test 数据库的权限设置?Reload privilege tables now? [Y/n] y  //能否重新加载权限表?

7. 修改mysql默认字符集为utf8mb4

解释一下,为什么不是utf8,而是utf8mb4。因为现在手机端可以添加一些emoji表情符,为了支持emoji表情符,须将字符集设置成utf8mb4,它是utf8的超集

  • 查看mysql默认字符集
    SHOW VARIABLES WHERE Variable_name LIKE character\_set\_% OR Variable_name LIKE collation%;
  • 修改my.cnf
    vi /etc/my.cnf,增加下面内容
[mysqld]character-set-client-handshake = FALSEcharacter-set-server=utf8mb4collation-server=utf8mb4_general_ciinit_connect=SET NAMES utf8mb4[client]default-character-set=utf8mb4[mysql]default-character-set = utf8mb4
  • 重启mysql
    sudo service mysqld restart
  • 查看结果
    进入mysql执行
    SHOW VARIABLES WHERE Variable_name LIKE character\_set\_% OR Variable_name LIKE collation%;

十一. 新建一个ghost DB

CREATE SCHEMA `ghost` DEFAULT CHARACTER SET utf8mb4 ;

十二. 配置ghost的DB为mysql

Ghost默认使用SQLite数据库,以文件的形式存放在content/data/目录里,如果你想将db配置为mysql,修改一下配置即可

config = {    // ### Production    // When running Ghost in the wild, use the production environment.    // Configure your URL mail settings here    production: {        url: http://yourdomain.com,        mail: {},        /注释掉sqlite的配置/      / database: {            client: sqlite3,            connection: {                filename: path.join(__dirname, /content/data/ghost.db)            },            debug: false        },/        // 配置MySQL 数据库        database: {            client: mysql,            connection: {                host     : 127.0.0.1,                user     : root,                password : yourpassword,                database : ghost,                charset  : utf8mb4            },            debug: false        },

配置好后,重启ghost,进入db可以看到ghost库里面自动建好了所有的表



十三. 导入之前的数据

到这里所有的工作都完成了,但是如果像我一样服务器之前在别的地方,需要将以前的数据重新导入

  • 登录之前的后台管理,点击实验功能里的导出按钮



  • 登录新的ghost博客系统,创建一个临时账号,进入实验室功能,选择导入

导入时会导入以前的用户信息,这个临时账号数据会被覆盖,这里要注意一下;还有导入的只是数据,图片是没有的,如果你之前使用云存储来管理图片那么就ok了,否则还要将图片都copy过来;还有主题也要一并复制过来



参考:

  1. Linux目录结构详解
  2. linux 通过nvm安装node
  3. Linux 守护进程的启动方法
  4. 在Linux上用forever实现Node.js项目自启动
  5. CentOs7.x安装Mysql的详细教程
  6. Nodejs服务器管理模块forever
网友评论