docker一键部署网址导航+博客+管理系统(强势开源)

news2024/11/28 10:48:04

花森门户

在线地址(首次加载请耐心等待):http://n.huasen.cc/

码云仓库地址:https://gitee.com/HuaSenJioJio/huasenjio-compose

Github仓库地址:https://github.com/huasenjio/huasenjio-compose

huasenjio 系列网站增添新作品,(huasenjio-compose)官方仓库,基于 vue.js(2.6.11)、node.js、docker-compose、redis、mongodb、jenkins 组合构建的容器应用,原创正式开源!🎉🎉🎉

平台简介

目前门户由浏览器主页、博客系统、后台管理系统组成,后期陆续推出低代码编辑器、日历待办、协同流程图模块。浏览器主页收录资源网站,涵盖了日常生活、娱乐、学习、影视、考研、工作、科技、实用工具等领域。博客系统,定期分享实用教程、计算机知识、资源软件等文章,致力于提供高效上网冲浪环境的公益性平台!

界面功能预览

浏览器主页

浏览器主页收录实用的资源网站,支持用户自定义收录、右键换色、更换壁纸、极简模式、多引擎搜索、站内链接检索、多设备适配显示等功能,生活与工作必备神器!

(1) 站内链接检索 + 右键换色

bwT5saFxQz2RYon

(2) 极简模式 + 搜索引擎切换

xM3tNHzoKils7P5

(3) 管理自定义收录网站

woaujxGCKnWt8PB

(4) 个性化皮肤定制

Lj3gREk8dnxbIHZ

(5) 手机端 + 平板端 + 多设备响应式适配

amP73Q5ctpU9sf4

博客系统

文章分享模块,定时更新学习路线、实用教程、资源书籍等,采用 markdown 语法展现,支持锚点定位目录。

(1) 博客首页

W5NyJahVl2pM1mi

(2) 文章阅读

FBDAtSpqlM86Cuz

后台管理

门户后台管理系统,支持数据统计、宿主机状态实时监听、markdown 文章发布、订阅网链栏目管理、账户管理、黑名单管理、日志管理、文件管理、权限管理等功能,达到现有功能几乎全面覆盖管理。

(1) 首页

8ZmCz5AlPfXYcLy

(2) 文章发布

Jv2lAmTXwPRBtx6

(3) 订阅管理

VxA8QkUmCW6aPdF

(4) 文件管理

UdWPTGeXF4hyxza

技术架构

客户端基于 Vue.js(2.6.x)、ElementUI、Tailwindcss、Axios 等技术开发的 Web 应用,服务端基于 Node.js、Mongodb、Redis、Express 开发的服务框架,使用 Nginx 作为代理服务器转发请求,选择 jenkins 实现 CI/CD,借助 docker 进行一键容器化部署。

PuyTDEVxoYajkOn

快速部署

测试环境

  1. Centos 7.4;
  2. 腾讯云服务器 1 核 2G(学生机);

安装依赖

git

安装git版本管理工具,直接拉取源码到服务器,免去通过xfpt上传源码文件的繁琐过程。

1)安装 wandisco 仓库包

yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm

2)安装 git 安装包

yum -y install git

3)验证版本

git version

docker

1)卸载旧版本

yum remove -y docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-selinux \
  docker-engine-selinux \
  docker-engine

2)安装依赖工具包

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

3)设置 yum 源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast

4)安装 docker

yum install -y docker-ce

5)启动 docker

systemctl start docker.service

6)设置开机自启动

systemctl enable docker.service

7)设置权限

sudo chmod a+rw /var/run/docker.sock

8)查看版本

命令行执行docker version如下命令,输出有 Client 和 Server 服务,则说明运行正常。

1PzjM5mTcHDUByW

9)安装 vim 工具

如果系统没有自带 vim 编辑器,则使用如下命令进行安装。

yum -y install vim*

10)添加镜像源配置文件

默认通过官方镜像源拉取,速度特别慢,并且容易卡死,所以需要替换镜像源,如果目录下不存在 daemon.json 配置文件,则新建配置文件命令如下:

// 1.修改配置文件命令
vim /etc/docker/daemon.json
// 2.写入配置
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "ipv6":false
}
// 3.重载配置
sudo systemctl daemon-reload
// 4.重启 docker
sudo systemctl restart docker

docker-compose

安装docker-compose服务,负责对docker容器进行集群和快速编排。

1)下载资源

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2)设置权限

sudo chmod +x /usr/local/bin/docker-compose

3)建立软连接

不建立软连接,可能无法使用docker-compose命令。

ln - s /usr/local/bin/docker-compose/usr/bin/docker-compose

4)查看版本

docker-compose --version

运行容器

通过上一步,我们已经安装好git、docker、docker-compose服务,接下来我们拉取源码,直接运行容器。

1)通过 git 拉取源码

git clone https://github.com/huasenjio/huasenjio-compose.git

2)进入 huasenjio-compose 目录

cd huasenjio-compose

4)运行容器

执行运行容器命令后,docker将自动拉取安装配置nginx、mongodb、redis、jenkins、后端服务,第一次会比较缓慢,请耐心等待,如果遇到卡死的情况,使用ctrl + c终止命令,然后重复执行运行容器命令即可。

