如何搭建个人博客?--Solo博客
作者:互联网
如何搭建个人博客?–Solo博客
1. 使用前提
- 一台电脑(必要)
- 公网IP以及域名
- 基本的Linux操作
2. 本次搭建环境和设备
因为刚刚买了一台软路由,i5 -3317U ,开心的不得了,于是疯狂在其上面搭建一些服务,openwrt,ubuntu等等,此次博客也是搭建在其上面,使用Frp内网方式映射至公网,并非直接搭建在公网服务器上,当然原理都是几乎差不多的,区别在于,把博客部署在具有公网IP的服务器还是其他。区别在于如何映射在公网上。
###2.1 本次搭建条件
- Ubuntu软路由
- Frp服务器以及域名(可以蹭别人的)
3.搭建过程
3.1 在Ubuntu安装必要的软件(docker,mysql)
- 安装前可先对Linux,docker换为国内源,根据不同的系统,有些许差别,可以按照下面两篇文章做
- Ubuntu换源
3.1.1 Ubuntu安装dockers
sudo apt-get install docker
等待安装完成,过程根据网络的不同,速度有可能会很慢,按照后,也可先对其docker换源,也可以不换,但可能拉取sole镜像会慢点
docker安装后,可安装一个docker管理器,比较方便,当然也可以跳过这一步
- 安装 portainer
docker pull portainer/portainer
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
非常简单并且不会出什么错,可参考
portainer的安装
3.1.2 Ubuntu安装MySql并建所需要的表
#安装mysql
sudo apt-get install mysql-server
#安装完成后,进入mysql命令控制台
mysql -u root
#建立相关数据表
create database solo default character set utf8mb4 collate utf8mb4_general_ci;
create user 'root'@'127.0.0.1' identified by '123456';
grant all privileges on *.* to 'root'@'127.0.0.1';
flush privileges;
- create user ‘root’@‘127.0.0.1’ identified by ‘123456’;这个黄色部分的密码记得随便改一个哦。
###3.2 docker拉取solo博客镜像,并启动 - 这部分很简单
docker pull b3log/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&allowPublicKeyRetrieval=true" \ b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=\ --static_server_scheme=https\ --static_server_host=cdn.jsdelivr.net\ --static_server_port=\ --static_path=/gh/88250/solo/src/main/resources\
其中的参数:
--listen_port
:进程监听端口--server_scheme
:最终访问协议,如果反代服务启用了 HTTPS 这里也需要改为https
--server_host
:最终访问域名或公网 IP,不要带端口--server_port
:最终访问端口,使用浏览器默认的 80 或者 443 的话值留空即可
此次使用Frp内网穿透的方式代理出公网,一开始server_port
的参数我随便填了一个,发现建立后博客文章跳转有问题,后面尝试该参数留空,Frp代理就正常了,后面有时间我再折腾看看,其实我也是小白一个刚刚毕业
- 此时就应该正常的运行起来了,
http://[IP]:[listen_port]
- 如:http://127.0.0.1:1080
- 如果是部署在阿里云等相关平台,还需在阿里云控制台,防火墙中打开相应的端口,否则无法访问
4.意料之外的问题
- 执行3.2中的shell命令时,发生docker中的solo无法运行,问题在于sole无法访问mysql。
- 日志
[ERROR]-[2021-01-05 23:52:07]-[org.b3log.solo.service.InitService:173]: Check tables failed, please make sure database existed and database configuration [jdbc.*] in local.props is correct [msg=Access denied for user 'root'@'localhost' (using password: YES)]
- 数据库的知识我已经基本还给老师了,不过我猜测是:没有设置root用户的localhost的密码,以至于mysql自动拒绝了solo的访问。
create user 'root'@'127.0.0.1' identified by '123456';
这命令貌似没启作用还是其中的127.0.0.1
应该填写localhost的问题,有时间复习下数据库才是。
*解决:对其设置密码即可
mysql -u root
//查询用户和密码
mysql> select host,user,plugin,authentication_string from mysql.user;
mysql> select host,user,plugin,authentication_string from mysql.user;
//正常应该和下面差不多
+-----------+------------------+-----------------------+-------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+-------------------------------------------+
| localhost | root | mysql_native_password | *61207184AB2886C1787D79D91 |
| localhost | mysql.session | mysql_native_password | *THISISNOTAVALIDPASSWORDTH |
| localhost | mysql.sys | mysql_native_password | *THISISNOTAVALIDPASSWORDTH |
| localhost | debian-sys-maint | mysql_native_password | *1AAA749D3EC539F61AEB6C34A |
| 127.0.0.1 | root | mysql_native_password | *61207184AB2886C1787D79D91 |
+-----------+------------------+-----------------------+-------------------------------------------+
//异常情况如下:我的问题是出在第一行,疑似没有对这个用户和host的情况下初始化密码
//| localhost | root | 不是显示mysql_native_password | *61207184AB2886C1787D79D91 |
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
mysql> flush privileges;
- 使用新密码和命令重新启动solo
docker run --detach --name solo --network=host \ --env RUNTIME_DB="MYSQL" \ --env JDBC_USERNAME="root" \ --env JDBC_PASSWORD="新密码" \ --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&allowPublicKeyRetrieval=true" \ b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=\ --static_server_scheme=https\ --static_server_host=cdn.jsdelivr.net\ --static_server_port=\ --static_path=/gh/88250/solo/src/main/resources\
- 问题解决
4.1 参考
5.FRP内网穿透
- 执行完成后,应该就可以在本地局域网访问网站了,需要在公网里访问,这就需要Frp服务器了,我会单独出一篇帖子Frp服务器的搭建,届时会把链接加入本贴.
5.1需要准备的
- 具有公网IP的服务器(24岁一下:10元一个月)
- 已完成备案的域名(备案很方便,完全手机操作,审核需要3天左右,费用十几块钱一年)
没错,上述条件你都可以蹭别人的~只要别人愿意,哈哈
标签:Solo,solo,--,博客,server,mysql,docker,root 来源: https://blog.csdn.net/casojie/article/details/112385861