个人建站过程全记录(工具层)

   本节,我将介绍下此次我的网站在工具层面做的工作,也会介绍下基础概念。这里面会侧重广度的展示,在深度上不会花太多时间。因为在初学阶段,了解原理不是最重要的,最重要的是了解怎么用,在熟悉了怎么用之后再去深究原理。请相信我,你不会想去深究JDK9为什么和15版本的IDEA不兼容这样的问题。许多框架对JAR包的版本,配置文件的格式都有严格的要求,写错一个字母都运行不起来。所以不要去钻牛角尖,这样会节省你不少的时间。

   由于我本身水平不高,写的这几篇杂文对高手来说也都是很简单的,所以我瞄准的目标读者是跟我一样的初学者。所以下面说得都是会很基础的东西,这一点我想有必要说明一下。在介绍工具之前,我先讲一下一个标准的WEB软件架构。我们应该常能够听到B/S,C/S架构,这里说得就是前后台工作的模式。简单的来讲,软件可以理解为:"代码+数据库"。数据库用来存放我们需要的数据,而代码规定了我们对数据操作的逻辑。讲个例子,我们常见的登录功能,用户需要有自己的账户密码,才能登录系统。而用户所登陆的网站,必须要能够验证这个账户密码是否正确,甚至是更为严格的验证。在这个例子里,用户的账户密码就是数据,它需要存储在数据库里。而验证账密是否正确,就由我们的代码来负责。数据库管理系统(DBMS)是计算机系统里的支撑软件,它是位于操作系统之上的底层软件,这个属于计算机组成原理的内容。感兴趣的可以看《计算机组成原理》,详细了解计算机的硬件结构,工作机制,推荐南京大学袁春风老师的书。最简单的程序是单机版的,数据库在本机,也只有本机访问,只需要本机连接下数据库就行了。这种程序的架构很简单。

   但是实际应用的程序不会这样。我们手机上的,浏览器里的,桌面的软件,都是需要给客户用的,我们必须支持远程访问。那么远程访问,一定会有客户机,一定会有服务器,我们把接受访问的机器叫做服务器,访问服务器的机器叫做客户机,这个时候就要介绍B/S,C/S架构了。B/S是Browser/Server的缩写,意思是浏览器/服务器模式,客户通过浏览器来登录访问系统。C/S是Client/Server的缩写,意思是客户机/服务器模式,客户呢,通过专门编写的客户端程序来登录访问系统。这里举两个栗子:常见的B/S架构是各种教务管理系统,各个学校学生用来选课查分的系统,就是典型的B/S架构。客户用浏览器,访问某个URL,然后登录使用系统。B/S架构的前端目前有成熟的Html+JS+CSS的语言选型,基本都通过这个实现前端页面的功能。还有常见的C/S架构就是QQ了,在移动端未兴起的时候,05,06年,我记得QQ都是用客户端登录,随后才有了网页登录。这个也许记不太准确,总之QQ客户端就是常见的C/S架构产品。

   介绍完了这些,我们就知道了这个电子商城的软件架构了。这是采用的B/S架构,客户通过浏览器来登录使用系统。为了开发这个系统,我们需要开发环境用的工具,生产环境用的工具,测试用的工具。总的来说,我们选用了以下工具来搭建开发环境:IDEA+Mysql+Nginx+Tomcat+Git+Maven.我们下面详细讲一下各个工具的概念和大概用途。

  IDEA:是一个IDE,即Integrated Development Enviroment,就是集成开发环境。它集成了很多工具,比如Git,Maven,Tomcat,让你在一个软件里使用多种工具,所以叫集成开发环境。简单地说,这就是我们写代码的地方。它的界面像下面这样:

  

  2.Mysql

  Mysql是一个数据库软件,它适用于中小型网站。Mysql可以粗略的分为社区版和企业版,社区版开源免费,功能较少,企业版收费,功能也更为强大。我们安装数据库,是为了存储我们网站的数据,网站的一切数据都会放在数据库里,所以数据库很重要。数据库有字段,表,库,事务,锁,存储过程,范式等概念,详细了解这个需要看一本叫《数据库系统概论》的书,王珊萨师煊。SQL是必须要会的,这本书里都会讲。

 3.Git

  Git是一个代码版本管理工具,或者说代码同步工具。为什么要用Git呢?Git怎么用呢?要回答这些问题,需要想象一个场景。之前说过网站是一种C/S架构的系统,这意味着有一台服务器,我们写的代码最终要放在服务器上。但是我们不能直接在服务器上面写代码。服务器大多是用的Linux系统,命令行界面,没法用IDE,因为写代码要各种调试,没有IDE是不方便操作的。

  那么面对这种情况,该怎么办呢?我们写的代码在自己的电脑上,怎么把它放到服务器上呢?用U盘拷吗?这个是行不通的。现在很多服务器都是云服务器,就是你手上只有服务器的IP地址,真实的服务器都在某地的云计算仓库里。所以用U盘拷是行不通的。

  这时候就要说明了,假如有一个地方,给你放代码,你可以上传,也可以下载。就跟网盘差不多,这样会不会很方便?

  答案是肯定的。我们把存储代码的地方叫代码托管平台,也可以叫远程仓库。Git是用来上传下载代码的工具,事实上,GIt的功能可不止上传下载这么简单。GIt还提供分支,提供标签,方便开发者协同开发,并进行版本管理。许多的开源项目,都是将代码托管在远程仓库上的,常见的有Github,码云。选择托管平台建议码云,速度快,Github是美国的站点,国内访问慢,而且有时候连不上,比较麻烦。而且码云是中文网站,对中国程序员更友好。

