目录

  • 1. 腾讯云购买学生轻量应用服务器
  • 2. 为服务器用户设置密码允许远程登录
  • 3. 本地下载Xshell和Xftp远程管理更方便
  • 4. 域名认证和域名解析
  • 5. 服务器安装JDK和Tomcat
  • 6. 腾讯云防火墙为8080端口添加规则
  • 7. 开启服务器防火墙并开启80和8080端口
  • 8. 将80端口映射到8080端口
    • 方法一
    • 方法二
  • 9. Tomcat搭建个人web项目
  • 10. 解决页面中文乱码
  • 11. 题外话——apache

冲着老师一句“没有服务器学这门课怎么好意思学呢”,狠心买了一年腾讯云学生轻量应用服务器,加了点小费顺便捞了一个一年的域名,其实还挺香。但是,在通过服务器搭建个人网站的过程中走了很多弯路,在此记录血汗史,或许也能给路过的你一个参考。

内容有点多,咱尽量用简洁的话语表述。

1. 腾讯云购买学生轻量应用服务器

登录腾讯云官网,购买轻量应用服务器,学生认证后会有优惠,跟着提示做就好。这一步,有钱就行。

2. 为服务器用户设置密码允许远程登录

云产品-轻量应用服务器,选择自己刚买的服务器并管理它。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
进入服务器管理,概要-应用信息-重置应用,可以选择服务器支持的操作系统,本人使用镜像 CentOS 7.6,先关机再重置。

概要-实例信息-重置密码,可以在此root用户密码,也是先关机再重置。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

应用信息-登录,即可进行远程操作服务器,默认会为你创建“lighthouse”用户。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

3. 本地下载Xshell和Xftp远程管理更方便

虽然,腾讯云网站已经有远程登录入口,但使用起来总归没那么方便。我们下载Xshell便于远程ssh登录操作服务器,下载Xftp便于本地与远程服务器间的文件传输。

到官网分别下载个人免费版Xshell和Xftp。

Xhell:新建会话–协议选择SSH–主机为云主机的公网IP–端口22–确定–连接–输入用户名密码–连接成功。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

Xftp:新建会话–主机名为公网IP–协议SFTP–端口22–使用身份验证代理–方法选password–输入用户名–连接。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

参考网址:https://blog.csdn.net/qq_37969433/article/details/79999124

4. 域名认证和域名解析

没有买域名的朋友可直接跳过此步。

域名认证和域名解析步骤腾讯云都会给你对应指引,因此不用担心它是否复杂。

  1. 核对域名实名信息:登录域名管理控制台,确认域名已经完成实名认证。【域名注册成功后必须进行域名实名认证(需提供中国大陆的有效证件),否则域名会处于ServerHold(暂停解析)状态,无法正常使用。】
    腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
    域名管理完成基本信息和域名资料的修改。
    腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

  2. 域名解析:前往解析控制台添加域名及设置对应的解析记录。【一般已经为你设置好默认的NS类型的记录,且符合注册域名的DNS,无需修改。】

  3. 网站/邮箱解析:域名通过实名认证后,前往解析控制台添加域名及设置对应的解析记录。【可自行添加A类型的记录,常用主机记录可以为@或www,记录值填写服务器公网IP。】
    腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

  4. 域名ICP备案:可以直接使用腾讯云服务器提交备案。【一般域名认证成功48小时后才允许备案。】
    腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

5. 服务器安装JDK和Tomcat

安装jdk1.8,如要安装其他版本,可以通过yum -y list java* 查询可安装的版本

yum -y install java-1.8.0-openjdk

检测是否安装成功:

java -version

下图所示安装成功。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
@百度百科

rpm命令查看是否安装tomcat:

rpm -q tomcat

安装Tomcat,Xshell中执行如下命令:

yum install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp tomcat-javadoc

tomcat-webapps 安装默认Tomcat根页面;
tomcat-admin-webapps 安装Tomcat Web应用程序管理器和Virtual Host Manager;
tomcat-docs-webapptomcat-javadoc安装Tomcat文档,以便默认Tomcat页面上的所有链接都可以运行。

