热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

solo开源个人博客搭建记录

部署概述安装docker--docker安装mysql--docker安装solo--docker安装nginx--docker安装lute如果不做https的话ÿ

部署概述

安装docker --> docker安装mysql --> docker安装solo --> docker安装nginx -->docker安装lute如果不做https的话,只在本地测试,那么其实又MySQL和solo就够了,不需要nginx,nginx的作用只是将https请求代理至solo

在这里插入图片描述
架构大概就上面这样,访问流量通过公网到系统网络,再到docker网桥,然后访问nginx 443端口,nginx将流量转到本地的80端口,solo监听在80端口,然后solo通过JDBC协议访问MySQL数据库,nginx,solo,MySQL都是用的主机网络,所以在主机上都会监听对应端口。

安装docker
docker分为企业版(docker-ee)和社区版(docker-ce),阿里的Centos镜像源默认是docker-1.13,我们使用的是docker社区版,docker-ce-18.06是18年6月发布的,目前大多数企业都使用的这个版本,或者是docker-ce-18.09.

  • 添加docker镜像源

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 查看所有docker-ce版本
    yum list all --showduplicates docker-ce

  • 安装docker-ce-18.06

yum install docker-ce-18.06.1.ce-3.el7

  • 启动docker并设置为开机自启动

systemctl start docker
systemctl enable docker

  • 准备镜像

docker pull b3log/solo
docker pull mysql:5.6
docker pull nginx
docker images #查看

安装MySQL

# 安装mysql:5.6,直接docker run 他会自动去官方镜想下载
# MYSQL_ROOT_PASSWORD=你的数据库密码
docker run --name mysql -p 8306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

-p 8306:3306:8306是宿主机监听的端口,3306是MySQL容器监听的端口,因为我机器上有WordPress,所以80``3306是被占用的,所以换了一个,如果你本机3306端口没有被占用,就都写成3306就好


  • 创建数据库

# docker安装的mysql默认允许远程连接,可以使用xshell等软件连接数据库
# 进入容器mysql
docker exec -it mysql bash# 进入数据库 p后面跟你的密码
mysql -uroot -p123456# 创建数据库(数据库名: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安装solo

  • 如果你本机的80端口被占用了,可以用下面命令启动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:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8088 --server_scheme=http --server_host=192.168.16.4 --server_port=8088

参数说明--env JDBC_PASSWORD="123456" 将 123456 换成你的密码
--listen_port=8088 容器监听的端口
--server_scheme=http 请求方式,暂时使用 http,后面我们会换成 https
--server_host=192.168.16.4 你云主机的IP,如果你有域名可以写域名
--server_port=8088 云主机监听的端口

注意:listen_port的端口要和server_port端口一致,不然进入网页可能会出现 Latke 配置错误
命令成功执行没有报错的话,通过docker ps查看执行的容器列表中是否存在 solo,存在这表示启动成功,直接访问你的公网IP加:8088 即可访问你的博客,http://180.76.112.111:8088

  • 如果要使用https,就需要修改一下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:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
solo \
--listen_port=8080 \
--server_scheme=https \
--server_host=vlog.issue98.com \
--server_port=

–server_scheme=https使用https协议,因为使用了https协议,所以就要配置nginx代理

docker安装nginx

# 切换到服务器根目录
cd /
# 创建主目录
mkdir dockerData
# 创建文件
mkdir dockerData/nginx dockerData/nginx/conf dockerData/nginx/logs dockerData/nginx/www dockerData/nginx/ssl

dockerData/nginx 用于存放 docker 下 nginx 自定义文件
dockerData/nginx/conf存放 nginx 配置文件
dockerData/nginx/log 存放 nginx 日志文件
dockerData/nginx/www 存放 nginx 访问的资源文件
dockerData/nginx/ssl 存放 ssl 证书

  • 启动 nginx

docker run --name nginx -p 8001:80 -d --rm nginx
由于solo使用了宿主机的80端口,所以这里使用宿主机的8001端口

  • 导出配置文件

docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf
#导出配置文件 nginx.conf
docker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d
#导出配置文件 nginx.conf

执行docker stop nginx,会自动删除现在的 nginx 容器,然后执行如下命令

  • 启动一个 nginx 容器

docker run -d -p 80:80 -p 443:443 --name nginx-1 \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/ssl:/ssl/ \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx

  • nginx配置文件

server {listen 443;server_name vlog.issue98.com;ssl on;#charset koi8-r;#access_log /var/log/nginx/host.access.log main;ssl_certificate /ssl/vlog.pem; #两个证书文件的名字ssl_certificate_key /ssl/vlog.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;location / {proxy_pass http://vlog.issue98.com:8080;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
server{listen 80;server_name vlog.issue98.com;rewrite ^(.*) https://$host$1 permanent;
}

下载证书,nginx类型,然后放到dockerData/nginx/ssl目录下,名字和nginx配置文件里的匹配
docker 启用LUTE

  • 获取最新镜像

docker pull b3log/lute-http

  • 启动容器

docker run --detach --rm --network=host b3log/lute-http

  • 停止 solo

docker stop solo

  • 删除 solo

docker rm solo

运行下列命令,重启 solo,注意最后添加–lute_http=http://127.0.0.1:8249
如果你已经修改了solo的配置,添加了自己的文章等,不想丢失数据,可以用docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]命令来保存solo镜像到本地

例如

docker commit e044f5c083cc solo-vlog:0.1
# 然后启动的时候将b3log/solo换成solo-vlog:0.1就行,CONTAINER可以通过docker ps来查看

启动LUTE

docker run --detach --name solo-lute --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:8306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
solo-sibo:0.2 \
--listen_port=8080 --server_scheme=https --server_host=vlog.issue98.com \
--server_port= \
--lute_http=http://127.0.0.1:8249


推荐阅读
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 深入理解 JMeter 定时器
    本文详细介绍了JMeter中定时器的功能和使用方法,探讨了其在性能测试中的重要性,并结合实际案例解释了如何合理配置定时器以模拟真实的用户行为。文章还涵盖了定时器的执行顺序及其与其他元件的相互作用。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 本文介绍了如何在Mac操作系统中实现对NTFS文件系统的完整读写功能,包括必要的软件安装步骤和配置方法。 ... [详细]
  • 本文介绍了解决Oracle 10G数据库中ORA-12541 TNS: no listener错误的详细步骤。该错误通常发生在监听器服务未正确启动或配置不当的情况下,文章将指导您通过检查服务状态、配置注册表和启动监听器来解决问题。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 树莓派摄像头配置与应用指南
    本文详细介绍了如何在树莓派上配置和使用摄像头,包括启用摄像头接口、简单的图片和视频捕捉方法以及如何通过网络实时传输视频流。 ... [详细]
author-avatar
香音的茶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有