如何快速部署國人開源的 Java 博客系統 Tale


除了悶頭專研技術之外,程序員還需要不斷地寫作進行技術積累,寫博客是其中最重要的方式之一。商業博客平台不少,但是更符合程序員背景的方案,是自己開發一個博客平台或者使用開源的博客平台。

開源的博客平台多如牛毛,而且不乏優秀之作,如 Hexo、Octopress、Jekyll、Wordpress。本系列文章將分享如何利用各種博客引擎在雲端搭建屬於自己的個人博客。今天這一篇,介紹如何在快速部署一個國人用 Java 開發的博客系統。

前幾天,在社區看到有國人開發者開源了用 Java 寫的一個博客系統 Tale。從作者放出的 Demo 站點來看,效果還是不錯的。正好最近在整理一些好用的博客引擎,今天正好研究了一下如何部署 Tale。

作者王爵在 Github 提供了一份簡單的部署指南,主要包括安裝 JDK8、安裝 MySQL、創建數據庫、下載並運行 Tale 等步驟。但是實際在部署時,發現這份指南缺少許多細節,而且也會碰到一些問題。我們一步一步來看。

0. 前提條件

在部署一個博客網站之前,你必須要有一台雲服務器,否則只能在本地嘗嘗鮮,無法真正使用。筆者經常使用的是騰訊雲提供的 CVM 雲服務器,推薦給大家。

操作系統建議安裝 Ubuntu 14.04。下文將以該系統為例,介紹具體的部署過程。

1. 安裝 JDK8

Tale 是用 Java 語言編寫的博客系統,因此必須先安裝 JDK8。雲服務器的系統是 Ubuntu 14.04,你可以選擇直接從 Oracle 的網站下載針對 Linux 的安裝包,但筆者推薦一個更加簡便的方法:通過 PPA 安裝。

首先,添加 webupd8team/java PPA 倉庫到系統中,然后再通過 apt 安裝 Java 8。具體命令如下:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update $ sudo apt-get install oracle-java8-installer 

安裝結束之后,我們驗證是否成功:

$ java -version

如果出現類似如下輸出,說明成功安裝:


java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode, sharing) 

然后,還需要配置一下 Java 環境。在上文安裝 Java 8的過程中,應該已經安裝了 oracle-java8-set-default 包。我們運行如下命令確保已經安裝成功:

$ sudo apt-get install oracle-java8-set-default 

最后,配置一些相關的環境變量:

$ export JAVA_HOME=/usr/lib/jvm/java-8-oracle $ export JRE_HOME=/usr/lib/jvm/java-8-oracle/jre 

2. 安裝 MySQL

根據官方的指南,Tale 使用的是 MySQL 數據庫,所以第二步就是在雲服務器上自建建一個 MySQL 數據庫。如果你希望更強大的數據庫性能,可以選擇雲廠商提供的雲數據庫:CDB for MySQL

自建 MySQL 還是比較簡單的,只要依次執行如下命令,就可以安裝好 MySQL 並完成安全設置。

$ sudo apt-get update
$ sudo apt-get install mysql-server
$ sudo mysql_secure_installation
$ sudo mysql_install_db

在安裝的過程中,注意設置好 root 用戶的密碼。為了方便,此次部署博客過程中直接使用 root 用戶。在最后的 tale 安裝過程中,要求填寫 MySQL 數據庫的 IP 和用戶名及密碼。

3. 創建數據庫

第三步,我們以 root 用戶身份連接到 MySQL,然后創建名為 tale 的數據庫。

$ mysql -u root -p
Server version: 5.5.54-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database `tale` default character set utf8 collate utf8_general_ci; 

創建數據庫的命令為:create databasetaledefault character set utf8 collate utf8_general_ci;

4.下載並安裝 Tale

接下來,可以下載 Tale 的源代碼了。

$ wget http://7xls9k.dl1.z0.glb.clouddn.com/tale.zip $ unzip tale.zip 

tale 目錄下包含以下文件:

drwxr-xr-x 2 ubuntu ubuntu 4096 Feb 27 02:24 lib drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 27 19:08 logs drwxr-xr-x 5 ubuntu ubuntu 4096 Feb 27 16:42 resources -rw-r--r-- 1 ubuntu ubuntu 173386 Feb 27 02:24 tale-1.0.jar 

通過 java 命令運行 tale-1.0.jar 文件,即可啟動博客系統。

$ cd tale
$ java -jar tale-1.0.jar 

成功運行以上命令后 ,輸出大致如下:

...
...
[tale] 2017-02-27 20:57:42,032 INFO [main] org.eclipse.jetty.server.AbstractConnector | Started ServerConnector@67765770{HTTP/1.1,[http/1.1]}{127.0.0.1:9000} [tale] 2017-02-27 20:57:42,033 INFO [main] org.eclipse.jetty.server.Server | Started @3086ms [tale] 2017-02-27 20:57:42,033 INFO [main] com.blade.embedd.EmbedJettyServer | Blade Server Listen on 127.0.0.1:9000 

最后一行顯示,Tale 博客使用的 Blade 服務器正在監聽 127.0.0.1:9000。但是,我們怎樣才能訪問雲服務器上的這個地址呢?

5. 安裝並配置 Nginx

從第五步開始,是 Tale 的作者沒有在 Github 的指南中說明的。接下來,我們使用 Nginx 作為一個反向代理服務器,來訪問 Tale。

我們修改 Nginx 的 default 設置:

sudo vim /etc/nginx/sites-available/default 

修改其中的 location / 部分,並注釋掉某些行,具體見下面的示例:

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; #root /usr/share/nginx/html; #index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_pass http://127.0.0.1:9000; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } } 

保存並退出文件。然后重啟 Nginx 服務即可。

sudo service nginx restart 

現在我們訪問雲服務器的 IP 地址時,就會進入 Tale 的安裝頁面。

6. 創建系統啟動腳本

如果手動執行 java -jar tale-1.0.jar 命令,那么結束終端會話時就必須要退出 tale 進程。為了讓網站能夠長時間訪問,我們需要讓該命令一直在后台自動運行,最好是支持系統重啟時自動啟動。因此,我們可以將 tale 變成一個系統服務。

創建 /etc/init/tale.conf 文件,寫入如下內容:

start on runlevel [2345] stop on runlevel [!2345] setuid ubuntu setgid ubuntu chdir /home/ubuntu/tale exec java -jar tale-1.0.jar 

上面定義了該服務在 runlevel 為 2、3、4、5 時啟動,而在非這幾個 runlevel 時停止該服務。

運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
運行級別1:單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸
運行級別2:多用戶狀態(沒有NFS)
運行級別3:完全的多用戶狀態(有NFS),登陸后進入控制台命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制台,登陸后進入圖形GUI模式
運行級別6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動

配置好了 tale.conf 文件之后,就能夠通過如下命令啟動、停止和重啟 tale 博客了:

sudo start tale # 啟動 tale sudo stop/restart tale # 停止/重啟 tale sudo status tale # 查看 tale 的狀態 

結語

至此,就完成了在雲服務器(或雲主機)上部署 Tale 開源博客系統的整個過程。

簡單體驗了下前后台,博客基本的功能都具備了,而且速度上確實挺快的。不過目前的主題樣式還比較單一,需要社區其他開發者的貢獻。

另外反饋一個問題給作者:博客后台的系統設置中,有關閉「允許重新安裝」的選項,這個默認設置為「關閉」了。但是實際還是能夠進入安裝頁面,如果有網友能夠猜出博主的數據庫用戶名和密碼的話,估計就能把對方的博客給一鍋端了。

作者王爵自己的 demo 站點也有這個問題:

參考資料

https://github.com/otale/tale/wiki/1.how-to-use-tale
http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-14-04
https://www.digitalocean.com/community/tutorials/a-basic-mysql-tutorial

 

此處有彩蛋——凡前3名評論此文的盆友,均可獲得45元騰訊雲雲服務器體驗代金券~

 

相關推薦

建站基本流程說明
一個小白的自學建站史


此文已由作者授權騰訊雲技術社區發布,轉載請注明文章出處,獲取更多雲計算技術干貨,可請前往騰訊雲技術社區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM