截屏2020-02-15下午12.05.41.png

vapor是一个开源的swift开发的服务器框架,由于swift语言现在在服务器框架中只在Ubuntu中,并没有在centerOS中提供,所以如果需要把vapor部署到阿里云服务器,创建实例的时候记得选择系统版本为Ubuntu

这样就可以自己前端写点简单的服务器框架啦。

截屏2020-02-15下午12.05.01.png

如果看官方详细文档,可以参考docs.vapor.codes,或者中文版vapor3.swiftmic.com,而后面的步骤是我操作部署成功的记录。

本文写于2020年02月15日,如果你看到转载时已经年代久远,不妨回头看看原文是否有更新《vapor部署到阿里云服务器

以下教程视为你已经在本地使用xcode开发了相关功能测试没问题,现在是上传部署到服务器

1、安装swift和Vapor

1.1、在服务器执行下面命令增加APT Repo

wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | sudo apt-key add -
echo "deb https://repo.vapor.codes/apt $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vapor.list

然后运行

sudo apt-get update

1.2、执行安装Vapor

sudo apt-get install swift vapor

1.3、安装成功验证

安装成功之后,可以执行下面的命令看是否安装成功

swift --version

2、服务器新建项目

2.1、创建服务器项目

vapor new <name>

记得把<name>修改成你的项目目录名字,比如MyProject

2.2、把本地创建的的项目文件上传覆盖

把本地项目的Package.swiftSources文件夹和Public文件夹的内容上传到服务器项目进行覆盖,如果在本地项目中使用的数据库地址,用户名密码和服务器不一样,记得都修改成服务器的

2.3、服务器编译项目

上传好之后,运行下面命令进行编译,第一次编译会比较耗时

vapor build

2.3、运行项目

编译好之后,运行下面命令运行即可

vapor run

3、服务器配置

因为vapor用的是8080的端口,所以记得去阿里云的的实例中,修改服务器对应的安全组,把8080这个端口放行

截屏2020-02-15上午11.53.19.png

如果你是用的宝塔管理面板,记得去宝塔的安全防火墙里面也添加8080端口为放行端口。

截屏2020-02-15上午11.54.25.png

这时候你可以测试下网址带8080端口是否可以访问,例如http://ddceo.com:8080/test,如果可以用就成功了。如果不可以用或者不想带端口请求,可以参考下面把80端口的请求转发到Vapor监听的端口,这样请求就可以不用带8080端口,而是直接请求http://ddceo.comtest

3.1、通过Nginx方向代理Vapor监听的端口

这个可以参考Ubuntu下Vapor监听80端口,如果你是用的宝塔之类的管理面板,可以在网站的伪静态配置规则中添加

location / {
                proxy_pass http://localhost:8080;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

如果你没有安装面板,可以修改/etc/nginx/nginx.conf文件,把把http段最后的include /etc/nginx/sites-enabled/*; 注释掉,修改为#include /etc/nginx/sites-enabled/*; ,然后增加

server {
        listen 80;
        server_name localhost;
        location / {
                proxy_pass http://localhost:8080;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

这样就完成了整个部署功能,如果本地修改开发了功能,可以继续上传覆盖,然后重新执行以下编译、发布即可

四、保持服务器后台运行

按照上面部署之后,如果我们按Ctrl-C或关闭运行服务器的终端窗口,它将停止工作。再请求时会报错误,我们希望关闭当前会话服务也能正常运行,所以我们需要 Supervisor协助我们管理进程通过后台来运行。

4.1、安装Supervisor

运行下面命令安装Supervisor

sudo apt-get install supervisor

4.2、配置Supervisor

supervisor配置需要放在/etc/supervisor/conf.d/目录下,以我们之前的项目 Lazypig 为例,在 /etc/supervisor/conf.d/ 目录下创建一个 Lazypig.conf 文件,输入以下配置信息。

例如项目存在服务器根目录下的/www/wwwroot/api_lazypig_net/Lazypig/目录

[program:lazypig]
command=/www/wwwroot/api_lazypig_net/Lazypig/.build/release/Run serve --env=production
directory=/www/wwwroot/api_lazypig_net/Lazypig/
autorestart=true
user=root
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log

配置说明:

  • command是要运行的命令,如果之前使用vapor build --release这个命令行编译的,那么就会有这个release文件夹,这样设置有代码优化。如果你想简单的设置,可以写成command=vapor run serve --env=production,这样就不需要根据目录设置了
  • directory设置为你项目的目录
  • autorestart设置为true,可以允许使用supervisor自动重启
  • user填写你服务器的用户名,如果你服务器用户名是ubuntu就填写ubuntu
  • 后面这两个参数不用修改

4.3、运行Supervisor

进入/etc/supervisor/conf.d/目录,依次运行一下命令

sudo supervisorctl reread    //重新读取配置
sudo supervisorctl add lazypig    //添加需要运行的配置
sudo supervisorctl start hello    //启动配置

在运行第二步时,其实已经直接启动了配置,所以在运行第三部如果有报错说已经运行,可以忽略掉,这时候就可以让vapor持续运行了。

Vapor项目代码变更后重新运行需要重启supervisor

可以运行vapor build --release重新编译,然后运行sudo supervisorctl restart all重启更新


☟☟可点击下方广告支持一下☟☟

最后修改:2023 年 08 月 02 日
请我喝杯可乐,请随意打赏: ☞已打赏列表