全球主机交流论坛

标题: 尝试实现 Python 的一键部署 Tushe.org!标题要长! [打印本页]

作者: ericls    时间: 2015-7-24 10:27
标题: 尝试实现 Python 的一键部署 Tushe.org!标题要长!
本帖最后由 ericls 于 2015-7-23 22:51 编辑

Python 因为部署方式问题 在众多站长中普及率比较低 楼主希望用 container 的方式解决这个问题

废话不多说,本人尝试用 Docker 作为 container 来发布 Python 写的 WEB 应用。
这次以 tushe.org 这个源码为例:https://github.com/ericls/tushe

将 container 托管于 docker 官方的 hub

编写了一个很小很小的 shell 来实现一键部署

只需要一个命令就可以体验:

  1. bash -c "$(wget -O - https://raw.githubusercontent.com/ericls/tushe/master/docker-run.sh)"
复制代码


请确保你的 vps 能够运行 docker,基本上 kernel 在 3.10 以上的问题都不大

会提示输入端口,不要输入80这些常用的

运行完成之后, 会提示 nginx 的配置,照着配置就可以了。(那个端口是个 socket 端口,所以直接 http 访问不了,需要从 nginx 过一次)

第一次运行的时间会比较久 因为需要下载安装一些东西

以后再运行这个命令可以实现重启 或者 服务器重启后的再次启动等等

目前对于这种部署方式只是个尝试 但是在这个过程中已经看到了令人激动的可能性!以后会继续往这个方向探索。
作者: 8QE.    时间: 2015-7-24 10:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: ericls    时间: 2015-7-24 10:34
8QE. 发表于 2015-7-23 22:31
前排占楼帮顶

8QE 大神 看我可怜 送我几个杜甫吧
作者: Saker    时间: 2015-7-24 10:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 卖女孩的小火柴    时间: 2015-7-24 10:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: ericls    时间: 2015-7-24 10:37
Saker 发表于 2015-7-23 22:35
楼主我又来支持你了。。前排专业点赞二十年

Python 就是因为部署方式问题 在众多站长中普及率比较低 希望这种 container 的方式能解决这个问题
作者: 6911054    时间: 2015-7-24 10:54
持续关注!
真的!
作者: ericls    时间: 2015-7-24 11:07
6911054 发表于 2015-7-23 22:54
持续关注!
真的!

感谢关注
作者: ericls    时间: 2015-7-24 12:43
卖女孩的小火柴 发表于 2015-7-23 22:36
貌似不错,占个位先。

试试好不好玩啊
作者: 分享吧    时间: 2015-7-24 12:44
楼主我又来支持你了。。前排专业点赞二十年
作者: im286    时间: 2015-7-24 12:45
持续关注!
真的!
作者: flydon    时间: 2015-7-24 13:25
撸主好牛叉,最近在学python
有神马捷径没有

作者: gmal    时间: 2015-7-24 15:01
楼主我又来支持你了。。前排专业点赞二十年
作者: yumin9822    时间: 2015-7-24 15:06
docker有啥优势呢?
作者: ericls    时间: 2015-7-24 21:12
yumin9822 发表于 2015-7-24 03:06
docker有啥优势呢?

用之则爽 不用则不知其爽
作者: yumin9822    时间: 2015-7-27 13:38
本帖最后由 yumin9822 于 2015-7-27 14:13 编辑
ericls 发表于 2015-7-24 21:12
用之则爽 不用则不知其爽


docker真心好东西。我在CentOS6 x86_64上测试通过。内核必须升级3.10以上。
就是有点费空间
但是部署起来真心快!
还有个问题,tushe上传的图片保存在哪里?
作者: ericls    时间: 2015-7-28 08:56
yumin9822 发表于 2015-7-27 01:38
docker真心好东西。我在CentOS6 x86_64上测试通过。内核必须升级3.10以上。
就是有点费空间
但是部署 ...

感谢测试

储存在数据库里 你可以稍微修改一下 就能储存在硬盘里