docker-compose -f docker-compose-open.yml up -d

5)访问网站的关键信息

// 站点链接
前台官网:协议://ip/portal
后台管理:协议://ip/admin

// 默认信息
后台管理账号/密码:admin@qq.com/12345
Mongodb数据库用户/密码:root/Mongo12345*
Redis密码:Redis12345*

常见 QA

1)为什么容器运行失败?

运行容器时,请确保80、37017、7379、8080、3000、8181端口不被占用,如果不幸已经有服务占用端口,则需要修改docker-compose-open.yml中对应容器的端口后,重新执行运行容器命令。

2)运行成功,但是还是无法访问到站点?

如果服务正常启动,但是无法访问站点,需要检查一下服务器防火墙和安全组配置,是否限制80端口。

3)用户注册时,为什么邮箱验证码无法发送?

由于邮箱验证码功能依赖 nodemailer 库实现,需要部署之前修改/huasenjio-compose/huasen-server/config.js中的QQ_MAIL配置项,更改成自己的申请邮箱地址和 mtp 通行码。

4)mongodb数据库的存储位置?

工程采取容器化部署,已经配置目录映射,项目根目录下huasen-mongo/volume文件夹,就是数据库的数据文件夹。

帮助命令

容器

huasenjio-compose 目录下的终端执行

1)停止容器并且删除镜像

docker-compose down

2)重新构建镜像(不使用缓存)

docker-compose build --no-cache

3)重启某个容器

docker-compose restart 容器名(nginx|mongo|redis|server|jenkins)

4)停止容器并且删除镜像

docker-compose down

linux

1)防火墙操作

开启防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld
查看防火墙:systemctl status firewalld
查看指定端口:firewall-cmd --query-port=8080/tcp
打开指定端口:firewall-cmd --add-port=8080/tcp --permanent
重载端口数据:firewall-cmd --reload
关闭指定端口:firewall-cmd --permanent --remove-port=8080/tcp

2)查看端口运行服务

netstat -anp | grep 端口号

在线视频安装教程

1)通过docker-compose安装教程

https://www.bilibili.com/video/BV1G44y1Q7MV

2)通过宝塔面板安装教程

即将更新

开发者指南

目录结构

├── huasen-mongo       // mongodb 数据库配置和数据
├── huasen-nginx       // nginx 配置
├── huasen-redis       // redis 配置和数据
└── huasen-server      // 后端服务
  ├── app.js     // 服务入口文件
  └──config.js   // 服务配置文件
├── huasen-store       // 静态文件仓库
├── huasen-jenkins     // jenkins 配置
├── docker-compose-open.yml // docker-compose 编排配置文件
└── huasen-frontend    // 前端界面源码
  ├── admin  // 后台管理界面源码
  ├── portal // 前台站点源码
  └── guide  // 个人引导页源码

本地调试

前端

/huasenjio-compose/huasen-frontend/portal 目录下终端执行

1)安装依赖

npm install

2)运行程序

npm run server

3)打包构建

npm run build

后台管理

/huasenjio-compose/huasen-frontend/admin 目录下终端执行

1)安装依赖

npm install

2)运行程序

npm run server

3)打包构建

npm run build

容器启动

根目录下终端执行

1)构建容器

docker-compose -f docker-compose-open.yml up -d

后台服务

/huasenjio-compose/huasen-server 目录下终端执行

1)安装依赖

npm install

2)运行程序

npm run dev

联系我们

由于涉及知识面较广,文字讲解篇幅过大,可以关注我的 Bilibili 账号,后续更新视频教程,感兴趣的小伙伴可以添加站长微信 ,进入前端技术交流群!

企鹅 🐧:184820911

微信 😸:huasencc(站长邀请进入前端交流群)

邮箱 📮:184820911@qq.com

哔哩哔哩:花森酱 JioJio

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSCCTF-2019-Qual-FlaskLight

网页里有提示 参数为search,GET传值 测试{{7*7}} 存在SSTI模板注入,在这里简单介绍python魔法函数,与Flask内置 __class__ 返回类型所属的对象 __mro__ 返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。 __bas…

Dropout的深入理解(基础介绍、模型描述、原理深入、代码实现以及变种)

目录前言一、DropOut简介1-1、DropOut论文图解1-2、DropOut介绍1-3、DropOut产生动机1-4、DropOut流程简介二、模型描述2-1、公式描述2-2、神经网络图描述2-3、一些需要注意的问题!三、Dropout代码实现以及相关变种(部分有实现)3-1、Dropout实…

Part 4 描述性统计分析(占比 10%)——上

文章目录【后续会持续更新CDA Level I&II备考相关内容,敬请期待】【考试大纲】【考试内容】【备考资料】1、统计基本概念1.1、统计学的含义及应用1.1.1、统计学的含义1.2.1、统计学的应用1.2、统计学的基本概念1.2.1、数据及数据的分类1.2.2、总体和样本1.2.3、…

体系结构原则

