从零开始搭建开源博客 solo

本贴最后更新于 2096 天前,其中的信息可能已经物是人非

简介

Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,文章自动推送到社区后可以让很多人看到,产生丰富的交流互动。

相关配置:

名称 说明
服务器 推荐云服务器(阿里云、腾讯云等)
操作系统 Centos7
JDK 版本 1.8.0_201
容器 Tomcat9
Solo 版本 V3.2.0
反向代理 Nginx

准备环境

1. 服务器和系统

在阿里云或腾讯云申请一台服务器,安装 centos7 系统。(我的服务器已经搭建好,所以新建了一个虚拟机,配置如下)
1.PNG

2.安装配置 JDk

1.检查并卸载 centos7 系统上的 openjdk

1. # rpm -qa | grep java

jdk.PNG

  • 卸载掉系统自带的 jdk(除去 .noarch 结尾)
1. # rpm -e --nodeps + 文件名

例如卸载第一个 openjdk 命令为:

1. # rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.191.b12-1.el7_6.x86_64
  1. 下载 jdk(最新版本是 1.8_201)

3.新建 /usr/local/java 目录,将 jdk 解压在此目录

进入/usr/local/目录下
1. # cd /usr/local/
新建java目录
2. # mkdir /usr/local/java
将jdk移至新建的java目录下
3. # mv jdk-8u201-linux-x64.tar.gz /usr/local/java/
进入目录下
4. # cd java
解压jdk
5. # tar -zxvf jdk-8u201-linux-x64.tar.gz

4.配置 java 环境

1. # vim /etc/profile

按"i"进入插入模式,在配置文件最上方插入如下:
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

jdk.PNG

  • 编辑后按"Esc"退出编辑,再输入":wq"保存修改,然后输入以下命令,配置生效
1. # source /etc/profile

5.检测 jdk 是否配置成功

1. # java

java.PNG

1. # java -version

version.PNG
到此 jdk 安装配置成功

2.安装 Tomcat9

1.到官网下载安装包

tomcat9 下载链接:https://tomcat.apache.org/download-90.cgi
这里选择适合 Linux 的安装包,下载到本地后上传到 centos 服务器,或者直接通过 wget 命令下载
QQ 图片 20190327102825.png

1. # cd /usr/local/
2. # mkdir tomcat/
3. # cd tomcat/
4. # wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz

以上操作就将 tomcat9 安装包文件 apache-tomcat-9.0.17.tar.gz 下载到/usr/local/tomcat 目录下了

2.安装 tomcat9

1. # cd /usr/local/tomcat/
2. # tar -zxvf apache-tomcat-9.0.17.tar.gz

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

1. # mv /usr/local/tomcat/apache-tomcat-9.0.17 /usr/local/tomcat/tomcat9

3.开启 tomcat 服务

1. # cd /usr/local/tomcat/tomcat/bin/
2. # ./startup.sh

QQ 图片 20190327104523.png
服务开启成功
tomcat 服务关闭命令

 1. # ./shutdown.sh

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

linux系统关闭防火墙关命令
1. # systemctl stop firewaldd.service
linux系统开机禁用防火墙关命令
2. # systemctl disable firewalld

QQ 图片 20190327104952.png

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

3.部署 solo 博客

1.下载源码包
solo 是开源博客系统,源码包可以到 github 下载
项目链接:https://github.com/b3log/solo
这里我们使用 solo-v3.2.0,可以下载到本地后上传到 centos 服务器,或者直接通过 wget 命令下载

1. # cd /usr/local/tomcat/tomcat9/webapps/
2. # wget https://github.com/b3log/solo/releases/download/v3.2.0/solo-v3.2.0.war

./webapps/ROOT 是 tomcat 容器的网站根目录,也就是上面我们看到的 tomcat 主页文件的目录
将 war 包下载或上传到 wenapps 目录后 tomcat 会自动解压

QQ 图片 20190328095531.png

2.替换文件
在 tomcat9/webapps 目录下有 solo-v3.2.0 这个文件夹就说明下载成功,接下在我们要把 tomcat 的访问目录换为 solo,最简单的办法就是将原来的 ROOT 文件夹删除或者重命名,再将 solo-v3.2.0 重命名为 ROOT,
这样我们通过 http://服务器 IP:8080 就能访问 solo 了。

1. # mv /usr/local/tomcat/tomcat9/webapps/ROOT /usr/local/tomcat/tomcat9/webapps/ROOT-old
2. # mv /usr/local/tomcat/tomcat9/webapps/solo-v3.2.0 /usr/local/tomcat/tomcat9/webapps/ROOT

QQ 图片 20190328100322.png

3.验证 solo 能否访问
先打开 tomcat 服务,然后通过本地浏览器访问 http://服务器 IP:8080

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

出现 solo 的开始界面说明你的 solo 博客就部署成功了,你就可以登录绑定你的 github 账号开始写文章了
QQ 图片 20190328100952.png

4.备份数据
solo 博客部署成功后,系统会自动生成一个 solo_h2 目录,所以只要备份这个文件夹就可以了
QQ 图片 20190328101501.png

4.安装配置 Nginx

