目录
- 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. 为服务器用户设置密码允许远程登录
云产品-轻量应用服务器,选择自己刚买的服务器并管理它。
进入服务器管理,概要-应用信息-重置应用,可以选择服务器支持的操作系统,本人使用镜像 CentOS 7.6,先关机再重置。
概要-实例信息-重置密码,可以在此root用户密码,也是先关机再重置。
应用信息-登录,即可进行远程操作服务器,默认会为你创建“lighthouse”用户。
3. 本地下载Xshell和Xftp远程管理更方便
虽然,腾讯云网站已经有远程登录入口,但使用起来总归没那么方便。我们下载Xshell便于远程ssh登录操作服务器,下载Xftp便于本地与远程服务器间的文件传输。
到官网分别下载个人免费版Xshell和Xftp。
Xhell:新建会话–协议选择SSH–主机为云主机的公网IP–端口22–确定–连接–输入用户名密码–连接成功。
Xftp:新建会话–主机名为公网IP–协议SFTP–端口22–使用身份验证代理–方法选password–输入用户名–连接。
参考网址:https://blog.csdn.net/qq_37969433/article/details/79999124
4. 域名认证和域名解析
没有买域名的朋友可直接跳过此步。
域名认证和域名解析步骤腾讯云都会给你对应指引,因此不用担心它是否复杂。
-
核对域名实名信息:登录域名管理控制台,确认域名已经完成实名认证。【域名注册成功后必须进行域名实名认证(需提供中国大陆的有效证件),否则域名会处于ServerHold(暂停解析)状态,无法正常使用。】
域名管理完成基本信息和域名资料的修改。
-
域名解析:前往解析控制台添加域名及设置对应的解析记录。【一般已经为你设置好默认的NS类型的记录,且符合注册域名的DNS,无需修改。】
-
网站/邮箱解析:域名通过实名认证后,前往解析控制台添加域名及设置对应的解析记录。【可自行添加A类型的记录,常用主机记录可以为@或www,记录值填写服务器公网IP。】
5. 服务器安装JDK和Tomcat
安装jdk1.8,如要安装其他版本,可以通过yum -y list java*
查询可安装的版本
yum -y install java-1.8.0-openjdk
检测是否安装成功:
java -version
下图所示安装成功。
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-webapp
和tomcat-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
那么我们就尝试通过8080端口访问服务器,“http://IP地址:8080”,结果还是无法访问网站,不过显示的不是拒绝请求,而是响应时间过长。
后来知道,腾讯云对服务器的入流量有自己的控制规则,其默认没有为8080端口配置规则,只允许80、443、22、3389端口输入流量。
现在,我们再次通过8080端口(http://公网IP:8080)访问服务器,就能看到前面tomcat-webapps
命令安装的Tomcat根页面了。
7. 开启服务器防火墙并开启80和8080端口
拥有防火墙,至少拥有一道保护屏障,抵御一部分网络攻击。新买的服务器默认应该是没有开启防火墙的。我们现在把它开启:
systemctl start firewalld
查看防火墙状态:
firewall-cmd --state
得到结果是running
。
开启后,我们再一次通过8080端口访问服务器tomcat的web页面,你会发现又是访问失败。嗯,年轻人不要慌……我们先用下面命令查看当前端口开放连接状态:
netstat -tunlp
结果,你会惊讶地发现,不但连8080端口,就是80端口也没有连接。
在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删除这个规则了。
再利用下面语句删除上条命令列出的指定id规则:
iptables -t nat -D PREROUTING 4
-t nat
: 表示要操作的表,默认是filter;
-D
: 表示执行删除操作;
PREROUTING 4
: 表示nat表中的第4链,后面数字4就是上图中的num.
现在,访问服务器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传输本地文件就非常方便。
systemctl restart tomcat
现在,倘若自己的web项目下有index.html
、index.htm
或index.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>
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
,但是不顶用……
最后给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端口为前提。)
把自己项目放到/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中文乱码问题