1
jessynt 2016-12-18 16:24:53 +08:00
docker ?
|
2
pimin 2016-12-18 16:29:17 +08:00
virtuialenv+Git 或者 SVN 才是出路吧
成熟的方案不用,强行造轮子把自己碾死的还少么 |
3
banks0913 OP @pimin 目前用的就是 virtualenv + git, 只不过我们目前的问题有两个,一个是并不是所有服务器都能随时进行 ssh (服务器在客户那边),另一个是 这个项目需要与其他几个功能上上相关的程序同时更新,需要引入版本号的概念。
|
4
banks0913 OP @pimin 版本号是公司内部自定义的,比如 1.5.3, 1.5.5 这种形式。并且能够支持回退。请问有什么建议吗?
|
5
messyidea 2016-12-18 16:45:47 +08:00
写个 makefile ? 不过感觉和 shell 脚本差不多
|
6
purebluesong 2016-12-18 16:47:19 +08:00
写个发布脚本是比较蠢的方式,如果用一些云服务比如阿里云的话这几十台可以直接利用服务的工具同步这几十台机器
|
7
pimin 2016-12-18 16:50:10 +08:00
@banks0913
Git 和 svn 都是版本控制系统,都有版本的概念. Git 版本号管理上可能不如 svn 来得直观 不能实实连过去手动更新是最好的 写个脚本,定时访问 myweb.com/demo.json,确定是否需要更新,需要更新到的版本号. 如果几十台服务器需求不一样,就根据每台机器的 mac 之类确定一个 ID.分别生成 mac1,2,3.json |
8
banks0913 OP @messyidea 已经有自动安装和部署的 shell 脚本,包括安装 nginx,uwsgi,git clone 代码,同步数据库,加入 supervisor 监控等。
不过目前的问题再代码更新这一块,目前需要自己一台一台登录上去执行 git pull , 同步数据库等操作。而且始终是更新到最新的提交,目前要引入版本号的概念,就需要做到每次 git pull 到某个指定版本( 1.4.5 ) |
9
banks0913 OP @pimin 目前我也偏向于你这种思路。写脚本自动 git pull 。不过版本号怎么搞还不知道,像 1.5.3 , 1.1.2 这种自定的版本号。用 git 的 tag 功能去实现吗?
|
10
banks0913 OP @purebluesong 没办法,我们的服务器是一台一台的实体机,并且安装在客户的机房里那种,而且有些客户不给我们远程 ssh 的权限。。。。
|
11
pimin 2016-12-18 17:00:49 +08:00
我对 Git 不是很熟,我有一个比较笨的方法,把 Git 自动生成的版本号和公司自定义的版本在 json 里标示出来.
比如 1a2b:1.5.3 你叫我更新到 1.5.3 我脚本里直接 checkout 1a2b 不就好啦 当然我觉得如果因为对 Git 不熟悉绕了路..还是比较萌蠢的 |
12
jimzhong 2016-12-18 18:54:03 +08:00
git 有 webhook
|
13
rainysia 2016-12-19 01:03:48 +08:00
以前公司直接打包成 rpm 包
|
14
jswh 2016-12-19 02:18:46 +08:00
Fabric?
|
15
jswh 2016-12-19 02:21:55 +08:00
@jswh 好吧没有登录权限那就没办法了。不过全打包部署的话有一个已经基本死了的东西 http://platter.pocoo.org/dev/, 可以把应用连同 virtualenv 打包成一个 tar, 直接解压就可以用。
@banks0913 |
16
lyhapple 2016-12-19 08:31:25 +08:00
|
17
botman 2016-12-19 08:42:16 +08:00 via Android
用 bitsync 或者 syncthing 做同步吧,修改代码后其他机器自动同步,版本管理直接交给 git 就行。
|
19
leopku 2016-12-19 10:14:58 +08:00
既然 python 系的,基于 python 的 ansible 这么好用的部署神器就不能不推荐一把(当然, ansible 不仅仅能做部署,跟 puppet 、 chef 、 salt 是类别的)
/t/327354#reply11 参见 11 楼 |
21
yanzixuan 2016-12-19 16:34:08 +08:00
我们这边用 docker 。虽然我觉得 virtualenv 也可以。。
|