本文屬於一個入門級的教程,簡單記錄如何基於阿里雲ECS的CentOS7系統,用Ghost搭建一個博客系統。javascript
首先,來了解一下,整個環節下來,須要用到哪些東西:html
一切準備就緒,開始使用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維護的更加好,並且能夠升級npm。sql
若是你已經看到了最後輸出的信息,那麼久表明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》,後續若有更新,能夠查看原文。