请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

本地pm2部署服务器,但始终获取不到最新的代码?没有报错。(腾讯云centos7.2 64位)

为什么

1、腾讯云centos7.2 64位,本地pm2部署服务器,没有报错,但始终获取不到最新的代码。

2、在服务器端,手动修改代码后,直接通过ip或域名访问页面,也不会自动刷新修改后的内容。

https://img1.sycdn.imooc.com/szimg//590086750001b0f614400573.jpg

正在回答 回答被采纳积分+3

5回答

Scott 2017-04-28 16:16:04

你是不是没有 setup 成功啊,我看服务器的目录,是 server-test 下面直接是文件了

setup 成功后,应该是 server-test/production/current|source|shared 的目录才对

0 回复 有任何疑惑可以回复我~
Scott 2017-04-27 18:40:26

ecosystem 文件里的 git 地址 是 git 协议吧,另外 ref 是 origin/master

本地基于主分支 master checkout 一个新分支出来


git checkout master -b xxx


然后 xxx 上做一些改动,push 上去,再把 ecosystem 的 ref 也改成 origin/xxx,再 push


然后重新 deploy 下看看


感觉这个很奇怪,pm2 如果拿不到最新的 master 代码,就不应该 deploy success 啊


0 回复 有任何疑惑可以回复我~
  • 添加新分支后,重新setup和部署,还是一样的:本机显示部署成功,但还是拿不到最新push的版本。        还有一个问题就是:不添加--watch,pm2不会自动加载文件吧。我在服务器手动修改了文件,直接刷新页面也不显示改动的内容,也还是旧的内容。
    回复 有任何疑惑可以回复我~ 2017-04-28 00:18:02
  • https://git.oschina.net/yunling2016/server-test.git   我的文件应该没有问题,否则,在本地不能部署成功吧。
    回复 有任何疑惑可以回复我~ 2017-04-28 00:27:07
  • Scott 回复 提问者 qq_蜡像网复原师_0 #3
    --watch 加上后,是可以监听你在服务器的文件改动的,我自己一般是不加的,因为从本地每次部署的时候,就会执行 startOrRestart 的操作,会强制重启,卸掉内存,重新加载。
    
    你在服务器上改了后,可以在 current 目录下,重新执行 pm2 startOrRestart ecosystem.json --env production 这样就可以重启这个项目。
    
    现在的问题是,拿不到最新代码,你把 git 地址协议换一下,换成 "repo" : "git@oschina.net 这种的,再试试看,另外把 ecosystem 代码贴出来给我看一下
    回复 有任何疑惑可以回复我~ 2017-04-28 08:27:55
Scott 2017-04-27 07:55:36

pm2 logs 打印出来,没有报错对吧


sudo nginx -s stop

或者 sudo pkill -9 nginx

停掉 nginx 后,还是 pm2 启动这个 nodejs 服务,如果这个是跑在 3001 端口的话,通过


xx.xx.xx.xx:3001 ip 来访问这个端口试试看,如果能访问到,说明是 nginx 的配置没有成功,如果访问不到,说明是 nodejs 本身的问题。


还有一种可能是 iptables 没有配置端口访问的权限,导致 nginx 监听不到 nodejs 的端口服务

0 回复 有任何疑惑可以回复我~
  • pm2 logs没有报错。我git上的项目文件,和课程中一样的app.js静态文件,而且只有这一个文件。没有动过、开启和配置过iptables。
    nginx stop后,加端口8090可以访问。nginx start后,域名、域名:8090、ip、ip:8090均能访问得到。
    1、即使我在服务器vi、wq修改文件后,页面依然不显示新的改动,是否一定要加上--watch,才能自动重载文件,显示新内容?
    回复 有任何疑惑可以回复我~ 2017-04-27 09:51:40
  • 2、我在本机git commit git push,pm2 deploy ecosystem.json production后,服务器端current、source中的文件依然不是最新提交的版本(两端命令行没有报错,pm2 logs也没有报错)。也就是,本地pm2部署到服务器,无法获取到github项目文件最新的那个版本,只能重新setup,才能获取到最新的。     
    是不是我的pm2安装有问题,还是centos的问题,还是7.2的问题,还是别的问题呢?
    回复 有任何疑惑可以回复我~ 2017-04-27 09:52:13
  • Scott 回复 提问者 qq_蜡像网复原师_0 #3
    Nginx 是能缓存静态文件的,但我推测不是 Nginx 的问题,应该是 PM2 部署的时候,无法让 centos 服务器成功拉取到你本地 push 到 git repo 的最新代码。
    
    现在先修改下 app.js 然后 commit/push 到 repo 后,再执行 pm2 deploy ecosystem.json production 后,本机控制台打印的是什么内容。
    
    另外,deploy 后,登录到服务器,直接通过 git clone your-git-repo-url 往服务器随便一个目录获取下源代码,看看这个代码是不是最新的
    回复 有任何疑惑可以回复我~ 2017-04-27 11:35:48
提问者 qq_蜡像网复原师_0 2017-04-28 09:36:14

哦,那--watch是不需要咯。repo用的就是git@ 这样的,我昨晚也试过https也不行。

{
	"apps":[
		{
			"name": "serverTest",
			"script": "app.js",
			"env": {
				"COMMON_VARIABLE": "true"
			},
			"env_production": {
				"NODE_ENV": "production"
			}
		}
	],
	"deploy":{
		"production":{
			"user": "root",
			"host": ["119.29.178.47"],
			"ref": "origin/xiao",
			"repo": "git@git.oschina.net:yunling2016/server-test.git",
			"path": "/www/server-test/production",
			"ssh_options": "StrictHostKeyChecking=no",
			"env": {
				"NODE_ENV": "production"
			}
		}
	}
}


0 回复 有任何疑惑可以回复我~
  • 0、pm2 list cpu为0%,本机和服务器cpu都为0%;
    1、应该是pm2,根本就没有自动进行这些动作;
    2、腾讯云服务器,30天体验版。服务器不支持?
    回复 有任何疑惑可以回复我~ 2017-04-28 10:24:48
  • Scott 回复 提问者 qq_蜡像网复原师_0 #2
    你把你服务器登录权限给我,发我邮箱 wolf18387@qq.com,我登录试试看
    回复 有任何疑惑可以回复我~ 2017-04-28 14:04:43
林南墙 2017-04-26 23:28:35

pm2 启动时加 --watch

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信