基於阿里雲ECS的Centos7搭建Ghost

本文屬於一個入門級的教程,簡單記錄如何基於阿里雲ECS的CentOS7系統,用Ghost搭建一個博客系統。javascript

首先,來了解一下,整個環節下來,須要用到哪些東西:html

  • 一個完成A記錄解析設置的域名(建議作好ICP備案),例如本站的域名itony.net
  • 使用 MySQL 作數據庫服務;
  • 使用 Nginx 作網頁服務器(Ghost的代理服務);
  • 使用 NodeJS 作後端服務;
  • Ghost一個開源的博客系統;

一切準備就緒,開始使用root用戶的初始化的密碼遠程登陸入系統:java

# xxx.xxx.xxx.xxx 爲你的公網IP,能夠在ECS控制檯中找到
ssh root@xxx.xxx.xxx.xxx

查看一下系統信息:node

cat /etc/redhat-release
# >>> CentOS Linux release 7.3.1611 (Core)

更新一下系統,安裝一些基礎工具:mysql

# 阿里雲的centos已經優化了yum的源,你也能夠自行修改
yum update -y && yum upgrage -y && yum clean all

# curl, wget都是方便後邊的下載
# vim做爲一個老牌Linux文本編輯工具,你值得擁有
yum install curl wget vim -y

# 更新全系統的vim配置
curl https://raw.githubusercontent.com/tonyc726/vim-for-server/master/vimrc > /etc/vimrc

接下來,就直接動手來安裝Ghost須要用到的系統環境吧,因爲CentOS7已經不帶Mysql數據庫了(默認的數據庫是MariaDB,Mysql的一個分支),因此須要先安裝MySQL Repository(具體的版本號,能夠參考 https://dev.mysql.com/downloa...):nginx

# 安裝 MySQL Repository
rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

# 安裝MySQL數據庫的服務器社區穩定版
yum install mysql-community-server -y

# 啓動MySQL服務
systemctl start mysqld.service

# 設置隨系統自啓動
systemctl enable mysqld.service

安裝完成之後,運行mysql_secure_installation,初始化MySQL的一些配置,不過因爲MySQL5.7默認會初始化Root用戶的密碼,因此在執行以前須要獲取這個初始密碼:c++

grep "password" /var/log/mysqld.log

拿到密碼之後,就能夠用root帳戶進入MySQL了,而後來建立Ghost須要的用戶及數據庫:git

# 運行之後輸入剛纔拿到的密碼
mysql -uroot -p

# 添加新數據庫blog,後面Ghost會用到
CREATE DATABASE blog;

# 添加新用戶ghost
# 請將password替換爲你須要的密碼
CREATE USER ghost IDENTIFIED BY 'password';

# 授予ghost用戶在blog數據庫上的全部權限
# password就是你剛纔建立ghost帳戶時設置的密碼
GRANT ALL PRIVILEGES ON blog.* TO 'ghost'@'localhost' IDENTIFIED BY 'password';

# 刷新權限
# 當執行過GRANT,CREATE USER,REVOKE命令以後,必需要執行刷新權限才能生效
FLUSH PRIVILEGES;

# Ctrl+D 退出

好了,以上就是MySQL部分,接下來安裝NodeJS:github

# 推薦使用如下方式安裝NodeJS
# 本系統使用V6穩定版,如需其它版本,你能夠自行調整
curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
# 安裝NodeJS及其依賴包
yum install gcc-c++ make nodejs -y

# NodeJS安裝之後,默認已經自帶的NPM
# 不過npm以前一直被吐槽,建議升級最新版或者用yarn代替
# 升級npm至最新版本(^v5.0.4)
npm install npm@latest -g
# 安裝yarn代替(推薦)
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum install yarn -y

# 測試一下
node -v
# >>> v6.11.0
npm -v
# >>> v5.1.0
yarn -v
# >>> v0.27.5

這裏有個坑,若是直接使用yum install nodejs -y也是能夠安裝NodeJS的,不過nodesource維護的更加好,並且能夠升級npmsql

若是你已經看到了最後輸出的信息,那麼久表明NodeJS已經就緒了,接下來安裝Nginx並作一些簡單的配置:

# 直接安裝便可
yum install nginx -y

# 當即啓動
systemctl start nginx

# 設置開機自啓動
systemctl enable nginx

如今,打開你的瀏覽器,輸入你的公網IP,不出意外,你就已經能夠看到一個Nginx的歡迎頁面了。

不過,出於後期的擴展或者安全性考慮,咱們須要爲系統建立一個名爲www的用戶,專門用於管理網站:

# 添加新用戶,默認會建立一個名爲www的用戶組
adduser www

# 設置密碼(請記錄下你的密碼,之後須要用到)
passwd www

# 分配Root權限 - 讓咱們新建立的www用戶擁有Root用戶的權限
gpasswd -a www wheel

# 將nginx用戶添加入www的用戶組,方便後期的權限控制
usermod -a -G nginx,www nginx

以上就是Ghost須要用到的基礎系統了,下面就來安裝Ghost,新開一個Terminal窗口,用www帳戶登陸:

ssh www@xxx.xxx.xxx.xxx

而後下載Ghost最新的代碼,這裏我選用的最新的穩定版v0.11.9:

# 下載Ghost最新的穩定版
curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

# 解壓
unzip -uo ghost.zip -d ghost

# 進入Ghost的目錄並安裝生產環境的依賴
cd ghost && npm install --production

# 修改Ghost的config,修改數據庫配置
vim config.js

完整的config.js配置以下:

var path = require('path'),
    config;

config = {
    production: {
        url: 'https://www.itony.net',
        mail: {},
        database: {
            client: 'mysql',
            connection: {
                host     : '127.0.0.1',
                user     : 'ghost', //用戶名
                password : 'password', //ghost的密碼
                database : 'blog', //數據庫名
                charset  : 'utf8'
            },
            debug: false
        },

        server: {
            host: '127.0.0.1',
            port: '2368'
        }
    }
};

module.exports = config;

運行一下npm start --production,若是看到下面的提示,證實你已經完成80%了:

Ghost is running in production...
Your blog is now available on https://www.itony.net
Ctrl+C to shut down

目前你是開着遠程鏈接到你的服務器,一旦你把窗口關閉了,那麼你剛纔起的npm start --production可就悲劇了,如何避免呢,這時候咱們就須要一個能幫咱們在後臺穩定運行node服務的工具了,目前比較火熱的要數PM2了:

# 全局安裝PM2
yarn global add pm2 --prefix /usr/local

# 用PM2來啓動Ghost的node服務
# 先切到ghost的目錄,而後再運行
NODE_ENV=production pm2 start index.js --name "blog"

# 檢查運行結果
pm2 show blog

OK,這時候已是90%的進度了,不過你去瀏覽器裏面訪問可還不行,由於你服務起的是2368的端口,而你直接訪問https://www.itony.net就至關於訪問https://www.itony.net:80也就是80端口,而80端口如今已經被Nginx使用了,因此咱們還得作最後一步,使用Nginx代理你的2368

# 進入Nginx的目錄,若是你是按照以前的流程走的,那麼應該是在/etc/nginx
cd /etc/nginx

# 用sudo權限編輯nginx.conf
sudo vim nginx.conf

http那一層中加入Ghost的server配置:

# 因爲這裏是入門級的教程,因此不作vhost的處理了,想了解Nginx的能夠自行去學習

http {
    ...
    server {
        listen       80;
        listen       [::]:80;
        server_name  itony.net www.itony.net;

        location / {
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   Host      $http_host;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_pass         http://127.0.0.1:2368;
        }
    }
}

檢查Nginx的配置,並重啓:

# 檢查Nginx語法是否正確
sudo nginx -t

# 若是正確的話,重啓Nginx服務
systemctl restart nginx.service

好了,若是以上都沒有問題,你應該已經能夠在瀏覽器裏面訪問你的域名了。

本文先發佈於個人我的博客《基於阿里雲ECS的Centos7搭建Ghost》,後續若有更新,能夠查看原文。

相關文章
相關標籤/搜索