Ubuntu服务器上搭建solo个人博客系统
最近想要嘗試一下搭建一個個人博客來記錄自己的學(xué)習(xí)和生活,因此選擇了基于java的solo博客系統(tǒng)來嘗試搭建一下,主要的步驟有:
購買服務(wù)器
購買域名及備案
安裝博客程序
通過github登錄博客后臺設(shè)置網(wǎng)站信息
本文接下來將依次詳細(xì)介紹每一個步驟:
購買服務(wù)器
??因為有學(xué)生優(yōu)惠,所以我購買的阿里云服務(wù)器ECS,操作系統(tǒng)鏡像選擇的Ubuntu系統(tǒng)。因為對于ubuntu系統(tǒng)使用的比較多,更加熟悉對應(yīng)的命令。
??如果你小于24周歲,點擊這里可以通過阿里的云翼計劃購買學(xué)生服務(wù)器,一年只要114。購買后,登錄阿里云管理控制臺,進(jìn)入“云服務(wù)器ECS”就可以看到你的服務(wù)器實例。實例會自動啟動,幾分鐘就運行起來了。當(dāng)你看到狀態(tài)是運行中,表明已經(jīng)啟動成功了。你也可以看到這個實例的公網(wǎng)IP,可以通過xshell6用遠(yuǎn)程SSH工具登錄到這個IP進(jìn)行服務(wù)器管理。
??另外,很重要很重要的是,你需要添加安全組規(guī)則,就是添加外部可以訪問的端口,默認(rèn)只開啟了22端口。對于搭建博客系統(tǒng),你必須要開通80端口,否則網(wǎng)站將無法訪問。你可以開通其他端口,比如MySQL的端口,以便以后遠(yuǎn)程登錄數(shù)據(jù)庫查看數(shù)據(jù)。
購買域名與備案
??服務(wù)器購買好后,你需要選擇一個域名,可以去阿里云旗下萬網(wǎng)下購買一個。
??購買后,需要進(jìn)行備案。備案對于中國大陸的服務(wù)器是必須的,否則就算你域名解析成功了,也是會被和諧掉的,可以去阿里云下備案吧!
安裝依賴軟件
??由于Solo是基于Java的開源博客系統(tǒng),安裝Solo之前,我們需要先安裝如下依賴軟件:
Java
MySQL
安裝Java
??因為Solo是用Java開發(fā)的,我們要運行Solo必須的安裝Java運行環(huán)境。在Oracle官網(wǎng)下載頁面下載Linux版的JDK壓縮包,不過官網(wǎng)現(xiàn)在好像要注冊了才能下載,不想麻煩的可以自己在百度上找一找,還是比較容易找到的,然后通過工具(下面有介紹兩種方式,在通過war發(fā)布包構(gòu)建博客系統(tǒng)小節(jié)下)在上傳到服務(wù)器。
- 在服務(wù)器上創(chuàng)建了一個新目錄/opt/java,然后將壓縮包拷貝到這個目錄,然后解壓:
- 接下來設(shè)置環(huán)境變量,用vi編輯器打開/etc/profile文件:
??在文件開頭添加如下內(nèi)容:
JAVA_HOME=/opt/java/jdk1.8.0_171 JRE_HOME=/opt/java/jdk1.8.0_171/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH??然后保存別執(zhí)行以下命令使其生效:
source /etc/profile??最后在任意目錄執(zhí)行下面命令來測試Java是否安裝成功:
java -version??如果看到類似下面的輸出,說明已經(jīng)安裝成功了:
java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)安裝MySQL
Solo默認(rèn)使用的H2內(nèi)存DB,建議最好改用MySQL。
??首先分別執(zhí)行下面三條命令:
sudo apt-get install mysql-server sudo apt isntall mysql-client sudo apt install libmysqlclient-dev??安裝過程中,要求設(shè)置root用戶的密碼,請一定記住這個密碼。
??安裝成功后可以通過下面的命令測試是否安裝成功:
sudo netstat -tap | grep mysql??輸出類似如下:
tcp6 0 0 localhost:mysql *:* LISTEN 19839/mysqld??也可以執(zhí)行以下命令測試是否可以進(jìn)入MySQL:
mysql -uroot -p你的密碼??MySQL安裝后默認(rèn)是沒有打開遠(yuǎn)程訪問的,從上面的輸出可以看出,它只允許localhost也就是本機訪問。
??我們可以編輯/etc/mysql/mysql.conf.d/mysqld.cnf文件:
??將bind-address = 127.0.0.1注釋掉:
#bind-address = 127.0.0.1??保存退出,然后執(zhí)行如下命令進(jìn)入MySQL:
mysql -uroot -p你的密碼??然后執(zhí)行以下命令進(jìn)行授權(quán):
grant all on *.* to root@'%' identified by '你的密碼' with grant option; flush privileges;??然后執(zhí)行quit命令退出MySQL,執(zhí)行以下命令重啟MySQL服務(wù):
service mysql restart??此時,再次運行ps命令:
sudo netstat -tap | grep mysql??輸出如下,你會看到它已經(jīng)不再只是監(jiān)聽localhost了:
tcp6 0 0 [::]:mysql [::]:* LISTEN 19839/mysqld??現(xiàn)在就可以使用MySQL客戶端測試一下是否可以從你的電腦訪問服務(wù)器上的MySQL服務(wù)了。
安裝博客程序
??接下來的步驟就是安裝博客程序了。有很多的開源博客程序,這里選擇了一款Java開源博客系統(tǒng):Solo。
??對于solo博客系統(tǒng)的安裝的話,通過作者的文檔可以看出來主要有兩種方式來部署博客系統(tǒng):
- 通過 war 發(fā)布包或者源碼構(gòu)建部署
- 通過tomcat使用war包實現(xiàn)部署
- Docker 部署(作者推薦)
??這三種方式的主要區(qū)別的話,通過war發(fā)布包或者源碼構(gòu)建部署以及tomcat來實現(xiàn)博客系統(tǒng)的構(gòu)建的話,對于未來的博客系統(tǒng)的更新內(nèi)容需要自己去重新下載war包來實現(xiàn)更新,而且對于界面皮膚的更換也需要自己去下載,然后放到對應(yīng)的目錄下面,而通過Docker部署的話可以在docker的官方倉庫更新最新版本的內(nèi)容,而且可以在線更新皮膚。
通過war發(fā)布包構(gòu)建博客系統(tǒng)
??通過上面的官網(wǎng)再進(jìn)入Github找到下載鏈接,下載到Solo的war包。然后通過傳輸工具上傳到服務(wù)器,這里有兩種推薦(使用的是xshell來連接服務(wù)器):
??上傳Solo包后,創(chuàng)建一個新目錄/opt/solo,將Solo war包拷貝到這個目錄下,然后解壓:
jar -xvf solo-2.9.1.war??解壓后,進(jìn)入latke.properties文件:
vi /opt/solo/WEB-INF/classes/latke.properties??修改serverHost和serverPort:
#### Server #### # Browser visit protocol serverScheme=http # Browser visit domain name serverHost=www.yglong.com //改成你的域名或者ip,ip地址是公網(wǎng)ip,比如47.96.137.27 # Browser visit port, 80 as usual, THIS IS NOT SERVER LISTEN PORT! serverPort=80 //選擇端口,一般80可以不填,但這一行不能注釋??保存并退出,進(jìn)入local.properties文件:
vi /opt/solo/WEB-INF/classes/local.properties??注釋掉H2 DB的配置,并配置MySQL:
#### H2 runtime #### #runtimeDatabase=H2 #jdbc.username=root #jdbc.password= #jdbc.driver=org.h2.Driver #jdbc.URL=jdbc:h2:~/solo_h2/db #jdbc.pool=h2#### MySQL runtime #### runtimeDatabase=MYSQL jdbc.username=root jdbc.password=123456 #你的MySQL密碼 jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.URL=jdbc:mysql://localhost:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC# The minConnCnt MUST larger or equal to 3 jdbc.minConnCnt=5 jdbc.maxConnCnt=10# The specific table name prefix jdbc.tablePrefix=b3_solo??保存退出。
??接下來創(chuàng)建數(shù)據(jù)庫,首先執(zhí)行下面命令進(jìn)入MySQL:
mysql -uroot -p你的密碼??然后執(zhí)行下面命令創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫名字與local.properties里配置的名字要一樣:
CREATE DATABASE IF NOT EXISTS solo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;??退出MySQL,最后執(zhí)行下面命令后臺啟動Solo:
nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &??然后通過訪問你的服務(wù)器公網(wǎng)ip就可以訪問你的博客了,注意上面的配置一定不能配錯,不然會提示你配置出錯。
通過tomcat使用war包來實現(xiàn)博客網(wǎng)站部署
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
創(chuàng)建tomcat文件夾并進(jìn)入
??然后將壓縮包傳上服務(wù)器tomcat文件夾。
??安裝包會被解壓到/usr/local/tomcat/apache-tomcat-9.0.17,將目錄重命名為 tomcat9
# mv /usr/local/tomcat/apache-tomcat-9.0.17 /usr/local/tomcat/tomcat9
服務(wù)開啟成功
Tomcat 服務(wù)關(guān)閉命令
# ./shutdown.sh
??用本地瀏覽器訪問tomcat務(wù)器 IP:8080/
??如果能出現(xiàn)熟悉的 Tomcat 主頁,就表示安裝成功了,請確保服務(wù)器防火墻已關(guān)閉
??linux系統(tǒng)關(guān)閉防火墻關(guān)命令
# systemctl stop firewaldd.service
??linux系統(tǒng)開機禁用防火墻關(guān)命令
# systemctl disable firewalld
??Tomcat 服務(wù)默認(rèn)開機不自啟,系統(tǒng)重啟后需手動開啟服務(wù)。或自行百度 Tomcat 服務(wù)開機自啟教程。
??在tomcat9目錄下的webapps/ROOT 是Tomcat 容器的網(wǎng)站根目錄,也就是上面我們看到的 Tomcat 主頁文件的目錄,將前面下載的 war 包移動到 wenapps 目錄后 Tomcat 會自動解壓,在 tomcat9/webapps 目錄下有 solo-v3.2.0 這個文件夾就說明解壓成功,之后刪除war包,將solo-v3.2.0文件夾重命名為solo,然后記得修改配置,否則會出現(xiàn)配置錯誤的頁面,還是修改solo文件夾下WEB-INF/classes/latke.properties和WEB-INF/classes# vim local.properties下的配置內(nèi)容,具體可以看這里,之后我們通過訪問ip:8080/solo就能訪問到博客的主頁了,如果你想直接設(shè)置ip:8080訪問的話,那么接下在我們要把 Tomcat 的訪問目錄換為 solo,最簡單的辦法就是將原來的 ROOT 文件夾刪除或者重命名,再將 solo文件夾重命名為 ROOT,這樣我們通過服務(wù)器 ip:8080 就能訪問 Solo 了。
# mv /usr/local/tomcat/tomcat9/webapps/ROOT /usr/local/tomcat/tomcat9/webapps/ROOT-old# mv /usr/local/tomcat/tomcat9/webapps/solo-v3.2.0 /usr/local/tomcat/tomcat9/webapps/ROOT??先打開 Tomcat 服務(wù),然后通過本地瀏覽器訪問服務(wù)器 IP:8080
# cd /usr/local/tomcat/tomcat9/bin/ # ./startup.sh??出現(xiàn) Solo 的開始界面說明你的 Solo 博客就部署成功了,你就可以登錄綁定你的 GitHub 賬號開始寫文章了。
Docker 部署
??Docker部署的話是solo博客系統(tǒng)最推薦的方式,而且作者也是希望部署博客的用戶都使用這種方式,因為對于后續(xù)的更新比較方便。使用Docker部署的話主要是以下的步驟:
uname -r
確保你的內(nèi)核版本要高于3.10,沒有的話自己去更新內(nèi)核。
安裝docker的話也有兩種方式:
- 直接安裝,不過這種方式安裝的docker可能不是最新版本,不是很推薦,通過命令:
apt-get install docker-io
來安裝,通過命令service start docker啟動dockers,之后可以敲命令docker run hello-world來去官方倉庫下載hello-world鏡像并運行,如果出現(xiàn)以下頁面就表示成功:
- 通過添加官方源來安裝最新版本的docker
(1)、首先卸載舊版本的docker,docker 的舊版本名稱為:docker 、 docker-engine 或者 docekr-io。如果安裝過舊版本的需要先卸載:
$ sudo apt-get remove docker docker-engine docker.io
(2)、安裝最新版本的 Docker
最新版本的 Docker 分兩個版本,docker-ce(Community Edition)和docker-ee(Enterprise Edition)。CE版本是免費的,如果我們學(xué)習(xí)或者一般應(yīng)用,CE足夠。我們安裝社區(qū)版:由于docker安裝需要使用https,所以需要使 apt 支持 https 的拉取方式。
(3)、安裝 https 相關(guān)的軟件包
??(4)、 設(shè)置apt倉庫地址
??鑒于國內(nèi)網(wǎng)絡(luò)問題,強烈建議使用國內(nèi)地址
??添加 Docker 官方apt倉庫(使用國外源)
??執(zhí)行該命令時,如遇到長時間沒有響應(yīng)說明網(wǎng)絡(luò)連接不到docker網(wǎng)站,需要使用國內(nèi)的
??添加 阿里云 的apt倉庫(使用國內(nèi)源)
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -$ sudo add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) \stable"??( 5)、安裝 Docker 軟件
$ sudo apt-get update $ sudo apt-get install docker-ce # 安裝最新版的docker??如果要安裝指定版本的docker,則使用下面的命令:
$ apt-cache policy docker-ce # 查看可供安裝的所有docker版本 $ sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu # 安裝指定版本的docker??(6)、檢查docker是否安裝成功
$ docker --version # 查看安裝的docker版本 $ docker run hello-world` #測試運行??(1)、拉取鏡像mysql:5.6
docker pull mysql:5.6
??(2)、新建目錄date,logs,conf用來映射docker上的mysql容器的一些配置,防止mysql容器占用內(nèi)存過大。
mkdir -p /opt/mysql/data /opt/mysql/logs /opt/mysql/conf
??data目錄將映射為mysql容器配置的數(shù)據(jù)文件存放路徑
??logs目錄將映射為mysql容器的日志目錄
??conf目錄里的配置文件將映射為mysql容器的配置文件
??(3)、運行鏡像創(chuàng)建容器
$ cd /opt/mysql $ docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.16命令說明:
??-p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。
??-v $PWD/conf:/etc/mysql/conf.d:將主機當(dāng)前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
??-v $PWD/logs:/logs:將主機當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs。
??-v $PWD/data:/var/lib/mysql :將主機當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
??-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。
??(4)、查看正在運行的容器
#通過命令檢查mysql是否安裝成功 docker images #這個命令會顯示你docker上的所有鏡像,比如現(xiàn)在估計你只有mysql和hello-world #通過命令檢查mysql是否在后臺運行 docker ps #可以查看當(dāng)前在運行的鏡像??(5)、進(jìn)入數(shù)據(jù)庫,創(chuàng)建solo庫
# docker安裝的mysql默認(rèn)允許遠(yuǎn)程連接,可以使用Navicat等軟件連接數(shù)據(jù)庫 # 進(jìn)入容器mysql docker exec -it mysql bash# 進(jìn)入數(shù)據(jù)庫 p后面跟你的密碼 mysql -uroot -pXXX# 創(chuàng)建數(shù)據(jù)庫(數(shù)據(jù)庫名:solo;字符集utf8mb4;排序規(guī)則utf8mb4_general_ci) create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 出現(xiàn)Query OK, 1 row affected (0.00 sec)表示成功 #退出數(shù)據(jù)庫 exit #退出容器 exit??直接運行以下命令
docker run --detach --name solo --network=host \ --env RUNTIME_DB="MYSQL" \ --env JDBC_USERNAME="root" \ --env JDBC_PASSWORD="123456" \ --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \ --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \ --rm \ b3log/solo --listen_port=8080 --server_scheme=http --server_host=你的公網(wǎng)ip或域名 --server_port=??上面的命令仔細(xì)檢查,免得出錯,參數(shù)說明:
??--env JDBC_PASSWORD=“123456” 將 123456 換成你的密碼
??--listen_port=8080 監(jiān)聽的端口
??--server_scheme=http 請求方式,暫時使用 http,后面我們會換成 https
??--server_host= 你的域名,如果你沒有域名可以寫 ip 地址
??--server_port= 這里填你想映射的端口,http的話80和https的443可以不填,但不能注釋,否則會導(dǎo)致靜態(tài)資源無法加載。
??--rm因為這個容器后面要刪掉,帶上rm 會省很多事,如果不帶rm的話,那么后面你要刪除這個鏡像的話,首先你要刪除它的容器,然后通過命令刪除鏡像:
??鏡像id可以通過命令docker images查看到。帶上了rm的話,那么后面執(zhí)行命令docker stop 鏡像名就會自動刪除鏡像,便于要修改配置。
??命令成功執(zhí)行沒有報錯的話,通過docker ps查看執(zhí)行的容器列表中是否存在 Solo,存在這表示啟動成功,直接訪問你的域名加:8080 即可訪問你的博客。
登錄博客后臺設(shè)置網(wǎng)站信息
??最后可以輸入你的公網(wǎng)ip訪問你的網(wǎng)站了。首次訪問時,需要初始化網(wǎng)站。你需要設(shè)置你的管理員帳號,然后開始初始化,Solo會自動在MySQL中建立數(shù)據(jù)庫表。初始化成功后就自動進(jìn)入你的網(wǎng)站了。
??進(jìn)入Solo后臺管理控制臺,進(jìn)入"工具"->“偏好設(shè)定”,你可以修改你的網(wǎng)站名稱等其他基本網(wǎng)站信息。
??就這樣,屬于你的博客網(wǎng)站就已經(jīng)基本搭建完成了。
拓展
??因為寫這博客的時候我還沒有域名的申請,因此沒有寫出關(guān)于域名映射的內(nèi)容,還有如果你想通過https的方式來配置你的博客的話,可以查看這篇文章:從零開始安裝 solo 博客,因為我的這篇文章都是基于它的,它對于https方式的配置以及域名映射講的比較詳細(xì)。
??最后,我的博客網(wǎng)站:http://47.96.147.37/(沒有域名,么辦法?)。
總結(jié)
以上是生活随笔為你收集整理的Ubuntu服务器上搭建solo个人博客系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生成对抗网络入门详解及TensorFlo
- 下一篇: 【小白搞机入门】名词集-卡米