在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