最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Exrm 部署 PhoenixFramework 应用
时间:2022-06-30 20:46:47 编辑:袖梨 来源:一聚教程网
我的开发电脑是 macOS Sierra,服务器是 CentOS 7。
要将 mac 上的代码部署到 CentOS 上,我有两种选择:
将本地源代码复制到 CentOS 上,直接在服务器上编译构建
在本地开启 CentOS 虚拟机,打包完再部署到服务器上
那么,在 mac 上打包完再部署到服务器上如何?不行,我们可以看 PhoenixFramework 文档中的一段说明:
We need to be sure that the architectures for both our build and hosting environments are the same, e.g. 64-bit Linux -> 64-bit Linux. If the architectures don’t match, our application might not run when deployed. Using a virtual machine that mirrors our hosting environment as our build environment is an easy way to avoid that problem.
请确保构建与托管环境的架构一致,比如 64 位 Linux -> 64 位 Linux。如果架构不匹配,我们的应用部署后可能无法运行。使用模拟托管环境的虚拟机来构建是避免问题的一个简单办法。
上面的两种办法里,第一种是简单粗暴的,把代码复制到服务器,然后按文档操作即可。
第二种方法,则十分复杂。
另外,在第二种办法里,我用到了 Docker。
怎么不用虚拟机?我觉得虚拟机太占硬盘 - 我的 mac 只有 128G 容量,而 docker 的 image 则小巧多了,而且便携,方便后面复用。
下载 docker image
首先从 docker 上安装我配置好的 image:
$ docker pull chenxsan/docker-centos-erlang-elixir
然后运行一个容器(container):
$ docker run -i -t -v /Users/sam/myProjects:/home/myProjects --name container_name docker_image
注意上面的 -v 参数,我把 mac 上的 /Users/sam/myProjects 映射到 container 里的 /home/myProjects,这样在 container 中做的修改 mac 里能直接看到,反之亦然。
接下来,按 PhoenixFramework 文档 配置好 prod.secret.exs 文件。
然后运行以下命令:
$ MIX_ENV=prod mix do deps.get, phoenix.digest, compile, release
呃,事情并没有这么简单。
想想,如果我们只是把构建后的应用上传到服务器上,数据库怎么办?Migration 等等怎么办?
请参照 此链接给你的代码增加一个模块。
然后才运行打包的命令:
$ MIX_ENV=prod mix do deps.get, phoenix.digest, compile, release
该命令会打包出我们需要的应用。
接着,将项目下的 rel/app_name/releases/version_number_here/app_name.tar.gz 复制到服务器上。
然后解压:
$ tar xvzf app_name.tar.gz
接着运行以下两条命令来创建数据库与表:
$ bin/app_name command Elixir.AppName.ReleaseTasks create
$ bin/app_name command Elixir.AppName.ReleaseTasks migrate
等数据库与表建立好后,我们就可以运行起应用了:
$ bin/app_name start
相关文章
- 无期迷途主线前瞻直播总结 无期迷途主线前瞻直播内容介绍 11-22
- 以下哪种非遗技艺是用针在纸上绣画 蚂蚁新村11月21日答案 11-22
- 江南百景图听风塔怎么样 11-22
- 原神恰斯卡圣遗物怎么搭配 11-22
- 2024年霸王茶姬11月22日口令是什么 2024.11.22霸王茶姬口令介绍 11-22
- 光遇11.21季节蜡烛在哪里 光遇11月21日季节蜡烛位置攻略 11-22