2019独角兽企业重金招聘Python工程师标准>>>

mattermost的server启动流程分为发布方式以及研发方式启动.这里将研发的方式启动.
先来熟悉一下mattermost的一些
Some useful  make  commands:
  • make run will run the server, symlink your mattermost-webapp folder and start a watcher for the web app
  • make stop stops the server and the web app watcher
  • make run-server will run only the server and not the client
  • make debug-server will run the server in the delve debugger
  • make stop-server stops only the server
  • make clean-docker stops and removes your Docker images and is a good way to wipe your database
  • make clean cleans your local environment of temporary files
  • make nuke wipes your local environment back to a completely fresh start
  • make package creates packages for distributing your builds and puts them in the ~/go/src/github.com/mattermost/mattermost-server/dist directory. First you will need to run make build and make build-client.
  • make megacheck runs the tool megacheck against the code base to find potential issues in the code. Please note the results are guidelines, and not mandatory in all cases. If in doubt, ask in the Developers community channel.
从官方的说明中可以看出,使用make run-server可以去启动服务端的运行.那我们先看一下make文件的写法:
run-server: start-docker ## Starts the server.
@echo Running mattermost for development
@echo goflags-----$(GOFLAGS)
@echo golinkerfile-------$(GO_LINKER_FLAGS)
@echo goplatformfile-------$(PLATFORM_FILES)
mkdir -p $(BUILD_WEBAPP_DIR)/dist/files
$(GO) run $(GOFLAGS) $(GO_LINKER_FLAGS) $(PLATFORM_FILES) --disableconfigwatch &
这个是run-server的目标,可以看出在做了一系列的准备工作之后使用go run的方式启动
那么真正执行的是那个文件呢,经过打印翻译过来其实是下面的命令:
go run -ldflags "-X github.com/mattermost/mattermost-server/model.BuildNumber=dev -X 'github.com/mattermost/mattermost-server/model.BuildDate=Mon Feb 18 07:46:00 UTC 2019' -X github.com/mattermost/mattermost-server/model.BuildHash=10f4a0fde307f594fb3eb7a3d4ebd8ec2c948f00 -X github.com/mattermost/mattermost-server/model.BuildHashEnterprise=none -X github.com/mattermost/mattermost-server/model.BuildEnterpriseReady=false" "./cmd/mattermost/main.go" --disableconfigwatch &
加了一大串的dflags 然后就是执行的文件了.可以看出执行的文件为:./cmd/mattermost/main.go执行的是这个文件.
再看这个文件的实现:
func main () {
     if err := commands. Run (os.Args[ 1 :]); err != nil {
        os. Exit ( 1 )
    }
}
其实很简单就是执行了Run 方法,这个方法是在root.go中实现的,代码如下:
func Run (args [] string ) error {
    RootCmd. SetArgs (args)
     return RootCmd. Execute ()
}
这个执行RootCmd这个命令,命令的定义如下:
var RootCmd = &cobra.Command{
    Use: "mattermost" ,
    Short: "Open source, self-hosted Slack-alternative" ,
    Long: `Mattermost offers workplace messaging across web, PC and phones with archiving, search and integration with your existing systems. Documentation available at https://docs.mattermost.com` ,
}
大家可以看看cobra.Command的实现,可以发现这个其实去执行他的RunE这个方法,但是这里并没有给它赋值,这个其实是在另外一个地方做的,这个是在server.go中赋值的:
func init () {
    mlog. Info ( "--------------------server command" )
    RootCmd. AddCommand (serverCmd)
     RootCmd.RunE = serverCmdF
}
这个init是在程序运行时进行初始化的,所以在Run执行前就以及初始化好了的.所以当程序执行Run之后就会执行这个serverCmdF这个方法.
后面就是server的初始化了,在下一篇再进行分析

转载于:https://my.oschina.net/u/1013544/blog/3011489

