1. 域名購買
域名就是網址,比如你輸入img421.com(一級域名),而我的博客blog.img421.com(二級域名).域名的購買你可以到萬網、Godaddy等大型域名供應商購買。
萬網
Godaddy
首頁中輸入框就是輸入你要命名的域名。如果這個域名被注冊,萬網會推薦你使用其他的后綴名比如
.net
.org
.com.cn
. . . 也會推薦在你使用的名字后面添加數字比如 baidu123
baidu1234
. . .
tips (博主使用的是萬網提供的域名,Godaddy請轉到這兒
Godaddy可以使用支付寶支付,只要把頂部貨幣欄切換到CNY即可。
2. 配置服務器
博主使用的是AWS(亞馬遜服務器),AWS提供新用戶免費一年的使用時間,但是注冊以后必須使用信用卡才行。(說好的免費呢,怎么綁定還扣我預授權6RMB? !-. - )
根據教程配置安全組、密鑰(請重點保護好)、實例(Ubuntu免費實例)
2.1 遠程服務器
打開終端(terminal --- Mac上開啟一個文件或者一個應用的最快方法:control + 空格 , Mac上開啟一個文件或者一個應用的最快方法:control + 空格,呼出spotlight,輸入想要的文件或應用的名稱,如terminal,回車)。
- 切換到你下載好的.pem密鑰文件目錄,我的是在桌面 輸入
cd ./Desktop
(按tab鍵會自動補全)
- 鏈接AWS服務器,輸入命令行:
ssh ssh -i "pem的名字.pem" ubuntu@你的公共IP
如果是第一次鏈接服務器,會讓你確認是否連接 輸入y
即可,
下圖因為我已經連接過,因此跳過這個確認環節,返回紅線內容表示連接成功。
ssh
2.2 安裝Node.js
Node.js是一個可以快速構建網絡服務及應用的平臺,基于Chrome's JavaScript runtime,即Google V8引擎,是一款高性能的服務架構平臺。
-
Ubuntu系統上執行以下代碼即可安裝Node.js
apt-get update apt-get install -y python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
安裝過程中會有一些提示,直接回車,繼續安裝。
-
確認是否安裝成功:
node -v
npm -v
2.3 安裝Nginx
輸入如下安裝命令
sudo apt-get install nginx
2.4 安裝MySQL
Ghost 默認采用 Sqlite3 數據庫。
安裝MySQL執行如下命令:
sudo apt-get install mysql-server mysql-client
安裝過程中,系統會提示你給 root 用戶(這里的 root 是 MySQL 數據庫的管理賬號) 設置個密碼,建議設置的復雜些,更加安全些。如下圖:
為了確保MysqL的安全性:
sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
//輸入安裝 MySQL 時為 root 賬戶設置的密碼
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
//是否修改 root 賬戶的密碼?前面設置過 root 賬戶的密碼了,如果不打算修改密碼的話,輸入 'n'
Change the root password? [Y/n] n
... skipping.
...
//是否刪除匿名用戶?
Remove anonymous users? [Y/n] y
... Success!
...
//是否禁止 root 賬戶遠程登錄?
Disallow root login remotely? [Y/n] y
... Success!
...
//是否刪除 MySQL 默認創建的 test 數據庫,并刪除所有對 test 數據庫的權限設置?
Remove test database and access to it? [Y/n] y
...
//是否重新加載權限表?
Reload privilege tables now? [Y/n] y
... Success!
...
OK!MySQL 到此就安裝好了!
下面,我們為為 MySQL 設置默認字符集。將數據庫、htnl頁面、源碼文件都設置為統一的字符集會減少很多麻煩,當然,utf8 是最好的選擇。
執行如下命令:
cd /etc/mysql
然后輸入:
sudo vi my.cnf
將光標定位到 [mysqld] 位置,按 "i" ,添加如下紅線框內設置:
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
修改完后,按ESC,輸入:wq ,保存退出。
3. 安裝Ghost
3.1 創建數據庫
為Ghost博客創建一個數據庫,里邊存儲用戶的登錄,文章等信息。
執行如下命令:
mysql -uroot -p -e 'create database ghost;'
輸入MySQL數據庫的root 賬戶密碼.
3.2 配置Nginx
利用 Nginx 做 Ghost 的前端代理服務
輸入:
cd /etc/nginx/sites-available/
sudo touch ghost.conf
sudo vi ghost.conf
修改如下內容:
完成之后按etc :wq 退出編輯
3.3 建立軟鏈接
為 ghost.conf 文件做一個軟鏈接到 /etc/nginx/sites-enabled/ 目錄下:
sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
3.4 安裝forever
為了使ghost永遠運行,使用 forever 工具幫我們解決這個問題。接下來執行以下指令來安裝 forever,執行如下命令:
sudo npm install forever -g
3.5 安裝Ghost
3.5.1 下載Ghost
Ghost 安裝包是一個壓縮包,在Linux 上我們需要用unzip 工具進行解壓。
-
安裝unzip 工具:
sudo apt-get install unzip
-
下載 Ghost 安裝包
cd /srv/ sudo curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
-
使用以下命令解壓存檔
unzip -uo ghost.zip -d ghost
3.5.2 修改Ghost配置
進入 Ghost 系統目錄,為 Ghost 增加配置文件并配置數據庫
cd /srv/ghost/
sudo cp config.example.js config.js
sudo vi config.js
修改production 的配置信息,修改為如下
完成之后按etc :wq 退出編輯。
3.5.3 安裝Ghost依賴庫
打開 Ghost 系統的目錄下面的 package.json 文件,將 "sqlite3": "x.x.0", 這一行刪除掉。
進入Ghost 目錄,安裝依賴庫
cd /srv/ghost/
sudo npm install --production
安裝好后,會在目錄下多一個node_modules
目錄
3.5.4 啟動Ghost
啟動并運行Ghost博客
sudo service nginx restart
cd /srv/ghost
sudo NODE_ENV=production forever start index.js
ok,這時將你的域名解析到你的服務器IP上,待DNS生效后,打開域名,就可以看到Ghost博客已經成功運行了。
Q&A:
1. service nginx restart 重啟Nginx失敗.
A:
-
運行nginx -t 查看錯誤內容
nginx: [emerg] unknown directive "*********" in /etc/nginx/sites-enabled/ghost.conf:5 nginx: configuration file /etc/nginx/ nginx.conf test failed
unknown .... :表示在/etc/nginx/sites-enabled/ghost.conf 里有不識別的內容,拼寫錯誤則修改,無用內容則刪除。
-
configuration file /etc/nginx/ : 說明Nginx 配置文件沖突。Nginx有一個默認的default配置文件,而我們又給予它一個軟鏈接的配置文件。
進入/etc/nginx/目錄,執行如下命令:cd /etc/nginx/
sudo vi nginx.conf
打開nginx.conf 修改內容:
將
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
修改為:
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
再次運行
sudo service nginx restart
2. AWS通過root用戶登錄,非密鑰登錄?
A:
-
修改ROOT密碼
sudo passwd root
-
修改權限
sudo chmod 777 /etc/ssh/sshd_config
-
修改ssh的配置文件
sudo vi /etc/ssh/sshd_config
修改三個參數為:
PermitRootLogin yes
PasswordAuthentication yes
UsePAM no
-
重啟AWS
sudo /usr/sbin/sshd restart
如果沒有效果請運行查看進程存在不存在:
ps ax | grep sshd
如果進程存在,一次運行一下幾個命令:
sudo stop ssh sudo start ssh sudo restart ssh sudo status ssh
注意:不要退出現在的遠程控制.另打開一個終端(Terminal)
輸入命令:
ssh root@你的公共IP地址
提示輸入你設置的root密碼,按回車鍵等待登錄成功。
如果切換用戶為其他用戶,比如ubuntu用戶
終端輸入:
su ubuntu