Ubuntu服务器上搭建solo个人博客系统

最近想要尝试一下搭建一个个人博客来记录自己的学习和生活,因此选择了基于java的solo博客系统来尝试搭建一下,主要的步骤有:

  1. 购买服务器

  2. 购买域名及备案

  3. 安装博客程序

  4. 通过github登录博客后台设置网站信息

本文接下来将依次详细介绍每一个步骤:

购买服务器

  因为有学生优惠,所以我购买的阿里云服务器ECS,操作系统镜像选择的Ubuntu系统。因为对于ubuntu系统使用的比较多,更加熟悉对应的命令。
  如果你小于24周岁,点击这里可以通过阿里的云翼计划购买学生服务器,一年只要114。购买后,登录阿里云管理控制台,进入“云服务器ECS”就可以看到你的服务器实例。实例会自动启动,几分钟就运行起来了。当你看到状态是运行中,表明已经启动成功了。你也可以看到这个实例的公网IP,可以通过xshell6用远程SSH工具登录到这个IP进行服务器管理。

  另外,很重要很重要的是,你需要添加安全组规则,就是添加外部可以访问的端口,默认只开启了22端口。对于搭建博客系统,你必须要开通80端口,否则网站将无法访问。你可以开通其他端口,比如MySQL的端口,以便以后远程登录数据库查看数据。

购买域名与备案

  服务器购买好后,你需要选择一个域名,可以去阿里云旗下万网下购买一个。

  购买后,需要进行备案。备案对于中国大陆的服务器是必须的,否则就算你域名解析成功了,也是会被和谐掉的,可以去阿里云下备案吧!

安装依赖软件

  由于Solo是基于Java的开源博客系统,安装Solo之前,我们需要先安装如下依赖软件:

  1. Java

  2. MySQL

安装Java

  因为Solo是用Java开发的,我们要运行Solo必须的安装Java运行环境。在Oracle官网下载页面下载Linux版的JDK压缩包,不过官网现在好像要注册了才能下载,不想麻烦的可以自己在百度上找一找,还是比较容易找到的,然后通过工具(下面有介绍两种方式,在通过war发布包构建博客系统小节下)在上传到服务器。

  • 在服务器上创建了一个新目录/opt/java,然后将压缩包拷贝到这个目录,然后解压:
tar -zxvf jdk-8u171-linux-x64.tar.gz
  • 接下来设置环境变量,用vi编辑器打开/etc/profile文件:
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。

  1. 安装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你的密码
  1. 开启MySQL远程访问

  MySQL安装后默认是没有打开远程访问的,从上面的输出可以看出,它只允许localhost也就是本机访问。
  我们可以编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件:

vi /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来连接服务器):

  1. 下载xftp工具来实现远程传输,在xshell上点击窗口选择新建传输文件就会让你去下载xftp工具,根据步骤下载安装后就可以实现本地和服务器传输文件。
  2. 在ubuntu系统中安装lrzsz,通过命令:apt-get install lrzsz实现安装,如果报错的话,更新一下软件源apt-get update apt-get upgrade,之后应该能成功安装,在终端敲rz就是从本机复制文件了,敲sz 文件名然后选择文件夹存放就可以从服务器中下载文件了。

  上传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包来实现博客网站部署
  1. 去solo的github下载war包,将其传上服务器;
  2. ubuntu安装tomcat,官网下载最新的tomcat9,或者通过wget下载:
    wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
    创建tomcat文件夹并进入
    # cd /usr/local/
    # mkdir tomcat/
    # cd tomcat/

  然后将压缩包传上服务器tomcat文件夹。

  1. 安装 tomcat9
 # cd /usr/local/tomcat/
 # tar -zxvf apache-tomcat-9.0.17.tar.gz

  安装包会被解压到/usr/local/tomcat/apache-tomcat-9.0.17,将目录重命名为 tomcat9
# mv /usr/local/tomcat/apache-tomcat-9.0.17 /usr/local/tomcat/tomcat9

  1. 开启 Tomcat 服务