mattermost server的启动流程相关推荐

  1. JPOM - Server启动流程脚本初始化源码解析

    文章目录 地址 版本 Server启动流程&脚本初始化流程 地址 Gitee: https://gitee.com/dromara/Jpom 官网: https://jpom.io/ 一款简而 ...

  2. 【SemiDrive源码分析】【X9芯片启动流程】26 - R5 SafetyOS 之 LK_INIT_LEVEL_TARGET 阶段代码流程分析(TP Drvier、Audio Server初始化)

    [SemiDrive源码分析][X9芯片启动流程]26 - R5 SafetyOS 之 LK_INIT_LEVEL_TARGET 阶段代码流程分析(TP Drvier.Audio Server初始化) ...

  3. 高性能服务通信框架Gaea的详细实现--server启动流程

    为什么80%的码农都做不了架构师?>>>    #<i class="icon-file">Gaea启动过程</i> //程序入口com. ...

  4. Kubelet源码分析(一):启动流程分析

    源码版本 kubernetes version: v1.3.0 简介 在Kubernetes急群众,在每个Node节点上都会启动一个kubelet服务进程.该进程用于处理Master节点下发到本节点的 ...

  5. framework之Activity启动流程(基于Android11源码)

    一步步看,你就会对activity的启动流程有深刻的认知. 引言 Android11上,Activity的启动流程与Android10的实现(可以参考Activity的启动过程详解(基于10.0源码) ...

  6. Android 10.0 PackageManagerService(一)工作原理及启动流程-[Android取经之路]

    摘要:PackageManagerService是Android系统核心服务之一,在Android中的非常重要,主要负责APK.jar包等的管理. 阅读本文大约需要花费50分钟. 文章的内容主要还是从 ...

  7. Android10.0系统启动之Launcher(桌面)启动流程-[Android取经之路]

    摘要:上一节我们讲完了Android10.0的ActivityManagerService的启动流程,在AMS的最后启动了Launcher进程,今天我们就来看看Launcher的真正启动流程. 阅读本 ...

  8. Android 10.0 系统服务之ActivityMnagerService-AMS启动流程-[Android取经之路]

    摘要:上一节我们讲完了SystemServer的启动过程,这一节接着上一节的步骤,来讲解ActivityManagerService的启动过程. ActivityManagerService简称AMS ...

  9. 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- ...

最新文章

  1. Oralce 目录结构
  2. 用Tableau制作3D旋转地球
  3. 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)
  4. centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复...
  5. 大学编译原理试卷考试题
  6. 批量复制文件名-修改文件路径小工具
  7. 汇编语言第二课作业2.3
  8. 【java】Thread.Sleep 与 Thread.onSpinWait
  9. 各种集合key,value能否为null
  10. asp.net多语言设置方法
  11. python后端程序例子_Python MR程序示例
  12. 奈学教育CEO孙玄:成为一个有情怀的工程师,我的12点思考
  13. 唯物辩证法-矛盾论(普遍性+特殊性+斗争性+同一性)
  14. 6大常见家谱样本,尤其第4个,深受各大名门望族的喜爱!
  15. 中华通史.上古史-夏
  16. 微信小程序实现带参数的分享功能
  17. asp dotnet core 从零开始创建一个 WebApi 服务
  18. 以莺尾花数据集为例,探讨R模型部署之道
  19. tcl基本语法:中括号[ ]、大括号{ }、双引号“ ”
  20. 【光流评估】《Optical Flow Estimation using a Spatial Pyramid Network》2016 Tubingen, Germany

热门文章

  1. 舌尖上的新疆 | 论饭量大的新疆人是一种什么感觉······
  2. 营业日志 2020.5.20
  3. 游戏配音讲究动静结合
  4. 假如,你拥有这样的商务邮箱,你的工作方式将会改变!
  5. 一篇文章让你了解ADAS-HIL测试方案
  6. 途乐行入口页面html代码,途乐行旅游网站
  7. 惯性测量单元的原理和应用介绍
  8. 剑侠情缘测试版网络验证
  9. catia拐角止裂槽命令_CATIA知识整理
  10. VB种if语句的常见形式