至此,这增加了ROOT , examples , sample , manager和host-manager 5个Web应用到tomcat/webapps的目录,通过yum安装的tomcat文件夹在/usr/share/tomcat ;如果你想运行一个Tomcat应用程序,可以将它放在/usr/share/tomcat/webapps的目录。

然后,将tomcat设置为开机自启:

systemctl enable tomcat

启动tomcat:

systemctl start tomcat

到这里,我们已经提供了一些web项目,试图通过IP地址访问服务器,却发现服务器拒绝了我们的连接请求,该怎么办?

参考博客:

  • https://blog.csdn.net/qq_37969433/article/details/79999124
  • https://www.cnblogs.com/qianzf/p/6986962.html

6. 腾讯云防火墙为8080端口添加规则

查看/usr/share/tomcat/conf/server.xml文件,可以发现tomcat支持的HTTP协议默认绑定8080端口。

vim /usr/share/tomcat/conf/server.xml

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
那么我们就尝试通过8080端口访问服务器,“http://IP地址:8080”,结果还是无法访问网站,不过显示的不是拒绝请求,而是响应时间过长。

后来知道,腾讯云对服务器的入流量有自己的控制规则,其默认没有为8080端口配置规则,只允许80、443、22、3389端口输入流量。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
那么,我们可以手动为8080端口添加规则。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
现在,我们再次通过8080端口(http://公网IP:8080)访问服务器,就能看到前面tomcat-webapps 命令安装的Tomcat根页面了。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

7. 开启服务器防火墙并开启80和8080端口

拥有防火墙,至少拥有一道保护屏障,抵御一部分网络攻击。新买的服务器默认应该是没有开启防火墙的。我们现在把它开启:

systemctl start firewalld

查看防火墙状态:

firewall-cmd --state

得到结果是running

开启后,我们再一次通过8080端口访问服务器tomcat的web页面,你会发现又是访问失败。嗯,年轻人不要慌……我们先用下面命令查看当前端口开放连接状态:

netstat -tunlp

结果,你会惊讶地发现,不但连8080端口,就是80端口也没有连接。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
在running 状态下,向firewall添加需要开放的端口,--permanent 表示永久添加:

firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp

与之对应关闭的命令为:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent

然后,加载配置,使得修改有效

firewall-cmd --reload

使用命令查看开启的端口,出现8080/tcp,开启正确:

firewall-cmd --permanent --zone=public --list-ports

或者查询指定端口是否开启连接,显示yes表示开启:

firewall-cmd --permanent --zone=public --query-port=8080/tcp

再次启动防火墙

systemctl start firewalld.service

不出意外的话,现在通过8080端口访问远程服务器又可以看到“猫”了,但访问80端口怎么还是拒绝请求……回想一下,上述操作都指向了8080端口(tomcat服务默认端口),并没有为80端口指定服务。

用下面命令查看一下80端口是否被某个进程占用:

lsof -i:80

果然不出所料,80端口并没有被什么进程占用,自然也无法被互联网其他用户访问。

参考博客:

  • https://www.cnblogs.com/zeussbook/p/10191051.html
  • https://blog.csdn.net/shmily_lsl/article/details/82876645

8. 将80端口映射到8080端口

有没有什么办法,通过80端口也能访问tomcat下的web项目呢?

方法一

修改tamcat服务的端口为80.

vim /usr/share/tomcat/conf/server.xml

找到<Connector port="8080" protocol="HTTP/1.1>" 将8080改为80,再重启tomcat:

systemctl restart tomcat

方法二

如果不想修改tomcat端口,我们可以选择将80端口映射到8080端口。也就是说,当出现访问80端口的请求,希望有一种机制可以将该请求转交到8080端口,实现端口重定向redirect;而访问8080端口依旧请求8080端口的服务。

我们可以利用iptables防火墙的包过滤规则:

iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 8080

-t nat : 指出操作的表(不写就表示filter,默认是filter) ;
-A PREROUTING : A 表示添加,在 PREROUTING 中添加一个规则;
--dport 80 : 如果请求80端口;
--to-port 8080 : 那么就转到8080端口。

如果想要删除映射,可以先查看映射:

iptables -t nat -L -nv --line-numbers 

这个命令的作用是,列出nat表中的规则,并且给个num,然后我们就可以利用这个id删除这个规则了。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

再利用下面语句删除上条命令列出的指定id规则:

iptables -t nat -D PREROUTING 4

-t nat : 表示要操作的表,默认是filter;
-D : 表示执行删除操作;
PREROUTING 4 : 表示nat表中的第4链,后面数字4就是上图中的num.

现在,访问服务器80端口就相当于访问8080端口的内容了。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

参考博文:

  • https://blog.csdn.net/wangxiaopeng0329/article/details/49179209
  • https://blog.csdn.net/shuaicenglou3032/article/details/58133182

9. Tomcat搭建个人web项目

如果想访问到的是自己项目下某个指定页面,该怎么办呢?

假设自己的web项目文件夹名为new,我们打开server.xml文件,转到<Host>标签:

vim /usr/share/tomcat/conf/server.xml

在标签下添加标签的内容:

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

docBase指定登录tomcat默认主页所在的文件夹,其默认值是ROOT文件夹,也就是我们看见的猫。现在改成自己的new文件夹。reloadable设置为true表示只要tomcat中的项目有改动tomcat就会自动重新加载编译,可以带给我们一些方便;但是在项目发布阶段一般设为false,可以提高tomcat的性能。

当然,我们需要把自己的web项目放到webapps目录下,这里用Xftp传输本地文件就非常方便。

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
重启tomcat:

systemctl restart tomcat

现在,倘若自己的web项目下有index.htmlindex.htmindex.jsp,访问服务器就会默认展示按顺序先出现的文件作为主页;那如果自己项目没有像上述命名的文件,是否可以设置默认打开自己指定的文件做主页?

当然,打开web.xml文件:

vim /usr/share/tomcat/conf/web.xml

G(按shift+g键)直接转到文件末尾,找到<welcome-file-list>,在其内容最上面添加<welcome-file>标签,后者内容为自己项目下想默认打开做主页的文件名,假设我的new下有个文件login.html,添加如下:

<welcome-file>login.html</welcome-file>

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
重要一点,再次重启tomcat:

systemctl restart tomcat

现在,访问服务器出现的主页面就是自己的new文件夹下的hello.html页面了。

参考博文:

  • https://blog.csdn.net/qq_35661171/article/details/79165535
  • https://blog.csdn.net/qq_21997183/article/details/88770692

10. 解决页面中文乱码

如果页面有中文,会出现乱码。学某些博主在server.xml设置编码格式为UTF-8,但是不顶用……

腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
最后给html页面的<head>头标签增设了<meta>标签,设置了字符集为“utf-8”,解决了问题。

<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

11. 题外话——apache

上述主要介绍了tomcat服务及防火墙的一些配置。其实,我们也可以采用apache搭建web环境,apache服务默认绑定80端口。前面的操作过程中我们已为80端口添加了服务器的防火墙过滤规则,且腾讯云平台也开放了80端口的入站规则,下面我们只需要安装启动apache服务。

安装apache服务,安装的是httpd包:

yum install -y httpd

开启apache服务:

service httpd start

现在再用lsof命令和firewall-cmd查看80端口开启、活跃状态,皆已正常,同时,外网也能通过80端口访问服务器了。(当然,这以没有做前文80端口映射到8080端口为前提。)
腾讯云轻量应用服务器 CentOS7.6 +Tomcat/apache 搭建个人web项目,并允许外网通过80或8080端口访问【超详细】-编程知识网
把自己项目放到/var/www/html下,即能看见自己的index内容。倘若要搭建动态网站,可根据自己的需要配置php或jsp,mysql等环境,此文不做展开。

参考博文:

  • CentOS 初体验三: Yum 安装、卸载软件
  • centos7中使用yum安装tomcat以及它的启动、停止、重启
  • 重要:腾讯云服务器CentOS 7.3 Web服务器环境搭建
  • 腾讯云服务器tomcat端口无法访问
  • linux_CentOS 7.2 64位 腾讯云 80端口未启用解决方法
  • 修改tomcat默认的欢迎首页,将tomcat默认的欢迎页面改成自己项目的页面
  • Linux下Tomcat使用80端口映射到8080端口
  • html设置编码格式
  • tomcat中文乱码问题