前文概述
出于好奇,我用学生优惠租了一台阿里云服务器,打算做一些Java web的开发,但是毕竟是第一次接触这样的东西,还是比较陌生,在这个过程中遇到了一些问题(肯定会遇到问题的),但是呢,在网上搜解决办法的时候,总是历经波折才能找到我最后想要的东西,所以我想把我配置阿里云的时候踩过的坑填一下,如果你按照我的方法成功解决的问题,别忘了给我点个赞 。在搭建网站的时候,我参考了 如何从零开始拥有自己的网站? 这篇文章,对建网站的方法思路有了全局的理解。
不定期续更
购买服务器
学生的话,阿里推出了一个叫云翼计划的产品,通过学生认证之后可以享受超便宜的价格,我的账号是支付宝账号,之前就有过学生认证。云翼计划的入口在这儿云翼计划。但是我是通过学生组团活动参加的,因为组团活动,可以优惠得到一个一年的免费域名。阿里云学生组团活动详情介绍
配置服务器
服务器购买成功之后,找到你服务器的公网IP地址。这里我把公网IP隐藏了
设置安全组
服务器需要端口放行,否则你的端口是无法访问的,因为安全需要,所以云服务器存在安全组这个东西。记住常用的端口放行,tomcat 8080端口,mysql 3306端口 https 443和80端口
部署JavaWeb项目
在服务器上部署Java运行环境
- Linux安装JDK1.8并配置环境变量
- Linux安装Tomcat并配置环境变量
在这里我部署的是简单的web项目,没有用到数据库mysql。所以不用安装mysql。但是我这里也分享下安装mysql的教程: - Linux Centos安装Mysql5.7.23
本地项目打包生成war文件
要看以下教程,请先确保你把上面的东西都做好了:Java和Tomcat环境搭好,购买了域名并且可以使用,本地有Java开发环境和IDEA
不过上面的教程之涉及到在服务器上配置Java与Tomcat环境,相当于你只是搭了一个房子,但是里面还没有任何家具,不能入住,所以接下来我们来买一些家具,首先打开IDEA,新建一个项目,选择web application。
在web目录下找到index.jsp 在标签下写一句hello world
因为部署到网站上的时候我们需要一个war包,所以我们现在想办法弄一个出来
点击右上角的这个图标
按照图中步骤点击(还有要先点击绿色的加号才能出来那个菜单)
然后添加一个content,存放路径选择它默认的就行,一般都是在war包的相同目录
这样就设置好了,下面我们来生成一个war包 执行Build->Build Artifacts->build命令
build之后在这个out目录下找war包
打开xshell和xftp工具,连接到云服务器,将webhelloworld_war.war放到云服务器的/usr/java/tomcat/apache-tomcat-8.5.20/webapps/下
Tomcat绑定域名
好,我们要稍微修改一些东西 ,不要怕,很简单的一行而已,不要每次提到修改配置就头大。
修改/usr/java/tomcat/apache-tomcat-8.5.20/conf/下的server.xml:
- 修改host节点的name为你的云服务器的域名,如www.example.com
- 在host节点下加一个节点
其中webhelloworld_war这个就是你的war包的包名,也就是你的项目名
顺便提一下,如果要修改这个xml文件,你可以在xshell中用vi修改,非常秀操作,当然也有非常接地气的方法,可以用xftp将server.xml下载到本地然后用sublime text来改,然后再上传上去。
开启服务并访问成功
好了修改完配置文件之后还有一件重要的事情别忘了,就是重启一下Tomcat
用xshell进入/usr/java/tomcat/apache-tomcat-8.5.20/bin/
执行
./shutdown.sh
然后再执行
./startup.sh
这里提一下,如果停止Tomcat时出现停止失败,提示 java.net.ConnectException: Connection refused SEVERE: Could not contact localhost:8005. Tomcat may not be running.报错的,原因是Tomcat的内存太小了,需要设置一下虚拟内存,解决方法参见这篇博客
在Linux系统里运行shutdown.sh命令关闭Tomcat时出现错误提示 :http://www.gwork.cn/post-1.html
亲测有效
好,现在返回正题,在浏览器中输入 你的云服务器的域名:8080 比如(www.example.com:8080)就可以访问到你刚才部署上去的程序啦
像这样子
总结
- 上面的只是简单的示例入门,还有许多不完善的地方。比如去掉8080端口,直接域名访问。
- 还没有用到数据库mysql
- 没有用到https安全访问
- 没有用到maven打包部署web项目
- 没有用到nginx等等