在云服务器上部署web项目(CVM)

在QQ空间中发现了腾讯云的域名1元/年的活动,之前只试过在Windows下用XAMPP部署静态页面以及在Centos中用LNMP部署静态页面,好奇在云主机上部署静态页面、web项目会有什么不同,便点进去注册了一个域名,接着弄了一个云服务器,然后开始部署,这是十月底做的,一直没有时间整理。

首先是一个概念区分请猛戳--->云服务器和云虚拟主机的区别<---(一开始傻傻分不清QAQ。大概的是虚拟主机只能ftp上传文件,然后替换成自己网站的内容,然后绑定自己的域名就算一个网站了;而 云服务器是在集群服务器上划分出来的有自己的操作系统等资源、可以远程登录上去像操作一台电脑一样操作它的虚拟服务器,下面会提到具体操作过程,可能有些写得太细了,主要是想记录一下,如果觉得太繁琐请跳着看)

总的来说,部署步骤为:

一、租用域名和云服务器:

1、注册域名(域名查询、提交订单)

2、域名实名认证

3、租用云服务器、配置安全组

4、配置云服务器

5、域名解析

6、备案(可以在等待备案结果的过程中,继续下列操作)

二、服务器环境搭建:

1、连接到云服务器并下载安装JDK

2、下载安装阿帕奇和Tomcat

三、项目部署

1、静态页面的部署用阿帕奇,将程序文件复制到htdocs目录下并修改相关的配置文件,启动阿帕奇

2、web项目部署用Tomcat,将程序文件复制到WebApps目录下并修改相关的配置文件,安装mysql,启动Tomcat

3、通过域名访问

下面全部过程包括这中间碰到的各种问题的解决方法的记录,如表述不当,还请指正!先写过程,概念在最后解释

1、注册域名:

1.1 域名查询

首先进入腾讯云官网,https://cloud.tencent.com/?fromSource=gwzcw.330897.330897.330897

拉到下面,点击“域名与网站”,点击“域名注册”

输入你想购买的域名,然后点“搜索”图标,跳转到域名查询页,

如果你填写的域名已经被注册了,会有相应的提示,请重新输入一个,然后“加入购物车”,在右方“购物车”那里点“立即购买”,进入“提交订单”页面

1.2 提交订单

在“提交订单”页面选择租用时长、完善域名信息并保存,根据个人意愿选择是否勾选“自动续费”,然后勾选“同意协议”复选框,提交订单;

点击“确认购买”,选择支付方式之后,付款即可

1.3 域名实名认证:

https://cloud.tencent.com/document/product/242/6707?_ga=1.221015324.566979211.1543586259

2.租用云服务器:

在首页把鼠标放到“产品”上,然后点击“云服务器”

点击“立即选购”

根据需要配置机型(可以快速配置,也可自定义配置)

付费即可;

(免费体验云主机可点击“免费套餐”,完成实名认证之后可领取)

因为我只是想体验部署过程,暂时没有购买服务器的需要,就只是找了一个15天免费的云服务器(WindowsR264位中文版),

如果是学生机一般是1核2G1M,阿里的叫ECS(24岁前都认为你是学生) ,腾讯的叫CVM

在腾讯云官网进入控制台(点击右上角的控制台即可进入),可以看到一则包含连接你购买的云服务器的账号与密码、IP等信息的消息,当你要通过远程连接工具连接到云服务器的时候会用到!

