Ubuntu服务器上搭建solo个人博客系统
最近想要嘗試一下搭建一個個人博客來記錄自己的學習和生活,因此選擇了基于java的solo博客系統來嘗試搭建一下,主要的步驟有:
購買服務器
購買域名及備案
安裝博客程序
通過github登錄博客后臺設置網站信息
本文接下來將依次詳細介紹每一個步驟:
購買服務器
??因為有學生優惠,所以我購買的阿里云服務器ECS,操作系統鏡像選擇的Ubuntu系統。因為對于ubuntu系統使用的比較多,更加熟悉對應的命令。
??如果你小于24周歲,點擊這里可以通過阿里的云翼計劃購買學生服務器,一年只要114。購買后,登錄阿里云管理控制臺,進入“云服務器ECS”就可以看到你的服務器實例。實例會自動啟動,幾分鐘就運行起來了。當你看到狀態是運行中,表明已經啟動成功了。你也可以看到這個實例的公網IP,可以通過xshell6用遠程SSH工具登錄到這個IP進行服務器管理。
??另外,很重要很重要的是,你需要添加安全組規則,就是添加外部可以訪問的端口,默認只開啟了22端口。對于搭建博客系統,你必須要開通80端口,否則網站將無法訪問。你可以開通其他端口,比如MySQL的端口,以便以后遠程登錄數據庫查看數據。
購買域名與備案
??服務器購買好后,你需要選擇一個域名,可以去阿里云旗下萬網下購買一個。
??購買后,需要進行備案。備案對于中國大陸的服務器是必須的,否則就算你域名解析成功了,也是會被和諧掉的,可以去阿里云下備案吧!
安裝依賴軟件
??由于Solo是基于Java的開源博客系統,安裝Solo之前,我們需要先安裝如下依賴軟件:
Java
MySQL
安裝Java
??因為Solo是用Java開發的,我們要運行Solo必須的安裝Java運行環境。在Oracle官網下載頁面下載Linux版的JDK壓縮包,不過官網現在好像要注冊了才能下載,不想麻煩的可以自己在百度上找一找,還是比較容易找到的,然后通過工具(下面有介紹兩種方式,在通過war發布包構建博客系統小節下)在上傳到服務器。
- 在服務器上創建了一個新目錄/opt/java,然后將壓縮包拷貝到這個目錄,然后解壓:
- 接下來設置環境變量,用vi編輯器打開/etc/profile文件:
??在文件開頭添加如下內容:
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??然后保存別執行以下命令使其生效:
source /etc/profile??最后在任意目錄執行下面命令來測試Java是否安裝成功:
java -version??如果看到類似下面的輸出,說明已經安裝成功了:
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默認使用的H2內存DB,建議最好改用MySQL。
??首先分別執行下面三條命令:
sudo apt-get install mysql-server sudo apt isntall mysql-client sudo apt install libmysqlclient-dev??安裝過程中,要求設置root用戶的密碼,請一定記住這個密碼。
??安裝成功后可以通過下面的命令測試是否安裝成功:
sudo netstat -tap | grep mysql??輸出類似如下:
tcp6 0 0 localhost:mysql *:* LISTEN 19839/mysqld??也可以執行以下命令測試是否可以進入MySQL:
mysql -uroot -p你的密碼??MySQL安裝后默認是沒有打開遠程訪問的,從上面的輸出可以看出,它只允許localhost也就是本機訪問。
??我們可以編輯/etc/mysql/mysql.conf.d/mysqld.cnf文件:
??將bind-address = 127.0.0.1注釋掉:
#bind-address = 127.0.0.1??保存退出,然后執行如下命令進入MySQL:
mysql -uroot -p你的密碼??然后執行以下命令進行授權:
grant all on *.* to root@'%' identified by '你的密碼' with grant option; flush privileges;??然后執行quit命令退出MySQL,執行以下命令重啟MySQL服務:
service mysql restart??此時,再次運行ps命令:
sudo netstat -tap | grep mysql??輸出如下,你會看到它已經不再只是監聽localhost了:
tcp6 0 0 [::]:mysql [::]:* LISTEN 19839/mysqld??現在就可以使用MySQL客戶端測試一下是否可以從你的電腦訪問服務器上的MySQL服務了。
安裝博客程序
??接下來的步驟就是安裝博客程序了。有很多的開源博客程序,這里選擇了一款Java開源博客系統:Solo。
??對于solo博客系統的安裝的話,通過作者的文檔可以看出來主要有兩種方式來部署博客系統:
- 通過 war 發布包或者源碼構建部署
- 通過tomcat使用war包實現部署
- Docker 部署(作者推薦)
??這三種方式的主要區別的話,通過war發布包或者源碼構建部署以及tomcat來實現博客系統的構建的話,對于未來的博客系統的更新內容需要自己去重新下載war包來實現更新,而且對于界面皮膚的更換也需要自己去下載,然后放到對應的目錄下面,而通過Docker部署的話可以在docker的官方倉庫更新最新版本的內容,而且可以在線更新皮膚。
通過war發布包構建博客系統
??通過上面的官網再進入Github找到下載鏈接,下載到Solo的war包。然后通過傳輸工具上傳到服務器,這里有兩種推薦(使用的是xshell來連接服務器):
??上傳Solo包后,創建一個新目錄/opt/solo,將Solo war包拷貝到這個目錄下,然后解壓:
jar -xvf solo-2.9.1.war??解壓后,進入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地址是公網ip,比如47.96.137.27 # Browser visit port, 80 as usual, THIS IS NOT SERVER LISTEN PORT! serverPort=80 //選擇端口,一般80可以不填,但這一行不能注釋??保存并退出,進入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??保存退出。
??接下來創建數據庫,首先執行下面命令進入MySQL:
mysql -uroot -p你的密碼??然后執行下面命令創建數據庫,數據庫名字與local.properties里配置的名字要一樣:
CREATE DATABASE IF NOT EXISTS solo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;??退出MySQL,最后執行下面命令后臺啟動Solo:
nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &??然后通過訪問你的服務器公網ip就可以訪問你的博客了,注意上面的配置一定不能配錯,不然會提示你配置出錯。
通過tomcat使用war包來實現博客網站部署
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
創建tomcat文件夾并進入
??然后將壓縮包傳上服務器tomcat文件夾。
??安裝包會被解壓到/usr/local/tomcat/apache-tomcat-9.0.17,將目錄重命名為 tomcat9
# mv /usr/local/tomcat/apache-tomcat-9.0.17 /usr/local/tomcat/tomcat9
服務開啟成功
Tomcat 服務關閉命令
# ./shutdown.sh
??用本地瀏覽器訪問tomcat務器 IP:8080/
??如果能出現熟悉的 Tomcat 主頁,就表示安裝成功了,請確保服務器防火墻已關閉
??linux系統關閉防火墻關命令
# systemctl stop firewaldd.service
??linux系統開機禁用防火墻關命令
# systemctl disable firewalld
??Tomcat 服務默認開機不自啟,系統重啟后需手動開啟服務。或自行百度 Tomcat 服務開機自啟教程。
??在tomcat9目錄下的webapps/ROOT 是Tomcat 容器的網站根目錄,也就是上面我們看到的 Tomcat 主頁文件的目錄,將前面下載的 war 包移動到 wenapps 目錄后 Tomcat 會自動解壓,在 tomcat9/webapps 目錄下有 solo-v3.2.0 這個文件夾就說明解壓成功,之后刪除war包,將solo-v3.2.0文件夾重命名為solo,然后記得修改配置,否則會出現配置錯誤的頁面,還是修改solo文件夾下WEB-INF/classes/latke.properties和WEB-INF/classes# vim local.properties下的配置內容,具體可以看這里,之后我們通過訪問ip:8080/solo就能訪問到博客的主頁了,如果你想直接設置ip:8080訪問的話,那么接下在我們要把 Tomcat 的訪問目錄換為 solo,最簡單的辦法就是將原來的 ROOT 文件夾刪除或者重命名,再將 solo文件夾重命名為 ROOT,這樣我們通過服務器 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 服務,然后通過本地瀏覽器訪問服務器 IP:8080
# cd /usr/local/tomcat/tomcat9/bin/ # ./startup.sh??出現 Solo 的開始界面說明你的 Solo 博客就部署成功了,你就可以登錄綁定你的 GitHub 賬號開始寫文章了。
Docker 部署
??Docker部署的話是solo博客系統最推薦的方式,而且作者也是希望部署博客的用戶都使用這種方式,因為對于后續的更新比較方便。使用Docker部署的話主要是以下的步驟:
uname -r
確保你的內核版本要高于3.10,沒有的話自己去更新內核。
安裝docker的話也有兩種方式:
- 直接安裝,不過這種方式安裝的docker可能不是最新版本,不是很推薦,通過命令:
apt-get install docker-io
來安裝,通過命令service start docker啟動dockers,之后可以敲命令docker run hello-world來去官方倉庫下載hello-world鏡像并運行,如果出現以下頁面就表示成功:
- 通過添加官方源來安裝最新版本的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版本是免費的,如果我們學習或者一般應用,CE足夠。我們安裝社區版:由于docker安裝需要使用https,所以需要使 apt 支持 https 的拉取方式。
(3)、安裝 https 相關的軟件包
??(4)、 設置apt倉庫地址
??鑒于國內網絡問題,強烈建議使用國內地址
??添加 Docker 官方apt倉庫(使用國外源)
??執行該命令時,如遇到長時間沒有響應說明網絡連接不到docker網站,需要使用國內的
??添加 阿里云 的apt倉庫(使用國內源)
$ 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容器占用內存過大。
mkdir -p /opt/mysql/data /opt/mysql/logs /opt/mysql/conf
??data目錄將映射為mysql容器配置的數據文件存放路徑
??logs目錄將映射為mysql容器的日志目錄
??conf目錄里的配置文件將映射為mysql容器的配置文件
??(3)、運行鏡像創建容器
$ 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:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
??-v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
??-v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
??-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。
??(4)、查看正在運行的容器
#通過命令檢查mysql是否安裝成功 docker images #這個命令會顯示你docker上的所有鏡像,比如現在估計你只有mysql和hello-world #通過命令檢查mysql是否在后臺運行 docker ps #可以查看當前在運行的鏡像??(5)、進入數據庫,創建solo庫
# docker安裝的mysql默認允許遠程連接,可以使用Navicat等軟件連接數據庫 # 進入容器mysql docker exec -it mysql bash# 進入數據庫 p后面跟你的密碼 mysql -uroot -pXXX# 創建數據庫(數據庫名:solo;字符集utf8mb4;排序規則utf8mb4_general_ci) create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 出現Query OK, 1 row affected (0.00 sec)表示成功 #退出數據庫 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=你的公網ip或域名 --server_port=??上面的命令仔細檢查,免得出錯,參數說明:
??--env JDBC_PASSWORD=“123456” 將 123456 換成你的密碼
??--listen_port=8080 監聽的端口
??--server_scheme=http 請求方式,暫時使用 http,后面我們會換成 https
??--server_host= 你的域名,如果你沒有域名可以寫 ip 地址
??--server_port= 這里填你想映射的端口,http的話80和https的443可以不填,但不能注釋,否則會導致靜態資源無法加載。
??--rm因為這個容器后面要刪掉,帶上rm 會省很多事,如果不帶rm的話,那么后面你要刪除這個鏡像的話,首先你要刪除它的容器,然后通過命令刪除鏡像:
??鏡像id可以通過命令docker images查看到。帶上了rm的話,那么后面執行命令docker stop 鏡像名就會自動刪除鏡像,便于要修改配置。
??命令成功執行沒有報錯的話,通過docker ps查看執行的容器列表中是否存在 Solo,存在這表示啟動成功,直接訪問你的域名加:8080 即可訪問你的博客。
登錄博客后臺設置網站信息
??最后可以輸入你的公網ip訪問你的網站了。首次訪問時,需要初始化網站。你需要設置你的管理員帳號,然后開始初始化,Solo會自動在MySQL中建立數據庫表。初始化成功后就自動進入你的網站了。
??進入Solo后臺管理控制臺,進入"工具"->“偏好設定”,你可以修改你的網站名稱等其他基本網站信息。
??就這樣,屬于你的博客網站就已經基本搭建完成了。
拓展
??因為寫這博客的時候我還沒有域名的申請,因此沒有寫出關于域名映射的內容,還有如果你想通過https的方式來配置你的博客的話,可以查看這篇文章:從零開始安裝 solo 博客,因為我的這篇文章都是基于它的,它對于https方式的配置以及域名映射講的比較詳細。
??最后,我的博客網站:http://47.96.147.37/(沒有域名,么辦法?)。
總結
以上是生活随笔為你收集整理的Ubuntu服务器上搭建solo个人博客系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生成对抗网络入门详解及TensorFlo
- 下一篇: ubuntu 安装amarok音乐播放器