构建和设计软件解决方案时应考虑到可维护性。 本部分概述的原则可帮助指导你作出体系结构决策,生成简洁、可维护的应用程序。 一般而言,在这些原则的指导下构建的应用程序各部分间可通过显式接口或消息传送系统进行通信,并非松散耦合的离散组…

WinRAR自解压实现安装程序并开机自启

1、选择要打包的文件,右键添加到压缩文件,勾选“创建自解压格式压缩文件” 2、切换到高级,选择“自解压文件选项” 3、常规 - 指定解压缩路径 4、安装 - 解压缩后运行指定程序 5、模式 - 隐藏全部 全部显示:显示启动对话框&#…

bcript 算法

一、简介 今天要给大家介绍的一种“加密”算法叫做 bcrypt,bcrypt 是由 Niels Provos 和 David Mazires 设计的密码哈希函数,他是基于 Blowfish 密码而来的,并于 1999 年在 USENIX 上提出。 除了加盐来抵御 rainbow table 攻击之外&#xf…

Vue3电商项目实战-首页模块6【22-首页主体-补充-vue动画、23-首页主体-面板骨架效果、4-首页主体-组件数据懒加载、25-首页主体-热门品牌】

文章目录22-首页主体-补充-vue动画23-首页主体-面板骨架效果24-首页主体-组件数据懒加载25-首页主体-热门品牌22-首页主体-补充-vue动画 目标: 知道vue中如何使用动画,知道Transition组件使用。 当vue中,显示隐藏,创建移除&#x…

C语言基础(十)—— 文件操作

1. 概述1.1磁盘文件和设备文件磁盘文件指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。设备文件在操作系统中把每一个与主机相连的输入、输出设备看作是一个文件,把它们的输入、输出等同于对磁盘文件的读和写。1.2 磁盘文件的…

【C++】nullptr C++中的空指针(C++11)

前言 在平时我们写C/C代码时你可能会看到有人使用NULL表示空指针,也有人用nullptr表示空指针,那么你可能会很好奇它们都是空指针吗?为什么空指针有两种写法?下面就带你了解这背后的原理。 我们都知道NULL是C语言中的空指针&#x…

JDK14 新特性详解,2020-03-17 正式发布

预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。 最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。 1、Switch(最终版) 和之前…

从线程原理的角度来看C++内存的使用

文章目录线程的内存结构栈帧线程/进程调度线程的进一步使用线程安全和可重入一般的内存使用static变量使用new关键字,访问堆上的内存类中的内存使用从上一篇文章来看,线程的使用是比较简单的。但是在c环境下使用线程,最难也是最麻烦的点在于对…

云原生安全2.X 进化论系列|揭秘云原生安全2.X的五大特征

随着云计算技术的蓬勃发展,传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展,成为赋能业务创新的重要推动力,并已经应用到企业核心业务。然而,云原生技…

Mysql 数据类型

1、数值数据类型 1.1 整数类型(精确值) INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT MySQL支持SQL标准的整数类型INTEGER (或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINT、MEDIUMINT和BIGINT。下表显示了每种整数类型所需的存储和范围。…

13.计算机视觉

13.计算机视觉 目录 图像增广 常用的图像增广方法 翻转和裁剪改变颜色结合多种图像增广方法 使用图像增广进行训练 多GPU训练 总结 微调 步骤 热狗识别获取数据集定义和初始化模型微调模型 总结 目标检测和边界框 边界框总结 目标检测数据集 下载数据集读取数据集演示总结 锚…

【3】深度学习之Pytorch——如何使用张量处理表格数据集(葡萄酒数据集)

张量是PyTorch中数据的基础。神经网络将张量输入并产生张量作为输出,实际上,神经网络内部和优化期间的所有操作都是张量之间的操作,而神经网络中的所有参数(例如权重和偏差)也都是张量。 怎样获取一条数据、一段视频或…

Java面试知识点

工作也有好些年了,从刚毕业到前几年看过无数的面试题,总想着自己写一个面试总结,随着自我认识的变化,一些知识点的理解也越来越不一样了。写下来温故而知新。很多问题可能别人也总结过,但是答案不尽相同,如…

纯css实现loading加载中(多种展现形式)

前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,纯 css 实现 loading 加载中(多种展现形式),下面一起看看吧。 1. 常规 loading 实…

Linux系统之cuda 11情况下如何配置pytorch 10.2

由于目前pytorch1.8.2只能支持到10.2的版本,但ubuntu最新的系统驱动直接支持了cuda 11.4, 并且cuda tooklit支持的默认下载也是11.0。1、确认NVIDIA驱动安装lspci|grep NVIDIA1. 需要先降低cuda tooklit的版本(卸载新版本)cuda-uninstaller in /usr/loca…

统一附件存储MINIO部署使用

一、基于docker环境部署 1、创建docker-compose配置文件 1)创建 docker-compose-minio.yml文件,内容如下: version: 3.7# Settings and configurations that are common for all containers x-minio-common: &minio-commonimage: quay…

结构体+枚举+联合体

目录 一、结构体的声明 (一)结构的基础知识 (二)结构的声明 (三)特殊的声明 (四)结构的自引用 1. 一个结构体内部包含一个类型为该结构本身的成员(不合法&…