配置安全组(相当于服务器地一个虚拟防火墙每台云主机必须至少绑定一个安全组,否则无法正常工作

具体的请参考https://cloud.tencent.com/document/product/213/2502?lang=zh  和https://cloud.tencent.com/document/product/213/12452),在控制台的 总览---》云服务器---》安全组中配置,可以参考他们提供的模板

1.4 配置云主机:

在控制台的“总览”那里找到“云服务器”,点击登录,会告诉你连接到云主机的方式,对于Windows系统,可以直接用浏览器直接登录,也可以用Windows自带的远程桌面连接工具登录,我用的是后面一种:

win+r,输入 mstsc 回车

打开远程桌面连接工具之后,输入公网IP,账户,密码

你可能会看到弹出如下对话框,直接点“是”,即可连接到云服务器

连接之后,如果要从本地传文件过去怎么办呢?可以直接拖动到云服务器桌面,也可以直接让云服务器可以访问指定的本地磁盘,步骤如下:

在输入公网IP之后,先不急着点击连接,点击“显示选项”

点“本地资源---详细信息”

勾选你要供云服务器访问的磁盘对应的复选框即可

连接上云服务器后,你可能需要为你的服务器划分磁盘分区(emmmmm总之像操作你的电脑操作就行了)

在服务器管理器的“工具”中找到“计算机管理”

要查看分区形式,可以找到“磁盘管理”,在磁盘0,右键属性,卷,即可查看分区形式

然后初始化磁盘1(未分配的),分区形式也是MBR

完成之后,点击未分配的磁盘1,右键,新建简单卷

下一步

输入简单卷大小,下一步(如果不改,默认只分一个区)

指定驱动器号

下一步,格式化,完成。

1.5 域名解析

​​​在“云产品”下拉菜单处找到“域名与网站”、“云解析”

“添加解析”

输入你注册的域名

点击“解析”

“添加记录”

当输入框获得焦点的时候,会有对应的提示,按照你的需要来填写就好了。

主机记录自己选(我选的是www),记录类型为A(指定域名对应的IP地址),记录值写你的公网IP,TTL我设的是3360,完成之后保存,假如我的域名是abc.xyz,那么以后我要访问我的web站点就应该在浏览器地址栏输入“www.abc.xyz

填写好之后点击“保存”即可(你也也可在小程序 “腾讯云助手”中完成以上解析过程)

完成之后,我们试一下能不能ping通(win+R,cmd)

ping得通,说明解析成功。

1.6 网站备案(其实这一步可以在搭好服务器环境之后再做,但一般需要等待比较长的时间,所以建议早点做):

在官网处点击“备案”或者在控制台处找到“网站备案”,然后根据提示进行备案即可。

二、 服务器环境搭建:

打开浏览器,

2.1 纯HTML项目部署:

2.1.1 下载安装 阿帕奇 

请参考百度百科文章 https://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html

下载解压之,右键全部提取,然后将Apache文件夹复制到C盘根目录下(you decide,我是为了省事这样干滴)

需要注意的是:当你启动Apache的时候,可能会出现如下错误“无法启动此程序,因为计算机中丢失 VCRUNTIME140.dll。尝试重新安装该程序以解决此问题。”这是因为缺少VC库,可以在阿帕奇官网下载安装VC++,安装需要比较长的时间,请耐心等待。

另外,在用PowerShell启动Apache的时候(在“开始”处可找到,也可以在cmd启动),我还遇到“httpd.exe: Could not reliably determine the server’s fully qualified domain name...”的问题,

百度之后发现在httpd.conf这个文件里面加入一句ServerName localhost:80然后重启Apache即可

2.1.2. 项目部署

写一个简单的静态页面测试一下:将index放到htdocs目录下(默认会去找index.html,如果index.html不是直接放在htdocs下,还需进一步配置,我在下面会讲到),浏览器输入127.0.0.1,测试成功


那么,如何通过域名来访问我的页面呢?

首先用记事本打开C盘WINDOWS\system32\drivers\etc目录下的 hosts 文件,加入: 127.0.0.1 www.a.com;

然后打开 httpd.conf 文件,找到下图Include conf/extra/httpd-vhosts.conf:

取消 Include conf/extra/httpd-vhosts.conf 的注释

打开httpd-vhosts文件,然后将红框中的部分删除

找到DocumentRoot和ServerName(见下图红框)

将DocumentRoot(web服务器文件的存档位置)改成您的项目文件所在的目录路径,如我把整个项目放在 hst 文件夹内,hst文件夹放在Apache24中htdocs目录下,DocumentRoot就为 "C:\Apache24\htdocs\hst",

(如果没有放在hst文件夹,而是直接index.html-html-css-fonts这样的目录结构的话,DocumentRoot就为 "C:\Apache24\htdocs")

然后将ServerName(服务器名)改成你的域名或公网IP

这样就可以通过我的域名来访问apache下的静态网页了!

至此,我们就完成了Apache下纯html页面项目的部署,但如果要部署Java项目,还需要下载安装Tomcat;

阿帕奇和Tomcat的区别:(这是别的博友的文章截图,原文链接https://blog.csdn.net/qq_38039015/article/details/83587134


2.2 java项目的部署:(安装配置JDK---安装Tomcat---将war复制到webapp目录下--在server.xml中将8080端口改成80、域名等配置--重启Tomcat)

2.2.1 下载安装 JDK (也可以直接从本地主机复制过去~) https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

请注意配置好JDK和JRE环境变量,否则启动Tomcat时会报错

2.2.2 下载安装 Tomcat http://tomcat.apache.org/download-70.cgi

如果启动时出现如下图所示的警告“The APR based Apache Tomcat Native library failed to load”,可能是Tomcat与JDK版本不对应或环境变量没配置好

如果出现下图所示问题“Offending class: javax/servlet/Servlet.class”,说明webapp中WEB-INF/lib下有重复的servlet-api.jar包。

将servlet-api.jar包从webapp的部署文件中删除以后。再启动,错误信息就消失了。

这时候再来启动Tomcat,启动成功

在浏览器输入127.0.0.1:8080(Tomcat默认8080端口,可在server.xml这个文件中进行修改)出现如下界面,则没什么问题了

2.2.3 下载安装MySQL https://www.mysql.com/downloads/

安装好之后,请配置mysql环境变量,否则会报错“mysql不是内部或外部命令,也不是可运行的程序或批处理文件”;(在path中加上分号,然后是mysql的bin所在完整路径,注意是追加不是覆盖!!!不知道如何配置请自行百度)

在下载好之后,当我尝试启动mysql的服务,却发现服务无法启动

解决办法:删除 data 这个文件夹(如果删不掉,。。。已被打开。。。尝试重启),然后进入bin目录(cmd),

mysqld --initialize-insecure 会生成一个以root为用户名、无初始密码的用户 ,再次启动服务,就可以了

登录mysql的时候,(bin目录下)输入 mysql -u root -p 回车,会让你输入密码,直接回车就好

登录进去后,如果你的web项目(war包)中数据库的账号不是root,请创建一个与你项目中数据库一直的账号,并设置相同的密码!

然后,导出本地数据库。我用的是xampp,怎么在xampp中使用mysql请看我另一篇文章https://blog.csdn.net/hst_gogogo/article/details/80457189,在xampp的面板中启动Apache和MySQL,然后点击MySQL的 Admin按钮,进入phpMyadmin页面对数据库进行管理。

选中你要导出的数据库,然后导出-》执行

将导出的sql文件复制到远程服务器,然后再全选复制在mysql中执行一遍,便在云主机中创建了一个和本地一样的数据库。

2.2.4. 项目部署

首先将eclipse中web项目打包成.war,打包过程如下:

在eclipse的项目目录中右键,Export,找到 war file,选择导出位置,finish.

将导出的war包提取到Tomcat WebApps目录下:(据说Tomcat会自动解压war包,直接放到webapps目录下就可以了,但不知道为什么我的不行,只好手动解压出来放到webapps目录下了)

修改server.xml(在conf目录下,这里存放了Tomcat的各种配置文件)中的appBase的路径,默认在WebApps下(当发布web应用时存放的目录)直接找到index.html的(同理:如果只是将index.html放在最外面,就不必对appBase做修改,因为它们是在jw20180503这个文件夹里的,就必须修改):

默认以index为首页是因为在Tomcat的 conf/web.xml中(或应用目录下的WEB-INF中的web.xml中)有对欢迎页面的配置。可以在<welcome-file-list>里面设置多个首页<welcome-file>,容器启动后会依次查找匹配的物理存在的文件,返回第一个找到的文件,没有找到则报404错误。详情请参考https://blog.csdn.net/xybz1993/article/details/81023955,我只是个搬运工哈哈哈

修改后如下:

jw20180503文件夹中内容如下图所示,

没有意外的话,现在应该是可以用 http://127.0.0.1:8080/jw20180503/  访问你的首页了(如果你将端口号改成80而不是8080,就可以不加端口号)。

通过域名访问部署在Tomcat的web项目:

//删除线为原来的值,红色字体的为修改过后的值    

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

//可以改成其他端口,如 80(我没改,果然出事了,后面细说~)
    <Engine defaultHost="localhostwww.husiting.xyz" name="Catalina">

//engine 是应用程序的容器  defaultHost改成你的域名或公网IP

      <Host appBase="webappswebapps/jw20180503" autoDeploy="true" name="localhostwww.husiting.xyz" unpackWARs="true">

/*每个host代表一个虚拟主机 name改为域名或ip,APPBase改成项目路径appBase="webappswebapps/jw20180503",并且下面 docBase的值应为空,这时候访问应用应该在浏览器中输入http://www.husiting.xyz:8080/jw20180503/ (如果你把端口号改成了80,就不用加:8080,我没改才加的);如果要直接通过域名访问,省略掉应用名(war包名)http://www.husiting.xyz:8080/,则应将appBase值置为空,下面的Context中的docBase的值设为"webapps/jw20180503";详情请参考https://blog.csdn.net/liming_0820/article/details/80880813   */

          <Context docBase="webapps/jw20180503" path="" debug="0" reloadable="true"/>

/* 每个context代表该应用程序的虚拟子站点 path为空时,表示默认Context路径  docBase的值设为"webapps/jw20180503"是为了可以直接通过域名访问,这时候上面 Host中的appBase值应为空 appBase="";,这时候访问应用应该在浏览器中输入http://www.husiting.xyz:8080/   */
      </Host>
    </Engine>

重启Tomcat,然后再浏览器输入http://www.husiting.xyz:8080/(或http://公网IP:8080/),如无意外,应该是可以访问到首页了。

但是,意外还是发生了。。。

我通过域名只能访问到index.html,无法跳转到另一个JSP页面,用公网ip也不行。。。找不到loginServlet  (<form action="loginServlet">)

只能通过 http://127.0.0.1:8080/jw20180503/http://内网IP:8080/jw20180503/才可以正常跳转。。。

因为我在安全组只放通了22,80,443,3345端口,但是Tomcat默认是8080端口,我之前没有去改成80端口,所以过不了服务器防火墙。

这时候有两个选择:1.改Tomcat端口 <Connector connectionTimeout="20000" port="808080"    2.重新配置安全组。

我“机智地”去改了端口,重启就可以了域名访问并且正常跳转页面了 www.husiting.xyz

篇幅比较长,主要是记录在此过程中遇到的问题,其中还包括一些缺少相应文件的,这里没有记录了,请自行查阅资料。

如有谬误或表述不当的地方,敬请指出!

鸣谢!    参考资料:

JDK和JDK的作用 https://product.pconline.com.cn/itbk/software/dnyw/1703/8922318.html

JDK的安装 https://product.pconline.com.cn/itbk/software/dnwt/1408/5260596.html#ad=7094

域名记录类型介绍 https://blog.csdn.net/dodott/article/details/50525286

httpd-vhosts.conf配置文件理解 https://blog.csdn.net/qq_20336723/article/details/50323395

腾讯云文档 安全组 https://cloud.tencent.com/document/product/213/12452

Apache与Tomcat的区别 https://blog.csdn.net/coomon2000/article/details/1761643

Apache2.4 启动闪退 https://blog.csdn.net/u010100466/article/details/72695029

tomcat.apache startup.bat闪退两种解决方法 https://blog.csdn.net/u014164965/article/details/77775554

Apache配置域名访问本地空间 https://jingyan.baidu.com/article/7e440953d7a6712fc0e2efb7.html

如何将域名部署到Tomcat中,用域名访问服务器 https://blog.csdn.net/qq_36330228/article/details/78516160

解决mysql服务无法启动问题 https://www.cnblogs.com/1693977889zz/archive/2018/04/13/8823349.html

mysql5.7.11解压版安装配置 https://blog.csdn.net/qq_28602957/article/details/50938700

mysql导入导出sql文件 https://www.cnblogs.com/yuwensong/p/3955834.html

mysql command line client打不开(闪一下消失)的解决办法 https://www.2cto.com/database/201209/153858.html

tomcat中部署好的项目,内网和localhost可以访问,但是外网不能访问(Windows 2008 R2中) https://blog.csdn.net/hsj1213522415/article/details/54016621#commentBox

腾讯云部署web项目步骤 https://blog.csdn.net/liu940204/article/details/79871289#commentBox

tomcat配置文件web.xml与server.xml解析--重要 http://www.doc88.com/p-6708129882929.html

tomcat 虚拟目录配置appBase和docBase的区别 https://blog.csdn.net/chenzenan/article/details/64905412

tomcat首页welcome-file-list设置与url-pattern匹配规则 https://blog.csdn.net/xybz1993/article/details/81023955

Tomcat下发布war包产生两个不同版本的访问地址的解决方案appBase和docBase的关系 https://blog.csdn.net/liming_0820/article/details/80880813

tomcat中部署好的项目,内网和localhost可以访问,但是外网不能访问(Windows 2008 R2中)https://blog.csdn.net/hsj1213522415/article/details/54016621#commentBox

猜你喜欢

转载自blog.csdn.net/hst_gogogo/article/details/83720757