# cd /usr/local/tomcat/tomcat/bin/
# ./startup.sh

在这里插入图片描述
服务开启成功
Tomcat 服务关闭命令
# ./shutdown.sh

  1. 验证 Tomcat 是否安装成功

  用本地浏览器访问tomcat务器 IP:8080/
  如果能出现熟悉的 Tomcat 主页,就表示安装成功了,请确保服务器防火墙已关闭

  linux系统关闭防火墙关命令
# systemctl stop firewaldd.service
  linux系统开机禁用防火墙关命令
# systemctl disable firewalld
在这里插入图片描述

  Tomcat 服务默认开机不自启,系统重启后需手动开启服务。或自行百度 Tomcat 服务开机自启教程。

  1. 博客网站部署

  在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.propertiesWEB-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
  1. 验证 Solo 博客是否部署成功

  先打开 Tomcat 服务,然后通过本地浏览器访问服务器 IP:8080

# cd /usr/local/tomcat/tomcat9/bin/
# ./startup.sh

  出现 Solo 的开始界面说明你的 Solo 博客就部署成功了,你就可以登录绑定你的 GitHub 账号开始写文章了。

Docker 部署

  Docker部署的话是solo博客系统最推荐的方式,而且作者也是希望部署博客的用户都使用这种方式,因为对于后续的更新比较方便。使用Docker部署的话主要是以下的步骤:

  1. 配置java,前面介绍了,操作是一样的。
  2. 安装Docker,Docker 要求 Ubuntu 系统的内核版本高于 3.10,通过下面的命令查看内核版本安装
    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 相关的软件包
$ sudo apt-get update # 先更新一下软件源库信息
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

  (4)、 设置apt仓库地址
  鉴于国内网络问题,强烈建议使用国内地址
  添加 Docker 官方apt仓库(使用国外源)
  执行该命令时,如遇到长时间没有响应说明网络连接不到docker网站,需要使用国内的

#添加 Docker 官方的 GPG 密钥(为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥)
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#设置稳定版本的apt仓库地址
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

  添加 阿里云 的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. 安装完了docker之后,我们下一步需要的是安装数据库了,可能你就会有疑问了,我在服务器上安装了mysql啊,怎么又要安装了,这么说吧,服务器上的mysql是服务器上的,而docker中不使用服务器上的mysql,我们需要在docker上从官方仓库拉取mysql下来,这两个地方的mysql是不一样的,当然如果你选择用docker的方式安装mysql的话,那么服务器上可以不装mysql,下面就是在docker上安装mysql:(我装的是mysql5.6)

  (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
  1. 部署solo博客

  直接运行以下命令

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的话,那么后面你要删除这个镜像的话,首先你要删除它的容器,然后通过命令删除镜像:

docker rm 容器id  #删除容器
docker rmi 镜像id  #删除镜像

  镜像id可以通过命令docker images查看到。带上了rm的话,那么后面执行命令docker stop 镜像名就会自动删除镜像,便于要修改配置。

  命令成功执行没有报错的话,通过docker ps查看执行的容器列表中是否存在 Solo,存在这表示启动成功,直接访问你的域名加:8080 即可访问你的博客。

登录博客后台设置网站信息

  最后可以输入你的公网ip访问你的网站了。首次访问时,需要初始化网站。你需要设置你的管理员帐号,然后开始初始化,Solo会自动在MySQL中建立数据库表。初始化成功后就自动进入你的网站了。

  进入Solo后台管理控制台,进入"工具"->“偏好设定”,你可以修改你的网站名称等其他基本网站信息。

  就这样,属于你的博客网站就已经基本搭建完成了。

拓展

  因为写这博客的时候我还没有域名的申请,因此没有写出关于域名映射的内容,还有如果你想通过https的方式来配置你的博客的话,可以查看这篇文章:从零开始安装 solo 博客,因为我的这篇文章都是基于它的,它对于https方式的配置以及域名映射讲的比较详细。
  最后,我的博客网站:http://47.96.147.37/(没有域名,么办法?)。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值