All Projects → yangsoon → Labac

yangsoon / Labac

简单搭建一个实验室网站 👏🐳 show your Lab achievement

Programming Languages

golang
3204 projects

Labels

Projects that are alternatives of or similar to Labac

Go Project Sample
Introduce the best practice experience of Go project with a complete project example.通过一个完整的项目示例介绍Go语言项目的最佳实践经验.
Stars: ✭ 344 (+602.04%)
Mutual labels:  gin
Snake
🐍 一款小巧的基于Go构建的开发框架,可以快速构建API服务或者Web网站进行业务开发,遵循SOLID设计原则
Stars: ✭ 615 (+1155.1%)
Mutual labels:  gin
Gowebsocket
golang基于websocket单台机器支持百万连接分布式聊天(IM)系统
Stars: ✭ 937 (+1812.24%)
Mutual labels:  gin
Go Admin
基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(包含了:多租户的支持,基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建,定时任务等)3分钟构建自己的中后台项目;文档:https://doc.go-admin.dev Demo: https://www.go-admin.dev Antd beta版本:https://preview.go-admin.dev
Stars: ✭ 5,439 (+11000%)
Mutual labels:  gin
Go Admin
A golang framework helps gopher to build a data visualization and admin panel in ten minutes
Stars: ✭ 5,580 (+11287.76%)
Mutual labels:  gin
Wblog
基于gin+gorm开发的个人博客项目
Stars: ✭ 763 (+1457.14%)
Mutual labels:  gin
Go Gin Boilerplate
A starter project with Golang, Gin and DynamoDB
Stars: ✭ 330 (+573.47%)
Mutual labels:  gin
Ginlearn
Gin
Stars: ✭ 34 (-30.61%)
Mutual labels:  gin
Learning tools
Go 学习、Go 进阶、Go 实用工具类、Go-kit ,Go-Micro 微服务实践、Go 推送
Stars: ✭ 605 (+1134.69%)
Mutual labels:  gin
Gin Stats
Gin's middleware for request stats
Stars: ✭ 24 (-51.02%)
Mutual labels:  gin
Go Gin Example
An example of gin
Stars: ✭ 4,992 (+10087.76%)
Mutual labels:  gin
Authz
gin-authz is an authorization middleware for Gin
Stars: ✭ 508 (+936.73%)
Mutual labels:  gin
Go
【Go 从入门到实战】学习笔记,从零开始学 Go、Gin 框架,基本语法包括 26 个Demo,Gin 框架包括:Gin 自定义路由配置、Gin 使用 Logrus 进行日志记录、Gin 数据绑定和验证、Gin 自定义错误处理、Go gRPC Hello World... 持续更新中...
Stars: ✭ 890 (+1716.33%)
Mutual labels:  gin
Gin Oauth2
Middleware for Gin Framework users who also want to use OAuth2
Stars: ✭ 351 (+616.33%)
Mutual labels:  gin
Hot Comment
Go、Gin、Elasticsearch开发的云音乐歌手、歌曲、评论搜索API,线上演示地址在右边:
Stars: ✭ 28 (-42.86%)
Mutual labels:  gin
Tgram
typegram: open source publishing platform
Stars: ✭ 340 (+593.88%)
Mutual labels:  gin
Go Gin Api
基于 Gin 进行模块化设计的 API 框架,封装了常用功能,使用简单,致力于进行快速的业务研发。比如,支持 cors 跨域、jwt 签名验证、zap 日志收集、panic 异常捕获、trace 链路追踪、prometheus 监控指标、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、gormgen 代码生成工具、graphql 查询语言、errno 统一定义错误码、gRPC 的使用 等等。
Stars: ✭ 730 (+1389.8%)
Mutual labels:  gin
Pinecms
基于Iris/Gin+XORM+Easyui(后端)开发的CMS管理系统,权限管理,页面自动静态化,标签化,数据库备份,上传下载, 多主题切换 (正在重构后端页面,新功能敬请期待)
Stars: ✭ 37 (-24.49%)
Mutual labels:  gin
Microservice learning
从零开始微服务框架使用
Stars: ✭ 31 (-36.73%)
Mutual labels:  gin
Goforum
Let's go a forum
Stars: ✭ 23 (-53.06%)
Mutual labels:  gin

Welcome to LabAC 👋

Version

展示实验室论文成果

基于gin, vue, docker-compose构建网站服务。网站效果图请点击这里查看。

目录

  1. 部署指南
  2. 迁移指南
  3. 开发指南
  4. 技术栈
  5. TODO
  6. 效果图

