为什么80%的码农都做不了架构师?>>>   

注意,编译项目文件时所使用的操作系统要与服务器一致,例如需要运行在Ubuntu64上的项目,就需要在Ubuntu64的环境里编译。

服务器上先安装好

  • erlang
  • elixir
  • phoenix
  • postgreSQL
  • nginx

以下操作在本地进行

  • 添加exrm依赖{:exrm, "~> 1.0"}mix.exs文件
  • 修改config/prod.exs
# Configures the endpoint
config :hello_phoenix, HelloPhoenix.Endpoint,
http: [port: 8888],
url: [host: "example.com"],
root: ".",
cache_static_manifest: "priv/static/manifest.json",
server: true,
version: Mix.Project.config[:version]
  • 预编译静态资源
$ MIX_ENV=prod mix phoenix.digest
==> ranch (compile)
. . .
Check your digested files at 'priv/static'.
  • 生成发布包
    MIX_ENV=prod mix compile
    MIX_ENV=prod mix release
  • 测试发布
    rel/hello_phoenix/bin/hello_phoenix console
    没有错误的话,我们的应用会运行在http://localhost:8888/

发布

  • 将发布包发送到服务器
$ scp -i ~/.ssh/id_rsa.pub rel/hello_phoenix-0.0.1.tar.gz ubuntu@hostname.com:/home/ubuntu
hello_phoenix-0.0.1.tar.gz                100%   18MB  80.0KB/s   03:48
  • 登陆服务器,并解压
$ ssh -i ~/.ssh/id_rsa.pub ubuntu@hostname.com
$ sudo mkdir -p /app
$ sudo chown ubuntu:ubuntu /app
$ cd /app
$ tar xfz /home/ubuntu/hello_phoenix-0.0.1.tar.gz

以下在服务器进行

  • 让应用在系统启动时启动
    sudo vi /etc/init/hello_phoenix.conf
description "hello_phoenix"## Uncomment the following two lines to run the
## application as www-data:www-data
#setuid www-data
#setgid www-datastart on runlevel [2345]
stop on runlevel [016]expect stop
respawnenv MIX_ENV=prod
export MIX_ENV## Uncomment the following two lines if we configured
## our port with an environment variable.
env PORT=8888
export PORT## Add app HOME directory.
env HOME=/app
export HOMEpre-start exec /bin/sh /app/bin/hello_phoenix startpost-stop exec /bin/sh /app/bin/hello_phoenix stop
  • 启动应用
    sudo start hello_phoenix
  • 配置nginx
