部署项目

1、git仓库配置(本地到第三方仓库)

上传项目或者修改项目代码的话每次都从代码这边一个字节字节的上传显然是低效的这个时候我们就会用到git仓库

1、git init 
1、git add . 添加所有文件
3、git commit -m 'first commit' 添加到本地
4、git remote add origin xxx(git地址可选的,如果我们是直接从仓库下载就不用这一步了
5、git push -u origin master 添加到远程
6、修改后 git status -s 查看修改了那些s
7、git fetch 如果仓库有东西
8、git merge origin/master (合并再提交)

2、本地到第三方仓库到服务器

1、yg@iZ2zec61wsgbo9t9i346jbZ 进入到我们的服务器
2、mkdir temp 在服务器上新建个目录
3、cd temp
4、git clone xxx(把仓库代码下载到服务器上,这里我用的是https,如果你用的是ssh那么就需要在服务器上生成id_rsa 和id_rsa.puh也就是key,然后存到github上这样才能建立服务器于github的连接)

3、pm2把项目部署到服务器上pm2 ecosystem

1、我们配置的方式是配置文件的方式
2、在项目里边新建一个ecosystem.json文件(配置如下)
{
  "app":[
    {
      "name": "test-server", // 应用的名字,
      "script": "app.js", // 启动的脚本文件
      "env": {
        "COMMON_VARIABLE": "true" // 启动的时候需要传进去的变量
      },
      "env_production": { // 生产环境的变量
        "NODE_ENV": "production"
      }
    }
  ],
  // 配置部署任务
  "deploy":{
    // 任务的名字
    "production": {
      "user": "yg",// 服务器上发布应用的user
      "host": ["39.96.4.34"], // 有多台服务器的话就传多个
       "port": "20",// 这个端口需要在安全组里边开启而且需要时用户登录时默认的端口,为了安全应该修改,但是我们没有修改
      "ref": "origin/master", //指定为主分支
      // 指定仓库地址,这里也可以是ssh,但是要确保服务器上的id_rsa 和id_rsa.puh,key要添加到代码仓库上
      "repo": "https://github.com/sunnyMyBaby/test-server.git",
      "path": "/www/web/production", // 把这个项目保部署到服务器的那个目录下 我用的是用户目录(服务器上输入pwd可查看) "path": "/home/yg/www/web/production",
      "ssh_options": "StricHostKeyChecking=no", // 取消key的校验,这一句可以不写但是之后回车会提示输入密码
      "post-deploy": "npm install && npm run build && pm2 startOrRestart ecosystem.json --env production",(可选)
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

3、进入到服务器更目录 新建/www/web/目录

4、yangguang-01:test-server yangguang02$  进入本地我们的项目中

5、切换到本地项目中pm2 deploy ecosystem.json production setup这句命令让pm2连接上我们的服务器,

   从服务器里边创建我们发布项目所需要的文件夹,production是任务的名字可以修改setup是参数

6、到这里有可能就会出现Deploy failed,为啥呢,权限问题我们用的是yg这个用户,这个用户在根路径的

   www下面是没有新建文件的权限的,所以我们需要在web这个文件夹下修改权限(刻读可写可改)
   
   sudo chmod 777 web(www创建在绝对根目录下)  或者 sudo chmod 777 /www(ww创建在用户目录下,/home/yg/www/web/用户目录)

7、原理总结:通过本地pm2的这个工具在本地的命令上登录服务器,然后通知服务器从我们的git这个私有仓

   库里边把代码clone到我们的服务器里边,然后部署到相应的文件夹中,然后等待进一步的操作,这时候就可以进行第一次发布了

8、pm2 deploy ecosystem.json production  切换到本地项目代码 如果本地修改没有上传到github就会报错 

   commit or stash your changes before deploying,这时候需要现提交到远程仓库

9、然后再输入pm2 deploy ecosystem.json production 有可能会报错

   bash: pm2: command not found

   post-deploy hook failed
   
   这是因为我们在在服务器上使用的是ssh连接方式,所以切换到服务器终端里边用户yg的根目录下
  
  vi .bashrc 把下面的代码注释掉(避免提前返回)
  case $- in
    *i*) ;;
      *) return;;
  esac
  然后重新加载
  source .bashrc
  最后在本地项目终端执行第8步的代码
10、pm2 list 查看服务器中正在跑的服务(到这里发布成功,不带表我们可以访问,要修改域名指向,修改nginx,让nginx识别域名之后呢,把请求都转发到服务器上的3000端口)
11、yg@iZ2zec61wsgbo9t9i346jbZ:/etc/nginx/conf.d$修改nginx配置文件(sudo mv www-wwygcode-3000.conf www-server-test-3000.conf)把前面地址修改为后面的可以不用
upstream wwygcode {
  server 127.0.0.1:8081;
}

server {
 listen 80;
 server_name 39.96.4.34;

 location / {
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

   proxy_set_header Host $http_host;
   proxy_set_header X-Nginx-Proxy true;

   proxy_pass http://wwygcode;
   proxy_redirect off;
 }
}
改为如下
upstream serverTest {
  server 127.0.0.1:3000;
}

server {
 listen 80;
 server_name www.wwygcode.com;

 location / {
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

   proxy_set_header Host $http_host;
   proxy_set_header X-Nginx-Proxy true;

   proxy_pass http://serverTest;
   proxy_redirect off;
 }
}
sudo nginx -s reload 重启nginx
12、重启之后我们的访问http://www.wwygcode.com/报错502 Bad Gateway
    原因:除了服务器的的端口映射还有node本身,还有什么可能导致服务器出错?防火墙
    我们现在是nginx来把来自于www.wwygcode.com域名下的请求转发到了服务器上的他本地的3000端口
    所以防火墙需要允许3000口的访问
   sudo vi /etc/iptables.up.rules
   # mongodb connect   允许请求的进入和返回
   -A INPUT -s 127.0.0.1 -p tcp --destination-port 19999 -m state --state NEW,ESTABLISHED -j ACCEPT
   -A OUTPUT -d 127.0.0.1 -p tcp --source-port 19999 -m state --state ESTABLISHED -j ACCEPT 
   -A INPUT -s 127.0.0.1 -p tcp --destination-port 3000 -m state --state NEW,ESTABLISHED -j ACCEPT
   -A OUTPUT -d 127.0.0.1 -p tcp --source-port 3000  -m state --state ESTABLISHED -j ACCEPT

    sudo iptables-restore /etc/iptables.up.rules 载入防火墙文件
    到这里就可以访问了,如果打开还是502,那么可以看一下pm2 list 看看有没有启动,如果没有启动
    yg@iZ2zec61wsgbo9t9i346jbZ:~/www/web/production/source$ pm2 start app.js 这样手动去启动就可以了

4、部署成功之后本地修改代码如何同步线上版本

1、修改之后
   git add .
   git commit -m "change app.js"
   git push origin master
   pm2 deploy ecosystem.json production
sudo  cp www-server-test-3000.conf vue-server-test-3001.conf
upstream vuetest {
  server 127.0.0.1:3001;
}

server {
 listen 80;
 server_name vuetest.wwygcode.com;

 location / {
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

   proxy_set_header Host $http_host;
   proxy_set_header X-Nginx-Proxy true;

   proxy_pass http://vuetest;
   proxy_redirect off;
 }
 // 静态资源访问
 locations ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt){
   root /home/yg/www/production/current/public
 }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容