4、Tomcat

Tomcat是一个webserver,也就是说网页服务器,这里说的服务器不是指物理的硬件,而是从它的功能而言的。客户端的请求,都被tomcat接收。它负责响应并返回资源。具体的细节得结合部署来讲

5.Nginx

Nginx是一个代理软件,这个必须结合服务器的配置讲。否则新手是没法理解的。后面服务器部署的时候讲。

 6.Maven

Maven是一个项目管理工具,在我们开发的过程中,会引用各种各样的JAR包,版本之间可能会有冲突,使用Maven可以有效的解决这个问题。这个会结合代码层来讲。

 

  看到这里,相信初次接触的同学难免会有头晕的感觉。有这样的情况是正常的,我们在开发的过程中,一定得树立一个观念。即开发软件是一个高度结构化的一个项目,写代码只是工作内容的一部分。除此之外,环境的搭建,代码结构的设计,需求的分析,部署的过程,都是在写代码之外要做的工作,这些工作是用户所不知道的,而开发者是必须掌握的,因为这些底层的工作,恰恰是相当重要的工作。

  这里,顺便要说几个程序员常说的术语,初学者刚听到会迷糊,所以特定解释下。
  开发环境:之前我们说过,我们写代码最终是要放到服务器上面的,但是代码在服务器上面写又不方便。所以我们在自己的电脑上,配置好各个软件工具,然后在本机写代码。我们把本机就叫开发环境。

  生产环境:相对于开发环境,生产环境就是真正的服务器了。代码就在这个上面运行,客户也直接访问这台服务器。生产环境及其重要,对于它的每一项配置,任何一个改动都应该极其小心。如果因为错误的配置,导致服务器宕机,那么后果是十分严重的,这点在各种金融系统里体现的尤为明显。

  上线:是指将写好的代码放到生产环境里,然后让用户能正常访问。比方说,网站需要添加评论功能,在开发环境,代码已经写好了,上传到了远程仓库。那么我们需要拉取,编译,重启tomcat,重启git,把之前发布的流程重新来一遍,然后确保新功能可以使用,至此上线完成。

  部署:意思跟上线基本一样。

  前端:前端后端的概念,是与MVC模式相对应。在软件开发中,有个经典的设计模式叫MVC,也就是Model-View-Controller,这个概念要想理解必须实际敲出一个应用来才行。这里简单的讲一下:MVC的意思是将一个软件分为三个部分,分别是视图层,专门负责展示数据,模型层负责进行相关的业务逻辑操作,控制层则决定视图层和模型层如何交互。这是一种结构化的设计方法,这样分了之后,软件的各个部分各司其职。前端就是对应模型层的概念,前端负责的是数据的展示,当然现在一些业务逻辑也是放在前端,用JS实现,但这仍然是前端工作的一部分。举个形象的例子:客户输入taobu.com,然后出来了一个页面,包含了轮播图,侧拉列表,动画等等,客户点击登录,跳出来一个登录页面,客户点击一个连接,跳转到相应的页面,这个就是网站的前端。

  后端:后端相对于前端,所做的工作就是实现业务逻辑。比方说,我们点击前端的登录按钮,用户输入数据,前端获取数据,传送给后端。这个时候,我们需要一个逻辑来认证这个登录是否成功,比如这个账密是否存在于数据库,这个密码是否正确,等等。这个逻辑我们就放在后端实现。




    

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值