博客部署成功后只能通过 http://服务器 IP:8080 访问,因为 tomcat 的默认端口是 8080.如果你想直接通过 http://服务器 IP 访问,最粗暴的方法就是修改 tomcat 的配置文件(修改方法请自行百度!),但是你的服务器有两个网站或以上网站的话,用这个方法就会很麻烦。所以我们使用 Nginx 反向代理。
1.安装 Nginx
在 Centos 下,yum 源不提供 nginx 的安装,可以通过切换 yum 源的方法获取安装。也可以通过直接下载安装包再上传到服务器。这里提供一个 Centos7 换阿里 yum 的教程[https://www.itdawei.cn/yum]
首先安装必要的库(nginx 中 gzip 模块需要 zlib 库,rewrite 模块需要 pcre 库,ssl 功能需要 openssl 库).选定 ./usr/local/ 为安装目录,以下具体版本号根据实际改变。

1.安装安装 gcc gcc-c++(如新环境,未安装请先安装)

1. # yum install -y gcc gcc-c++

2.安装 PCRE 库

1. # cd /usr/local/
2. # wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
3. # tar -zxvf pcre-8.33.tar.gz
4. # cd pcre-8.33
5. # ./configure
6. # make && make install

3.安装 SSL 库

1. # cd /usr/local/
2. # wget http://www.openssl.org/source/openssl-1.1.1b.tar.gz
3. # tar -zxvf openssl-1.1.1b.tar.gz
4. # cd openssl-1.1.1b/
5. # ./config
6. # make && make install

4.安装 zlib 库存

1. # cd /usr/local/
2. # wget http://zlib.net/zlib-1.2.11.tar.gz
3. # tar -zxvf zlib-1.2.11.tar.gz
4. # cd zlib-1.2.11/
5. # ./configure
6. # make && make install

5.安装 Nginx

1. # cd /usr/local/
2. # wget http://nginx.org/download/nginx-1.14.2.tar.gz
3. # tar -zxvf nginx-1.14.2.tar.gz
4. # cd nginx-1.14.2/
5. # ./configure
6. # make && make install

6.启动 Nginx

1. # /usr/local/nginx/sbin/nginx

Nginx 部分命令

重启
1. # /usr/local/nginx/sbin/nginx –s reload

停止
2. # /usr/local/nginx/sbin/nginx –s stop

检查配置文件是否正常
3. # /usr/local/nginx/sbin/nginx –t

强制停止
4. # pkill nginx 

7.验证 Nginx 是否安装成功
用本地浏览器访问 http://服务器 IP
如果能出现 Nginx 主页,就表示安装成功了,请确保服务器防火墙已关闭
QQ 图片 20190328130137.png

8.设置 Nginx 开机启动

1. # vi /etc/rc.local
进入文件后按 **i** 增加下面这条代码,然后按**Esc**退出编辑,在输入**:wq**按回车键保存退出
/usr/local/nginx/sbin/nginx
设置权限
2. # cd /etc/
3. # chmod 755 rc.local

9.配置 Nginx 代理

进入Nginx的配置文件
1. # vi /usr/local/nginx/conf/nginx.conf
进入文件后按 **i** 在配置文件中中添加以下代理规则,然后按**Esc**退出编辑,在输入**:wq**按回车键保存退出
server {
listen 80;
server_name 域名(前面不要加协议,多域名用空格分开,没有域名则直接输入服务器ip);
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启Nginx服务
2. # /usr/local/nginx/sbin/nginx -s reload

QQ 图片 20190328142829.png

10.检查 Nginx 代理是否配置成功
打开本地浏览器,在地址栏输入服务器 IP(绑定了域名则直接输入域名访问)。
如果能直访问 8080 端口下的 solo 博客,说明 Nginx 代理配置成功
到此,solo 博客就部署完成了

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1435 引用 • 10056 回帖 • 489 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Dawei1408
    作者

    你用的 solo 是什么版本的?v3.4.0 我试过,有点问题。所以我用的 v3.2.0

    2 回复
  • 其他回帖
  • Dawei1408 1
    作者

    我不知道问题具体的原因,我觉得有可能是 tomcat 的问题,我描述一下:
    在网站正常的情况下,先停止 tomcat 服务。然后在 tomcat/webapps 目录下下载 solo-v3.4.0 的 war 包,然后不做任何操作直接开启 tomcat 服务,正常。
    然后再关闭 tomcat 服务就报错(拒绝链接),然后我查看一下 tomcat 的进程,发现 tomcat 服务根本没启动,然后把 tomcat/webapps 目录下的 solo-v3.4.0 和对应的 war 包删除,又恢复正常。我一直不知道这个问题是怎么造成的,所以一直没解决。

    另外我发现 solo-v3.4.0 的数据库默认使用的是 mysql 的
    3.PNG

    1 回复
  • lbb4511

    一般都是要创建专用的 tomcat 用户和 nginx 用户,主要是为了防止脚本远程攻击的

    1 回复
  • MisterBooo

    解决了,需要删除 solo-3.2.0 这个文件夹和 solo-3.2.0.war 这个包才行~

    1 回复
  • 查看全部回帖