部署项目到远程服务器

时间:2021-10-08 13:18:14

JavaWeb 甚至 Html 都还没开始学,我就鼓捣着部署到服务器的活,是不是有点部署项目到远程服务器装逼嫌疑?

部署项目到远程服务器

其实,学习 JavaWeb 纯属于个人兴趣,兴趣的起源就是搭建自己的网站,所以在一开始写 HelloWorld 的时候,就把它打包部署到远程服务器上,让任何人都可通过浏览器进行访问(虽然并没有人)我的 HelloWorld 页面,这可以大大激发我的积极性。


 

  前期准备:
  • 首先我们得有一个云主机才行,露珠的是在腾讯云租的最低配置的 centos7 服务器,在校大学生有优惠,一个月一块钱。
  • 在 centos7 服务器上安装 tomcat,具体步骤和在本地主机安装没什么区别,详见 Centos7 搭建 JavaWeb 开发环境
  • centos7 服务器跑起来之后,可以打开本地主机的浏览器,输入“服务器IP:8080”,如 123.207.59.123:8080,如果见到 Tomcat 欢迎页面,说明一切正常。
  项目部署:
  1. 在本地主机上,打开 Eclipse ,选中要部署的 Web 项目,右键导出 war 文件,这里导出的是 HelloWorld.war;
  2. 将 HelloWorld.war 直接复制到服务器 tomcat 目录下的 webapps 目录,由于露珠的 tomcat 设置了自动部署选项,因此已经,可以通过 123.207.59.123:8080/HelloWolrld 来访问本页面了。复制文件到服务器的操作为:
    scp HelloWorld.war root@123.207.59.123:/usr/share/tomcat/webapps

  Emmm... 原来部署个 HelloWorld 这么简单的。但是有点不顺眼的是,要访问我的大 HelloWorld 项目时,不仅要在 ip 地址后面输入端口号,而且还要输入 HelloWorld 的路径。针对这两个问题:

  1. 在服务上,tomcat 的 webapps 目录下(我的是 /usr/share/tomcat/webapps ),将 ROOT 文件备份然后删除,其实就是改名啦:
    sudo mv ROOT root.bak
  2. 将我们的 HelloWorld.war 改名为 ROOT.war,马上会看到一个 ROOT 重新被生成出来,此时只要 123.207.59.123:8080  就可以访问到此 HelloWorld 页面;
  3. 接下来,去掉端口号。因为浏览器在访问一个 URL 时,若 URL 没有指定端口号,则浏览器默认访问 80 号端口。因此只要将我们的 Server 跑在 80 号端口,问题应该就解决了。改服务器端口号的方法,修改  /usr/share/tomcat/conf/server.xml,将里面两个 8080 修改为 80;
    sudo vim  /usr/share/tomcat/conf/server.xml
  4. 修改后 restart tomcat,按理说可以了,但是却出现无法启动 tomcat 的问题,查看 tomcat 目录下的 logs,发现报的是这个异常:
    SEVERE: Error starting endpoint java.net.BindException: Permission denied <null>:80   

     

     查阅资料,说是非 root 用户不能动用 1024 以下的端口号,但是很奇怪,我登陆就是用 root 身份呀;
  5. 另一个一般的解决方案是使用 iptables 命令将所有到 80 的请求重定向到 8080,这就不用修改 server.xml (啊咧?改回来吧孩子):
     iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

     

好了,现在就只要在浏览器中输入 123.207.59.123,就可以看到我那几个闪着亮光的眉清目秀的 HelloWorld  了。