1 Star 2 Fork 0

Fxtack / go-web-practic

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or Download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

GoWebPractic


⚠️ develop 分支重大更新

在新的 develop 分支中对项目布局进行了全面的重构。使得项目符合 golang-standards-project-layout 规范。关于该规范的详细内容参见:

该规范符合生产标准,因此值得进行项目布局的重构。此外还有其他修改:

  • 优化脚本
  • 同步更新 README.md

📑 简介

GoWebPractic 是一个学习项目。通过使用 Golang 的原生库实现一个简单的 Web 服务应用。

本项目是跟随 B 站 UP 主 软件工艺师 的视频 《Go Web 编程快速入门【Golang/Go语言】(完结)》来进行学习与编写的。

在视频的基础上,做出了一些修改:

  • 修整了项目文件结构。
  • JSON 文件完成配置。
  • 自定义 logger。
  • 编写了一些简单的脚本用于部署与维护。
  • 暂无数据库,如果有需要可以自己根据视频连入数据库。后续准备更新一个 SQLite3 数据库连进去。

本项目已经过测试与部署,Linux 主机部署指南在下文中。

公网项目演示: http:materialc.top:8000

项目结构:

go-web-practic:.
│  go.mod
│  GoWebPractic-linux
│  GoWebPractic-windows.exe
│  LICENSE
│  README.md

├─.idea
│  │  .gitignore
│  │  go-web-practic.iml
│  │  misc.xml
│  │  modules.xml
│  │  vcs.xml
│  │  workspace.xml
│  │
│  └─dictionaries
│          DELL.xml

├─config
│      config.json

├─log
│      error.log
│      info.log
│      warning.log

├─script
│  ├─linux
│  │      build_to_linux.sh
│  │      run_background_linux.sh
│  │      run_linux.sh
│  │      stop_run.sh
│  │
│  └─windows
│          build_to_linux.bat
│          build_to_windows.bat

├─src
│  ├─config
│  │      config.go
│  │      config_test.go
│  │
│  ├─controller
│  │      controller.go
│  │      controller_test.go
│  │      index.go
│  │      look.go
│  │      welcome.go
│  │
│  ├─log
│  │      log.go
│  │
│  ├─main
│  │      main.go
│  │
│  ├─middleware
│  │      cross.go
│  │      log.go
│  │      timeout.go
│  │
│  └─template
│          index.tmpl
│          look.tmpl
│          template.go
│          template_test.go
│          test.tmpl
│          welcome.tmpl

└─statics
    ├─css
    ├─html
    ├─img
    │      favicon.ico
    │      golang-down.png
    │      golang-right.png
    │      golang.png

    ├─js
    └─plugins
        ├─bootstrap
        │  ├─css
        │  │      bootstrap.min.css
        │  │
        │  └─js
        │          bootstrap.min.js

        └─jquery
            └─js
                    jquery.min.js

⚠ 注意

以下几点是项目目前的问题 或者说是拿来做期末项目的时候要注意的东西

  • 项目使用 IDEA 开发的,其他 IDE 的迁移情况未知。
  • 只有 main.go 里面写了一点点注释,其他文件的注释以后更新。
  • 当前项目中的路由还有界面非常少,需要可以自己添加。
  • 没有数据库。
  • shell 脚本写的比较 low。

还在持续学习,后面会补上这些坑。


🔧 部署指南

🔨 编译

首先你得确保你安装好了 Golang 的环境。

如果你修改了项目,那么你就需要重新编译,得到可执行文件,才能部署运行。

Golang 的交叉编译提供了很大的便利,这使得我们可以在 Windows 系统下编译出可以在 Linux 环境下运行的可执行文件。

  • 如果你是 Windows 平台下进行编译
    • 项目下 script/windows 文件夹下运行 build_to_windows.bat,将会在项目目录下生成 GoWebPractic-windows.exe 文件。项目根目录中初始带了这个文件,再次编译会覆盖根目录中原有的同名文件。
    • 项目下 script/windows 文件夹下运行 build_to_linux.bat,将会在项目目录下生成 GoWebPractic-linux 文件。该文件可以在 linux 系统下运行。再次编译会覆盖项目根目录中原有的同名文件。
  • 如果你是 Linux 平台下进行编译
    • 项目下 script/linux 文件夹下运行 build_to_linux.sh(设置权限为可运行才能运行),执行后项目根目录下生成 GoWebPractic-linux 可执行文件。

📝 配置

本项目使用 JSON 文件来进行配置。

查看 config/conifg.json 配置语义如下表,根据需求修改。

配置字段 语义
static 静态文件的路径
template go 模板的路径
address 服务启动的地址 (默认为空,可以实现公网部署)
port 服务启动的端口
pprofPort 性能监控的服务的端口
handleTimeoutSecond request 处理超时时间(该配置在项目中未使用,作保留)
trace trace logger 输出日志的路径(项目中未使用,作保留)
info info logger 输出日志的路径
warning warning logger 输出日志的路径
error error logger 输出日志的路径

⚙ 运行

  • 如果你是 Windows 平台下运行

    点击项目根目录下的 GoWebPractic-windows.exe 开始运行。

  • 如果你是 Linux 平台下运行

    Linux 下可以一般运行,和后台运行和作为服务运行,在 script/linux 中准备了前两种运行方式的脚本和停止程序的脚本。如果你想写作服务,可以参照简介中的视频来完成。

    • 运行 run_linux.sh 。服务将运行在终端,随着终端的关闭,服务也就关了。

    • 运行 run_background_linux.sh 。服务将在后台运行,即使终端关闭,服务也将继续运行。

      你可以通过 ps -aux | grep GoWebPractic 来查看后台的服务跑起来没有

    • 运行 stop_run.sh 。会把后台的服务关掉。

运行成功会看到以下提示(以下图片为 Ubuntu 云服务器的终端运行截图):

截图

可以用 curl localhost:8000/welcome 测试一下,将会返回 welcome 界面的 html。

🔍 访问

本机可以访问 http://localhost:8000http://localhost:8001/debug/pprof。

前者是首页,后者是性能监控界面。

如果你是部署在服务器上,想要通过公网访问,记得设置防火墙开放相应的端口。如果是云服务器还要打开安全组。


若有问题可以邮箱联系我:1244875112@qq.com

Repository Comments ( 0 )

Sign in to post a comment

About

这是一个使用 Go 原生库编写的 Web 服务器。 是通过观看 B 站 up 主软件工艺师的视频 《Go Web 编程快速入门【Golang/Go语言】(完结)》学习编写的。 expand collapse
Go and 3 more languages
MIT
Cancel

Releases (1)

All

Contributors

All

Activities

Load More
can not load any more
Go
1
https://gitee.com/Fxtack/go-web-practic.git
git@gitee.com:Fxtack/go-web-practic.git
Fxtack
go-web-practic
go-web-practic
master

Search