【教你搭建服务器系列】(3)部署静态网站到Tomcat服务器

我白嫖过的一些云厂商:

云服务器厂商学生身份新用户(非学生身份)
腾讯云学生特惠,1核2G5M宽带,仅需9元/1个月星星海SA2云服务器,1核2G首年99元(答主目前用的)
不知道还有没有券,可以试试
新客户无门槛代金券,价值高达2860元代金券
云产品限时秒杀,爆款1核2G云服务器,首年99元
阿里云精选云服务器1核2G 新人仅需87元/年
百度云1核2G 学生身份 9 元/1个月
华为云1核2G首年99元起,首月仅需9月【华为云-精选云服务器2折起】(偏贵)
七牛云对象存储服务每月10GB免费空间(用做云存储)

以上是答主我从学生时代到打工人薅过最便宜的云服务器,建议大家有学生身份或者新用户身份的都去试试。


上一篇文章【教你搭建服务器系列】(2)搭建服务器环境,安装JDK、MySQL、Redis、Tomcat、Nginx我们已经部署好了服务器的环境,那么接下来我们就可以部署我们的项目了。

本篇文章准备了一个静态的HTML网页,手把手从0开始教你部署一个网站。

本篇文章部署的网站成品: https://www.baimuxym.cn

本篇文章演示的是部署在Centos7、Tomcat8.0的服务器

1、准备项目

通过ftp把项目上传到服务器。上传到 /var/www/web/HaCresume

如果你没有网站,可以在这里找到:https://github.com/DogerRain/HaCresume

clone 到本地即可。

目录结构如下:

找到tomcat目录下的conf/server.xml文件,在末尾 标签之间添加上:

<Context path="" docBase="/var/www/web/HaCresume/" debug="0" reloadable="true"/>

表示Tomcat的根目录就是这个了,不再是webapps下面了。

找到tomcat目录下的conf/web.xml文件,修改首页:

<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

表示我的 首页 就是 /var/www/web/HaCresume/index.html 了。

然后重启Tomcat,浏览器输入 http://81.71.16.134:8080/

即可访问了:

注意:如果你开启了Nginx,需要把Nginx的80端口放开监听,或者关闭Nginx

/usr/local/nginx/sbin//nginx -s stop

虽然现在访问没有问题,但是还有几个问题:

1、 网站提示连接是不安全的。

2、 能不能访问的时候不需要带端口?

3、能不能通过域名访问,就像 www.baidu.com 这样直接访问网站?。

如果你想深入的了解,那么就继续往下看。

2、域名注册、解析

一个域名只能对应一个ip地址,而一个ip地址可以对应多个域名。

现在我们已经有了IP,还需要买个域名。

腾讯云、阿里云都可以购买域名,以腾讯云为例,登入腾讯云后台,购买符合自己的域名。

以腾讯云新用户为例,一般只需要1块钱一年:

购买完成、然后实名认证(否则不能使用80端口),域名就可以绑定你的IP了,专业术语叫 解析,我这里购买的域名是baimuxym.cn

https://cloud.tencent.com/act/domainsales

解析:

以腾讯云为例,登入后台,点击解析

解析:**解析的意思就是 把这个域名和你的服务器IP绑定

点击 添加记录 ,你的域名还可以生成子域名,比如说 baimuxym.cn 是我的一级域名,默认分配了www.baimuxym.cn作为二级域名;www.a.baimuxym.cnwww.b.baimuxym.cn 也是可以的,表示三级域名。

我这里添加了一个 rain,rain.baimuxym.cn 就是我的二级域名了,如图所示:

自此 www.baimuxym.cn rain.baimuxym.cn 已经申请完成了,都是指向 81.71.16.134 这台服务器。

怎么知道有没有解析成功呢?我们ping一下就知道了:

C:\Users\Administrator>ping www.baimuxym.cn

正在 Ping www.baimuxym.cn [81.71.16.134] 具有 32 字节的数据:
来自 81.71.16.134 的回复: 字节=32 时间=8ms TTL=54
来自 81.71.16.134 的回复: 字节=32 时间=8ms TTL=54
来自 81.71.16.134 的回复: 字节=32 时间=8ms TTL=54
来自 81.71.16.134 的回复: 字节=32 时间=13ms TTL=54

81.71.16.134 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 8ms,最长 = 13ms,平均 = 9ms

IP正是我的服务器IP,说明解析成功。

然后我在浏览器输入 http://www.baimuxym.cn:8080/ ,发现一样可以访问我的服务器了,和http://81.71.16.134:8080/是一样的效果。

3、修改Tomcat端口

http://www.baimuxym.cn:8080 访问还需要带端口,实在是麻烦。

我们知道Tomcat的默认端口是8080,那修改Tomcat额默认端口就行了。

找到tomcat目录下的conf/server.xml文件,修改端口:

    <Connector port="80" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

重启Tomcat,输入 http://www.baimuxym.cn,就能访问了。因为http://默认就是 80 端口,而我的服务器80端口恰好就是Tomcat的端口,那么自然就能访问我的项目了。

要使用端口,需要先在后台先开放,不然无法访问。

4、申请SSL证书

我们访问自己的服务器,发现只能使用http://访问,还提示连接不安全,而使用 https:// 是无法访问的。

https://www.baimuxym.cn可以访问,而http://www.baimuxym.cn无法访问。

我们知道http:// 是不安全的,端口为80;而https:// 是安全的,端口为443。

要想使用https:// ,我们就需要有SSL证书,证书可以通过两个渠道获得:

  • 自己生成
  • 商用证书

在使用前,先把端口改了。

我们知道,8443是Tomcat **https://**的默认端口,就像8080是Tomcat的默认 http:// 端口一样。