部署指南

  1. 首先在要部署的机器上安装docker和docker-compose, docker的安装请根据机器系统参考网上的安装教程,docker-compose的安装建议使用 pip安装 (如果docker-compose下载较慢输入下面的代码,切换到豆瓣镜像)。

    pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple docker-compose
    
  2. 从仓库下载源码

    git clone https://github.com/yangsoon/LabAC.git
    
  3. 如果你想快速搭建网站请 直接跳到第4步 ,但是如果机器上已经 了golang1.12和nodejs的环境, 并且 想试着在这个项目基础上进行开发 请继续阅读,否则查看步骤4。

    因为golang官方docker镜像太大,为了减轻镜像下载时网络和机器硬盘空间的压力,后端服务的docker镜像选择基于Scratch构建,所以在启动服务之前请先在本地编译好后端代码。

    同时前端代码是使用vue-cli脚手架编写,build之后的文件没有放在仓库里面。所以如果有node环境,请先自己build。请参考 开发指南

    具体步骤如下(前提是机器上已经有了golang1.12和nodejs的环境):

    1. 进入labac-gin目录,输入下面指令,会得到labac的可执行文件

      CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o labac .
      

      编译所生成的可执行文件会依赖一些库,并且是动态链接。在这里因为使用的是 scratch镜像,它是空镜像,因此我们需要将生成的可执行文件静态链接所依赖的库。 --煎鱼的博客

    2. 进入labac-front目录

      npm install
      npm run build
      
  4. 请到release页面下载相关文件,把解压后的labac放在labac-gin文件夹内 ,dist文件放在labac-front文件夹内。

  5. 在启动服务之前,有几个配置项需要配置一下

    1. labac-gin/conf/app.ini文件, 修改JWT_SECRET[admin]下的值,JWT_SECRET是生成token的密钥请随机输入字母和数字的组合(这里我用了我的学号),而[admin]下的值就是登录网站时使用的用户名和密码。

      RUN_MODE = debug
      JWT_SECRET = zy1806311 
      ...
      [admin]
      USERNAME = admin
      PASSWORD = admin
      
    2. docker-compose.yml, 将yml文件中的ports端口映射部分改成80:80,docker-compose启动时,如果端口80被占用,可以修改为其他端口, 该选项一般不需要修改。除非出现执行第6步之后出现因为端口被占用导致的无法启动的问题。

      version: "3"
      services:
        labac-front:
          image: "nginx:latest"
          volumes:
            - ./labac-front/dist:/usr/share/nginx/html
            - ./compose-conf/nginx.conf:/etc/nginx/conf/nginx.conf
          ports:
            - "80:80"
      ...
      
  6. 启动服务,在项目根目录下执行:

    docker-compose up -d
    
  7. 放进大象,开玩笑的。这时候输入ip就能直接访问了。

迁移指南

如果遇到了机器故障,需要更换机器部署应用,但是又要保证数据一致性的话,请参考下面操作。操作的前提是原本机器上的文件没有损坏,需要保证项目根目录下的resourcedb文件完好,这两个文件分别存储着论文PPT资源和redis数据库持久化数据。

  1. 在新机器上下载项目代码
  2. 将原本机器上的resourcedb文件拷贝,并覆盖新机器上项目对应的文件。
  3. 查看 部署指南 部署

开发指南

本项目采样前后端分离的形式进行开发。如果需要修改前端代码,请先配置好前端环境,你需要安装nodejs, vue-cli3。后端使用golang1.12,然后用docker-compose部署,下面列出我的开发环境,可以参考一下,前端应该对版本号没有严格的要求。

软件 版本号
node v11.0.0
npm v6.11.3
vue-cli3 v3.11.0
golang v1.12.8
docker v19.03.2
docker-compose 1.24.1

环境配好之后,就可以开发啦。

  1. 前端: 本项目使用前后端分离的方式开发,你需要进入到labac-front目录下面执行npm install安装依赖,因为前后端要分别启动,所以前端启动之前要进入/labac-front/src/store/modules目录下面修改app.js文件中的baseUrl,换成后端的地址。例如http://127.0.0.1:8000

    const app = {
      state :{
          activeMenu: "paper",
          activeTab: "viewPaper",
          editPaper: null,
          baseUrl: "",
      },
    

    后面就可以执行npm run server启动啦。

  2. 后端启动的时候,进入labac-gin文件夹中执行go run main.go就可以启动,第一次执行的时候会下载依赖,可能比较慢。所有的api逻辑都放在了labac-gin/routers/api/paper.go中,labac-gin/routers/router.go存储着路由的映射关系。后端相关配置项放在了labac-gin/conf/app.ini文件中。

  3. 本项目使用了3个docker容器,nginx容器上放静态文件,并将请求转发给存放后端容器中,redis容器负责存放数据。

  4. 为了方便迁移,将一些相关文件从容器映射到本地,迁移的时候附带这这些文件就行。

技术栈

本项目前端代码使用Element-基于 Vue 2.0 的桌面端组件库构建,后端使用golang编写的web框架gin提供restful api服务, 使用redis存储必要的数据。整个服务使用docker-compose部署。

  1. 前端 vue+vuex+vue-router+axios+element
    1. 既然用vue写前端了,不管用到用不到都要上vue全家桶啦,前端没有什么想说的,基于一个理念就行:简单就是美,其实色彩越单调,结构越简单越好。
    2. 开发的时候,突然发现加入一些好看的图标,能够极大的美化页面,因为element自带的icon种类太少,我就从阿里的icon库里面选择了一些比较好的icon。发现效果确实不错,大家以后也可以使用这上面的图标。
  2. golang(gin)
    1. 后端 golang(gin) 之前一直用python写后端,这次第一次试水了golang,发现写起来并没有很难受,感觉gin写后端很容易上手,并不比flask或者tornado差。
    2. 而且golang的goroutine和channel简直不要太爽(这里没有用到,只是单纯的想夸一下golang)。
    3. 学习的时候,参考的这篇博客,写的很不错。
  3. docker-compose(nginx+golang+redis)
    1. 因为老板想让部署和迁移都比较方便,那就毫无疑问上docker啦,把一些数据映射到宿主机,迁移的时候,把容器映射到宿主机的文件拷贝出来再部署就可以恢复数据了。
    2. 其中我将前端放在nginx容器上,并用nginx做一层反向代理到golang容器中,其实这里的golang并不是一个golang的环境,只是存放了后端编译好的可执行程序。

TODO

  • [ ] 添加首页UI和首页可编辑功能

效果图

论文集

编辑-添加

Author

👤 yangsoon

Show your support

Give a ⭐️ if this project helped you!


This README was generated with ❤️ by readme-md-generator

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].