Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
wsl开发环境搭建_Net Web项目安装包制作,希望能够帮助你!!!。
https://gitee.com/shxch1205/webrose(开源地址)
www.webrose.net.cn(官网,有在线Demo与API文档)
如果没耐心看文字介绍,点击此链接看:视频介绍,在工程目录文件/docs/1-开发环境搭建说明.docx也有更详细介绍。
现在软件开发需要的技术栈非常多,所以搭建本地开发环境能把系统跑起来已经成了一个比较复杂的事情,有时甚至成了推广一个开源项目是否顺利的第一道难关,即只有搭建环境足够简单顺利人们才有兴趣继续了解。
所以WebRose在这方面秉持“低代码”极简思想,做了许多创新,可以做到零配置,一键解压绿色版,分分钟就能搭建好跑起来,即想办法把环境搭建做到简单到不能再简单。
具体主要创新点有以下几点:
如果简单几句话概括环境搭建就是:第一步解压Rar环境工具、第二步启动MySQL、第三步启动Web服务器、第四步在Idea中编译并启动SpringBoot服务类。
然后就全部OK了,中间每一步都不要做任何配置。
下面具体一一详细说明(因为内容讲解了设计初衷,所以有的文字多了一点)。
https://gitee.com/shxch1205/webrose.git
在Idea中直接导入上述地址,或从Gitee网站下载Zip文件解压后导入Idea,两种方式均可,这里不详细说明。
这是关键第一步,如果创建名为D:\ABCWorkSpace\webrose这样一个两层目录(注意大小写),然后把工程就导入到这个目录下,则就可以不要修改后面任何配置(即零配置)一键解压可运行,原因就是后面的一些命令中的路径变量预设的就是这个路径名。
所以刚开始为了更顺利跑通,建议先在这个默认目录下搭建,等熟悉后再修改配置使用其他任意目录肯定也是没问题的。
Gitee下载后整个工程目录结构如下图:
其中RunTimeEnv目录下有几个Rar文件,就是运行环境工具,理论上直接解压后就可以。
但如果直接解压在当前Idea工程文件夹下,会造成Idea建索引文件,因为文件数量太多非常耗时,而且这些文件其实是外部环境工具软件,不属于工程开发用文件,没必要建索引,所以最好的办法就是复制到工程外某个目录进行解压。所以在目录下还特意写了个CopyFile.cmd,把文件复制到D:\ABCWorkSpace\webroseEnvTemp目录,双击此命令即可,命令内容如下:
md D:\ABCWorkSpace\webroseEnvTemp copy .\*.rar D:\ABCWorkSpace\webroseEnvTemp
如果手工创建这个临时目录,然后手工复制,当然也是可以的。
之所以必须叫这个目录名,也是因为后面一些命令参数中的路径也是预设为这个名字的,这样就可以零配置。
拷贝到临时目录后,手工直接解压各个Rar文件至当前文件夹就可以了,不要做任何其他配置,截图如下:
上一步解压各个Rar后,启动MySQL非常简单,因为这个MySQL已做成绿色解压版,只要直接进入目录MySQL5_1_57双击其中执行命令【★★MyStart-MySQL★★.cmd】即可,启动后界面如下:
MySQL监听端口是5306,用户名是root,密码是,并自带了两个Demo演示库webrose_crm,webrose_ehr,不要再安装库。
之所以把整个MySQL做成绿色解压版全部上传Gitee库,而不像有的框架是提供一个.sql文件,然后执行SQL安装到自己的MySQL数据库中,就是为了简化数据库环境这一步,因为根据经验,每个人电脑上的MySQL版本各不一样(字符集也可能不同),用户名密码肯定也不一样,然后肯定要配置数据源等一堆注意事项,经常有各种各样的小问题,所以上传整个库直接解压是最稳定最简单最傻瓜操作的。
之所以选择一个低版本的MySQL是为了减少整个rar文件的大小,这样Gitee上传下载更快,熟悉以后可自行导入自己偏好的某个高版本的MySQL,但其实这个版本的MySQL也是一个经典稳定版本,完全够用好用的。
MySQL这个目录可以再拷贝到其他任意目录,直接双击启动命令就行,因为这是一个绿色解压版的,无需任何配置。
前后端分离架构前端要启动一个Web服务器,在生产环境现在一般是Ngnix或Apache这样专业的Web服务器,开发环境就是根据个人偏好自由选择,只要能跑起来就行,我们选择了绿色解压版TomCat,启动方法就是进入TomCat5.5.23目录双击执行命令【MyStart-TomCat.cmd】即可(不要做任何配置),启动后界面如下:
TomCat监听端口是5001,启动后系统访问入口地址是:
http://127.0.0.1:5001/webrose/framework/login.html,用户名/密码:xch/1
注意要同时启动好SpringBoot后端服务,才可以正式登录,否则登录图片加载报错。
之所以选择TomCat,主要就是因为这是个十分老牌的Web/Java服务器,极其稳定可靠,不像有的Web服务器还时不时发生奇怪的缓存刷新等问题,配置也极其简单。
之所以选择一个低版本的TomCat也是为了Rar文件小一点,Gitee上传下载快一些,而且这个低版本够用了,因为我们只拿他当Web服务器用,并不是当Java服务器用。
之所以不要做任何配置就可以成功启动应用,就是因为启动命令与Server.xml中配置的路径正好就是前端强调的预置的目录名。看下截图就明白了:
由截图可以看出,之所以能零配置的前提就是工程目录要使用预设目录,反之,如果想换成其他目录,只要把这些配置的路径改下即可。
因为工程不是一个Maven工程,是一个标准Java工程,即把所有ClassPath依赖的jar文件都放在目录\ServiceProject\lib3下了,所以Idea中编译后端Java工程非常简单,不要做任何配置,直接编译Rebuild Project即可。
编译结束后,搜索类cn.net.webrose.bs.WebRoseSpringRun,直接Run即可,即在Idea中成功启动springBoot服务了。
之所以不要做任何配置就可以成功启动,并连接数据库,是因为 MySQL的相关参数与后面数据源配置/appouter_config/webrose.xml中的内容都是预设匹配对上的。截图如下:
也就是说,如果不是预先把整个MySQL做成一键解压版,而是使用自己的某个版本的MySQL,则肯定至少要修改这个数据源配置,就可能各种错误不顺利,无法做到零配置。这也是为什么我们把整个第三方环境都放在Gitee库中,直接下载解压使用的原因,就是减少各种配置,降低出错与不顺利的概率。
至于为什么不用Maven工程而最标准简单的Java工程,其实第一次构建环境肯定还是用Maven的,但构建好后一般ClassPath的jar环境不会经常变动,所以给其他人使用时把Maven依赖的jar包导出,直接放在工程目录中,做成一个Java工程更方便简单得多,一导入无需任何配置就直接编译使用,编译速度也快得多。也可是说是Maven只是第一次用, 只要ClassPath环境不变后面其实没必要每次都用。要理解这个辩证关系,不是说要否定Maven,而是说有时用有时可不用。
前面讲的是开发工具中环境搭建,最后要发布到生产环境,有个编译打包过程。
先强调一下,虽然在开发环境中,前后端代码的文件都在同一个Idean工程中,但其实运行也是分前后端执行的。
即前端是TomCat反向映射启动D:\ABCWorkSpace\webrose\WebProject这个目录,并没有使用后端文件目录。
而后端是编译所有src,只用到了D:\ABCWorkSpace\webrose\ServiceProject目录下的文件,并没有使用前端目录文件。
即文件合在一个工程中是为了写代码与传Git方便,即一个Git库,一个工程,一个开发工具就够了,可以在一个工具界面中同时写前后端代码。
然后我们甚至把各个产品与各个项目也放在这一个工程中,只要在Ant脚本中设置想编译哪些产品与项目目录就行了。
这是因为许多中小型软件公司与项目,因为人力资源有限,往往无法做到前后端程序员是分开的,即经常是一个程序员前后端代码都要写,甚至是一个人要同时负责多个项目与产品。
如果前端工程搞一个Git库,后端工程是另一个,然后每个产品与项目又是一个Git库,前端开发用VSCode开发工具,后端开发用Idea开发工具,则搭建或切换各产品与项目环境就非常烦琐,需要在不同的开发工具与工程中来回切换。
所以我们为了简化环境搭建,就把前后端代码,各个产品与项目代码都合在一个工程中,总共就一个工程,一个环境,永远不要切换。
当然,有人觉得这样权限没有分开,即每个人都有所有产品与项目代码权限,这不安全。这个道理在一些大公司是存在的,在中小企业与项目有时不是非常关键,如果真有那种问题,则自己重新设置目录也是可以的,只要把Ant编译打包脚本也相应改下就行。
如果只想编译某个产品源码,不想编译所有无关源码,只要临时在本地环境中把无关产品源码设置成普通目录(不是Sources源码目录),这样就不影响编译速度。
开发环境的前后端目录与道理已说明白,下面讲如何发布生产环境。
前端发布:
前端发布非常简单,只要直接复制开发环境目录到生产环境的Web服务器(一般是Ngnix居多)相应目录下即可,这是因为我们是一个原生Web架构,不需要使用WebPack再做二次打包Build,只要复制目录文件即可,也就是说开发环境与生产环境其实是一模一样的,就是标准的原生Web。
这也是因为WebPack二次打包与我们后面想实现PaaS在线开发的效果存在“结构性矛盾”,PaaS在线开发需要实现保存立即运行效果,而不是说还要再编译成另一种格式再上传,所以这才必须创新思路,回归原生Web发布机制。
后端发布:
后端发布则需要编译打包成SpringBoot服务包,即最后只要一个Jar文件直接运行,在这个Jar里面把整个环境的各个Jar都打包在其中。
一般做法就是使用Maven打包,但目录结构需要遵循Maven许多规则(可能把各产品项目前后端目录合在一起就有问题),所以我们选择了直接用Ant脚本打包。其实Maven本质上也是使用Ant执行的(Maven执行提示看得到Ant Task字样),两者是一回事,只不过自己写Ant脚本更自由灵活,可以做更多的工程目录的创新设置。
具体Ant执行方法就是直接双击运行命令\ServiceProject\buildjar\MyAnt.cmd即可。
查看这个Ant命令内容,可以看出这个命令执行的是ServiceProject\buildjar\MyBuilder.xml这个配置文件。
查看MyBuilder.xml配置内容,可以很容易明白其原理(不清楚的可以网上找点Ant资料先学习下),其实就是不断的复制、编译、打包、再复制。。最后再打SpringBoot服务包的过程。这个文件内容如下:
即Ant脚本只用了5~6种最常用的功能命令,就可以自己完全模拟Maven底层的执行过程,自由组合控制输出SpringBoot服务Jar包,一切都是透明的。
最主要的是自定义Ant脚本可以自由发挥,不按Maven规则创新设置工程目录,然后修改脚本按自己的想法打包,甚至可以做一些更大的创新,比如WebRose有个功能可以在中间执行一个程序把所有源代码先加密,然后打到最后Jar的某个目录下,然后在发生异常时点击堆栈链接时可以打开源代码(先解密)界面。要想在打包过程中实现这种自由扩展,使用Maven就不方便,而直接写Ant脚本就灵活自由。
Ant实际执行截图如下:
Ant执行结束后,会在目录D:\ABCWorkSpace\webroseEnvTemp\_SpringBootServiceDeploy下生成最终文件,截图如下;
最后只要把生成的SpringBoot服务Jar文件上传到生产环境(一般是Linux)运行即可。
其实无论是Idea还是Maven编译部署本质上也是使用Ant,以下是运行日志截图可以看出,换句话说就是, 我们这种直接自己写Ant脚本打包方式,其实就是完整实现了Maven的底层过程,技术上更灵活更高更底层了一个维度。
前面讲的所有过程,都是指在本地开发工具中开发,然后最后再部署到生产环境,但现在也在流行PaaS云开发模式,所谓PaaS即将来开发者都是在云上直接配置开发,不需要再发布与部署或重启服务器。
微信小程序其实就相当于一个PaaS开发平台,开发者是在微信提供的一个嵌入式的平台界面中开发,开发者并不清楚也感觉不到背后的操作系统、数据库、缓存服务器、Java服务器是什么,是怎么部署,怎么启动与运行的。
WebRose平台就有这样的在线PaaS功能,即从零开始可以在线建表、建菜单、前后端编码,保存后立即可以运行,不需要上传程序到生产环境发布版本。换句话说就是,前面讲的一堆过程都不要了,系统只要部署一次永远不要再部署与重启服务器了,本地开发工具与环境也不需要了,一切都直接在线开发,开发者不需要学习怎么编译、打包、发布,重启服务器等这些系统层面知识,只专注注应用层面的API即可。下面是工具界面:
PaaS开发肯定是未来的发展趋势之一,尤其适合于那些需要快速响应、快速迭代、不方便频繁发布与重启服务器的中小型软件项目场景。
前面讲的零配置的前提是工程目录必须在目录D:\ABCWorkSpace\webrose下,但如果就是想换目录,需要修改哪些命令配置呢?
MySQL数据库与Idea的Java工程编译都是相对路径,不要修改任何配置项。
需要修改TomCat与Ant的四个文件中的变量。具体如下:
TomCat5.5.23\MyStart-TomCat.cmd,修改其中的JAVA_HOME变量
TomCat5.5.23\conf\server.xml,修改其中的context路径
ServiceProject\buildjar\MyAnt.cmd,修改其中的JAVA_HOME与ANT_HOME
ServiceProject\buildjar\MyBuilder.xml,修改最开始处的三个变量路径Java_Home、FromDir、ToDir
另外后端除了Spring自己的resources配置文件名,还有一个(也只有一个)配置文件appouter_config/webrose.xml,配置数据源就在这里。
前端也只有一个配置文件是WebProject/config.js,在这里设置后端URL。
即整个平台的配置参数非常少,非常简单。
总而言之,WebRose搭建本地开发环境,以及编译发布生产环境,都非常简单并与众不同,真正做到了一下载、一解压、零配置,就能跑起来。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章