热门标签 | 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


推荐阅读
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
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社区 版权所有