然后用 docker 作个 volume 和主机磁盘共享
作者: 狼族工作室    时间: 2015-7-28 08:58
来,支持一下。。。
作者: bjrjk    时间: 2015-7-28 11:37
卧槽
作者: ericls    时间: 2015-7-28 11:58
bjrjk 发表于 2015-7-27 23:37
卧槽

肿么了?
作者: mix    时间: 2015-7-28 13:08
赞赞赞
作者: yumin9822    时间: 2015-7-29 11:29
ericls 发表于 2015-7-28 08:56
感谢测试

储存在数据库里 你可以稍微修改一下 就能储存在硬盘里

求教在哪里修改到存到硬盘。
-v参数我会使用
作者: lzdszdl    时间: 2015-7-29 11:40
楼主我又来支持你了。。后排专业点赞二十年
作者: yumin9822    时间: 2015-7-29 15:54
本帖最后由 yumin9822 于 2015-7-29 15:56 编辑

在你的基础上,我添加了如下脚本,新增加一个nginx container。真正一键
  1. #!/bin/bash
  2. if ! [ "$(id -u)" == "0" ]; then
  3.         echo 'Please run as root'
  4.         exit
  5. fi

  6. echo "Which port do you want Tushe application to run on?"
  7. read -p "(Default: 3333):" tushe_port
  8. if [ "$tushe_port" = "" ]; then
  9. tushe_port="3333"
  10. fi

  11. echo "Which port do you want nginx application to run on?"
  12. read -p "(Default: 808):" nginx_port
  13. if [ "$nginx_port" = "" ]; then
  14. nginx_port="808"
  15. fi

  16. if [ `which docker` ]; then
  17.         echo 'Docker installed'
  18. else

  19.         if [ `which wget` ]; then
  20.                 echo 'wget installed'
  21.         else
  22.                 if [ `which apt-get` ]; then
  23.                         apt-get update
  24.                         apt-get install wget -y
  25.                 fi
  26.                 if [ `which yum` ]; then
  27.                         yum install wget -y
  28.                 fi
  29.         fi

  30.         echo -n "Installing docker"
  31.         wget -qO- https://get.docker.com/ | sh
  32. fi

  33. mkdir /home/tushe/db/ -p

  34. echo "Setting up database"
  35. docker rm -f tushe_db
  36. docker run -d --name tushe_db -v '/home/tushe/db:/data/db' -e AUTH=no tutum/mongodb

  37. echo "Runing Tushe"
  38. sleep 5
  39. docker rm -f tushe
  40. docker run --name tushe -d --link tushe_db:db -p $tushe_port:3333 ericls/tushe

  41. #Create a tushe.conf file, It will overwrite the existing same file.
  42. cat > /etc/tushe.conf<<EOF
  43. server {
  44.         listen $nginx_port;
  45.         server_name example.org;

  46.         location / {
  47.                 uwsgi_pass      `wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'`:$tushe_port;
  48.                 include         uwsgi_params;
  49.                 uwsgi_param     SCRIPT_NAME '';
  50.         }
  51. }
  52. EOF

  53. echo "Runing Nginx"
  54. sleep 5
  55. docker rm -f nginx-tushe
  56. docker run --name nginx-tushe -v /etc/tushe.conf:/etc/nginx/conf.d/tushe.conf -d -p $nginx_port:$nginx_port nginx

  57. # You can always re-run this script
  58. # to restart Tushe application
复制代码



作者: ericls    时间: 2015-7-30 00:54
yumin9822 发表于 2015-7-29 03:54
在你的基础上,我添加了如下脚本,新增加一个nginx container。真正一键

不错 。。 非常好的思路 如果再加上判断 nginx 的配置文件位置就完美了
作者: leemw    时间: 2015-7-30 02:13
还是没有LNMP等一键包来的直观。。。继续跑D.S.
作者: ericls    时间: 2015-7-30 03:35
leemw 发表于 2015-7-29 14:13
还是没有LNMP等一键包来的直观。。。继续跑D.S.

DS 是啥?




欢迎光临 全球主机交流论坛 (https://fd.vvwvv.eu.org/) Powered by Discuz! X3.4