$ sudo touch /etc/nginx/sites-available/hello_phoenix
$ sudo ln -s /etc/nginx/sites-available/hello_phoenix /etc/nginx/sites-enabled
$ sudo vi /etc/nginx/sites-available/hello_phoenix
upstream hello_phoenix {server 127.0.0.1:8888;
}
# The following map statement is required
# if you plan to support channels. See https://www.nginx.com/blog/websocket-nginx/
map $http_upgrade $connection_upgrade {default upgrade;'' close;
}
server{listen 80;server_name .hostname.com;location / {try_files $uri @proxy;}location @proxy {include proxy_params;proxy_redirect off;proxy_pass http://hello_phoenix;# The following two headers need to be set in order# to keep the websocket connection open. Otherwise you'll see# HTTP 400's being returned from websocket connections.proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}
}
  • 重启nginx
    sudo service nginx restart

一切顺利的话,你可以在你设置的http://hostname.com/访问Phoenix应用了。

转载于:https://my.oschina.net/ljzn/blog/735671

风卷残云般部署好一个Phoenix应用,在Ubuntu服务器上相关推荐

  1. Ubuntu服务器上部署kodexplorer私有云盘

    阅读目录 一.准备 二.下载安装xampp 三.下载安装可道云kodexplorer 注意:云服务器部署和普通的Ubuntu上部署有一些区别,因为云服务器上只能使用命令行,没有界面. 一.准备 首先, ...

  2. Linux系统部署Nginx+Mysql+PHP,在WEB服务器上部署ecshop网站。

    Nginx下网站部署实战 题目:部署Nginx+Mysql+PHP,在WEB服务器上部署ecshop网站. 一. 搭建Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理we ...

  3. 如何在服务器上建一个共享文件夹,在云服务器上建共享文件夹

    在云服务器上建共享文件夹 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务器,您需要在 ...

  4. Ubuntu服务器上部署Vue项目

    一.创建Vue项目 用管理员权限打开命令行窗口,用vue-cli 来新建一个项目,执行->vue create [项目名称],我这里项目名称为testapp,回车命令行之后会有这么一个弹窗让你选 ...

  5. docker 部署了一个网站玩

    docker 部署了一个网站玩,结果网页上有很多乱码(数据库查出来的部分),也有正常显示的中文(静态页面部分). 就研究了很久服务器的编码问题.docker 镜像的编码问题,搞了很久最终发现是数据库编 ...

  6. 部署一个Javaweb项目到腾讯云服务器上,在腾讯云轻量应用服务器上部署javaweb项目

    博主每篇博文的浪漫主义 [听说,思念是一种病?] https://www.bilibili.com/video/BV1z14y177VT?share_source=copy_web&vd_so ...

  7. 集合70多种推荐算法,东北大学老师用Java写了一个开源库,在GitHub上收获近1500个Star...

     [AI科技大本营导读]在经过一年多的开发工作之后,LibRec 3.0 版本终于发布了.LibRec 是一个基于 Java 的开源算法工具库,覆盖了 70 余个各类型推荐算法,可以有效解决评分预测 ...

  8. IIS——服务器上部署网站及遇到的问题图解(二)

     上篇博文写了关于IIS安装及在本地使用IIS部署网站的方法,此篇博文记录一下在服务器上用IIS部署网站的方法. 一.背景 很荣幸接手了成绩系统项目并当了组长,也正直搬家时期,同时也换了新的服务器 ...

  9. 教你如何在window服务器上快速部署SpringBoot web项目

    小白笔录,大神请绕路.欲在服务器上部署项目,必先细细考量服务器上是否已经搭建好环境.此处以 web项目部署在 tomcat 上为例,前三个步骤以实际情况,读者自行跳过. 一.搭建 jdk 环境 在搭建 ...

最新文章

  1. 明星软件工程师的十种特质
  2. C/C++注册表【2】打开,创建,删除
  3. 【服务器】宝塔LNMP安装Discuz!
  4. java 给多人发送、抄送
  5. js原生继承几种方式
  6. Android实战开发--三种地图类型的设计
  7. 推荐个软件EveryThing(可以快速找到电脑里的各种东西)
  8. sklearn包使用Extra-Trees和GridSearchCV完成成人死亡率预测
  9. 第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组(2021年4月18日)
  10. 微信小程序剪切图片的功能
  11. 利用Python画一只小猪佩奇
  12. 被删除的pip,重新安装
  13. python做网站开发_如何用Python做网站开发
  14. 关于存储优化型实例和大型数据仓库EC2实例选型
  15. statsmodels.tsa.stattools.adfuller 的用法
  16. 爱普生几种低功耗时钟芯片
  17. 辐射发射的测试标准和测试方法
  18. 什么是webpack?webpack构建工具如何理解?webpack是干什么的?
  19. css3新增的属性和用法
  20. 正厚干货 |银行承兑汇票

热门文章

  1. 文本分类在内容安全应用中的数据不平衡问题
  2. 自动驾驶汽车将如何影响未来的城市生活
  3. 前后端数据交互——ajax(原生及jquery)
  4. 三星Galaxy S8 vs Galaxy S9:值得升级吗?
  5. C++之list删除元素
  6. 计算机内功内功修炼:信息的表示与和处理
  7. 架构师之修炼内功篇-系统性能优化 .
  8. 微信小程序获取定位数据
  9. 如何制作照片拼图?这两个拼图方法既简单又好用
  10. Android-小米手机Toast自带应用名问题