先把Tomcat的8843端口改了:

80跳转到443:

<Connector port="80" protocol="HTTP/1.1"

           connectionTimeout="20000"

           redirectPort="443" />

8009跳转到443:

 <!-- Define an AJP 1.3 Connector on port 8009 -->

 <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
1、自己生成

虽然安全性不是那么高,但胜在成本低。

下面演示一下在Tomcat下使用jdk自带的工具生成证书。

1.1、 生成keystore证书

进入jdk的bin目录

执行:

keytool -genkey -v -alias testKey -keyalg RSA -validity 3650 -keystore ~/cert/HaC.keystore
  • alias: 别名 这里起名HaC.keystore
  • keyalg: 证书算法,RSA
  • validity:证书有效时间 3650,即10年
  • keystore:证书生成的目标路径和文件名,替换成你自己的路径即可,我定义的是 ~/cert/HaC.keystore
[root@VM-8-8-centos ~]# cd /var/www/web/jdk/jdk1.8.0_261/bin/
[root@VM-8-8-centos bin]# mkdir ~/cert
[root@VM-8-8-centos bin]# keytool -genkey -v -alias testKey -keyalg RSA -validity 3650 -keystore ~/cert/HaC.keystore
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  HaC
What is the name of your organizational unit?
  [Unknown]:  baimuTel
What is the name of your organization?
  [Unknown]:  yudianxx
What is the name of your City or Locality?
  [Unknown]:  guangzhou
What is the name of your State or Province?
  [Unknown]:  guangdong
What is the two-letter country code for this unit?
  [Unknown]:  86
Is CN=HaC, OU=baimuTel, O=yudianxx, L=guangzhou, ST=guangdong, C=86 correct?
  [no]:  y

Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 3,650 days
        for: CN=HaC, OU=baimuTel, O=yudianxx, L=guangzhou, ST=guangdong, C=86
Enter key password for <testKey>
        (RETURN if same as keystore password):
Re-enter new password:
[Storing /root/cert/HaC.keystore]

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /root/cert/HaC.keystore -destkeystore /root/cert/HaC.keystore -deststoretype pkcs12".

信息可以随便填,但是密码要记得,下面要用到。

1.2、 tomcat配置https

tomcat的conf目录下,打开server.xml文件

修改,加入刚才生成的证书路径,keystoreFile 你的keystore路径,keystorePass 是刚才生成时输入的密码。把Tomcat的默认的https://端口8443修改为443,不然你只能通过 https://www.baimuxym.cn:8443 访问了

 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/root/cert/HaC.keystore" keystorePass="123456"/>
1.3、 设置http自动跳转到https

把http的请求都转发到https

找到tomcat目录下的conf/web.xml文件,末尾 加入:

 <!-- ====================自动跳转——start ===================== -->
  <security-constraint>
    <web-resource-collection >
              <web-resource-name >SSL</web-resource-name>
              <url-pattern>/*</url-pattern>
       </web-resource-collection>                             
       <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
  </security-constraint>
<!-- ====================自动跳转——end ===================== -->
  <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

重启tomcat,访问我的域名。 https://www.baimuxym.cn

发现是提示证书存在安全问题 的,点击继续浏览 但是仍然 可以访问。

导出证书:

[root@VM-8-8-centos apache-tomcat-8.0.53]# keytool -exportcert -rfc -alias HaC -file  ~/cert/HaC.cer -keystore  ~/cert/HaC.keystore -storepass 123456      

Certificate stored in file </root/cert/HaC.cer>

给浏览器安装证书:

在ie浏览器下,进入“Internet选项”-“内容”-“证书”-在“受信任的根证书颁发机构”中导入tomcat.cer文件。

浏览器 一样提示 不安全的连接

没办法了,浏览器也无法信任自定义的证书。

我看到网上也有人 添加了受信任的证书后就提示安全了,我这里试了确实不行,希望有小伙伴告诉我到底可不可以。

可能是以前可以,现在不行了?

2、公开可信认证机构

keyken生成的不行,那就用商用的。

但商用的SSL实在是太贵了,比如说赛门铁克、亚信,个人一般都难以承受;

let’s encrypt 是一个免费的SSL组织,申请后有3个月的期限,到期可以续杯。

云厂商也可以申请证书,只要你购买了它们的域名。

2.1、申请证书

腾讯云 可以免费申请 1年的免费证书(到期可以继续 续),我这里使用腾讯云为例子:

申请完毕,点击下载 , 解压看到这个压缩包有几种服务器的不同类型证书。

img

我们是Tomcat的服务器,就把Tomcat的.jks文件证书上传到服务器。

2.2、tomcat配置https

替换server.xml的jks证书路径和密码即可:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"

               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" keystoreFile="/root/cert/www.baimuxym.cn.jks" keystorePass="i24vj6841f1"/>
2.3、设置http自动跳转到https

把http的请求都转发到https:

找到tomcat目录下的conf/web.xml文件,末尾 加入:

 <!-- ====================自动跳转——start ===================== -->
  <security-constraint>
    <web-resource-collection >
              <web-resource-name >SSL</web-resource-name>
              <url-pattern>/*</url-pattern>
       </web-resource-collection>                             
       <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
  </security-constraint>
<!-- ====================自动跳转——end ===================== -->
  <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

然后重启Tomcat。访问 https://www.baimuxym.cn

如果不生效,可以更换浏览器访问试试

现在就不会提示证书不安全了。完美!

到这里,一个项目就已经部署完成了,但只是一个静态网页。

部署JavaWeb项目,也是一样的操作,只不过要结合Redis、MySQL等等。

体验地址:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醋酸菌HaC

请我喝杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值