Ktor 从入门到放弃(七) 部署到生产环境

《Ktor 从入门到放弃》整个系列中,这是最后一篇了,相信也是最关键的一篇,不论如何,开发好的东西你绝对不想让它只能在 gradle 命令行里运行,必然要部署到生产环境去面对大众的。

在第一篇(点击进入)时 ,就一直在说 tomcat 了,然而事实是,gradle 里的环境 ,还是与开发环境绑定较为紧密的,而真实的环境往往不是那样。下面我们就来讲一下,如何部署到真实的环境里。

为了简单起见,将环境设定为 Ubuntu 18.04 和通过 apt 安装的 tomcat8。这个设定可以满足一部分的需求,并且它也是较为常见的。

由于 tomcat 默认的端口号是 8080,而我们通常使用 80 端口,因此需要进行修改,改法挺简单的,将 /etc/tomcat8/server.xml 内的 这一段里的 port 改为 80,把 redirectPort 改为 443

别急着重启服务,因为那不会有用。在 tomcat7 以后,要使用 1024 以下的端口,必须修改别处(我好像写了什么不得了的东西)。

修改 /etc/default/tomcat8,在这个文件的末尾增加一句 AUTHBIND=yes

然后依然不要先重启服务,我们现在来完成对于项目的部署。对于之前的项目,我们以上一篇的 WebSocket 聊天室 为例,在项目内执行以下代码,即可打出一个 war 包:

$ gradle clean build

然后我们就可以直接用一个脚本来完成部署,为了方便起见,不深入搜索目录,这里采用 link 的方法来进行部署:

$ mkdir -p ~/Deploy/ChatSample
$ chmod 777 Deploy
$ cp ktor-chat-sample.war ~/Deploy/ChatSample/
$ cd ~/Deploy/ChatSample
$ unzip ktor-chat-sample.war
$ rm ktor-chat-sample.war
$ cd /var/lib/tomcat8/webapps
$ sudo rm -fr ROOT
$ sudo ln -s ~/Deploy/ChatSample ROOT
$ sudo service tomcat8 restart

好了,现在就可以访问你的站点了,在部分情况下,在部署完成后执行 restart 并不能够很好的释放原先占用的 8080 端口,也无法绑定 80 端口,这个时候就需要重启服务器了。


另外,还有一种情况,比如说我们租用的云服务器,有很多服务器在登录时就是 root 权限的,在此情况下将 Deploy 目录权限设为 777 依然不可写入,这是由于用户组所引起的问题。

对于这样的服务器,需要做以下修改:

/etc/default/tomcat8 内的 TOMCAT8_USERTOMCAT8_GROUP 均改成 root,然后重启服务器即可,切记,是重启服务器,而不是重启 tomcat 服务!

好了,现在我们也可以访问部署在云服务器上的 Ktor 服务了。到这里为止,这个系列就完结了(撒花),大家都放弃了吗?顺便说一句,我的新项目已经选型用 Ktor 了,代码量也已经超过 1 万行,它真的很棒!


下一篇预告:完结了就木有新的预告啦!

你可能感兴趣的:(Ktor 从入门到放弃(七) 部署到生产环境)