资讯专栏INFORMATION COLUMN

全栈工程师之路——服务器端自动部署

OpenDigg / 1585人阅读

摘要:如果你想要成为一名全栈工程师,那么就必须要学会,学会线上服务器部署和发布。准备为了避免个人花钱买云服务器。用户名必须正确,否则会提示服务器拒绝密码。还有一个这个是自动部署需要的,目录结构如下这文件的配置很重要。

前言

作为一名前端工程师,不仅要能写前端页面,还要懂前端工程,各种库,各种框架,各种衍生语言,信手捏来。
如果你想要成为一名全栈工程师,那么就必须要学会Node.js,学会线上服务器部署和发布。

准备

为了避免个人花钱买云服务器。我试验的方式是本地Vmware虚拟机(装ubuntu 16.04)和本地windows平台(win7)。

1 Vmware虚拟机装上ubuntu(教程网上找)
装好以后,调整下窗口:

2 本地win7装上xshell

开始

当然,你搞Node.js,肯定虚拟机上要配置NodeJs环境
虚拟机搜Terminal,打开命令行,依次输入一下命令。
1 升级一下包

sudo apt-get update 

2 安装一些必备工具

sudo apt-get install git vim openssl openssh-server  build-essential libssh-dev wget curl 

openssh-server是我们通过ssh连接用到。
curl是一个Linux下的传输工具
git是安装我们的Node.js源码需要的版本工具

3 安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

4 安装nodejs

nvm install v8.1.2
nvm use v8.1.2

5 关闭防火墙(因为后面我们要ssh连到这台虚拟机,所以防火墙最好是关闭)

sudo ufw stop

6 安装yarn vue-cli pm2

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
npm install vue-cli pm2 -g

yarn是一个包管理工具,相当于npm
vue-cli是一个Vue的命令行工具
pm2是Node服务管理工具

测试虚拟机上Node是否安装好

虚拟机上创建一个server.js:

vi server.js

拷贝代码进去:

然后按下:wq! 保存
最后测试:

pm2 start server.js

如果看到如下状态,说明启动成功。

本地windows(win7)连接到虚拟机

1 修改sshd_config(保证能通过密码登录)

vim /etc/ssh/sshd_config

找到:
Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes

修改成:

Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

2 虚拟机启动ssh

sudo service ssh start

3 查看ip(记住你的IP)

ifconfig

4 打开xshell
输入ssh ubuntu@192.168.150.129
@前面是用户名 @后面是IP。 用户名必须正确,否则会提示服务器拒绝密码。另外虚拟机的网络配置是NAT,不需要改为桥接。
正常情况下能链接成功

创建一个私有仓库

我用的是bitbuket,自己先到上面常见一个push2Server的仓库。

然后本地clone下来

目录下创建一个server.js,代码和上面的一样。还有一个ecosystem.json(这个是pm2自动部署需要的),目录结构如下:

ecosystem.json这文件的配置很重要。

{
  "apps": [
    {
      "name": "Test",
      "script": "server.js",
      "env": {
        "COMMON_VARIABLE": "true"
      },
      "env_production": {
        "NODE_ENV": "production"
      }
    }
  ],
  "deploy": {
    "production": {
      "user": "ubuntu", //注意点1: user必须是你ubuntu的名字
      "host": "192.168.150.129", //注意点2: ip保证正确
      "port": "22", //端口保证正确
      "ref": "origin/master",
      "repo": "git@bitbucket.org:YellMan/push2server.git", //注意点3 必须用git@..开头 不要 用https开头的
      "path": "/home/ubuntu/www/testproject/production",//注意点4 目录最好是绝对路径
      "ssh_options": "StrictHostKeyChecking=no",
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

直接看注意点3: 因为虚拟机上要clone仓库代码,所以虚拟机上需要配置一下,git仓库的key.

到bitbuket上面的仓库,添加一个key。

key怎么生成看教程:https://confluence.atlassian....

$ ssh-keygen 
$ cat ~/.ssh/id_rsa.pub
$ pbcopy < ~/.ssh/id_rsa.pub

最后一步很重要:到虚拟机上运行:

ssh -T git@bitbucket.org

注意点4:因为pm2要在虚拟机上创建这个路径:/home/ubuntu/www/testproject/production。所以要保证testproject和www路径必须有权限。/home/ubuntu是我的根路径,然后创建www目录,目录下再创建testproject.
虚拟机上给一下权限:

sudo chmod 777 www
sudo chmod 777 testproject

最后,提交代码到远程仓库。

发布前配置

本地运行:

pm2 deploy ecosystem.json production setup

如果出现一下错误,重试一下就好了:

如果出现一下错误:

在服务端配置一下ssh key到的私有仓库(看注意点3)
如果出现以下错误:

这是因为pm2是全局安装的,路径不是在默认路径下面。所以需要用ls命令link一下.
在虚拟机运行如下命令:

whereis pm2
pm2: /opt/nodejs/bin/pm2
sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2

如果出现一下错误:

同理:

ubuntu@ubuntu:~$ whereis node
node: /usr/bin/node /home/ubuntu/.nvm/versions/node/v8.1.2/bin/node
sudo ln -s /home/ubuntu/.nvm/versions/node/v8.1.2/bin/node /usr/bin/node
最后发布项目
pm2 deploy ecosystem.json production

虚拟上看一下是否自动部署成功:


恭喜你,你成功了!

以上就是今天分享的内容,谢谢阅读,欢迎留言交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93782.html

相关文章

  • 网站部署

    摘要:就鹿晗宣布恋情导致微博宕机事件浅谈大型网站高可用性架构中午吃饭刷着刷着微博发现微博突然挂了。用户在使用浏览器访问一个网站时需要先通过协议向服务器发送请求,之后服务器返回文件与响应信息。 webpack:从入门到真实项目配置 自从出现模块化以后,大家可以将原本一坨代码分离到个个模块中,但是由此引发了一个问题。每个 JS 文件都需要从服务器去拿,由此会导致加载速度变慢。Webpack 最主...

    endless_road 评论0 收藏0
  • 【小项目】全栈开发培训手册 | 后(1) vert.x框架理解

    摘要:二来,给大家新开坑的项目一个参考。因此,本系列以主要以官方文档为基础,将尽可能多的特性融入本项目,并标注官网原文出处,有兴趣的小伙伴可点击深入了解。可以通过一些特殊协议例如将消息作为统一消息服务导出。下载完成后自行修改和。 开坑前言 我给这个专栏的名气取名叫做小项目,听名字就知道,这个专题最终的目的是带领大家完成一个项目。为什么要开这么大一个坑呢,一来,虽然网上讲IT知识点的书籍铺天盖...

    hightopo 评论0 收藏0
  • ❤️程序员国企太安逸想辞职,又嫌私企大厂压力大996我该如何选择?(高级全栈自动之路

    我们的人生 人就是贱! 进了体制,国企嫌太安逸,没激情,一眼能看到二十年后的人生。 进了私企嫌压力大,996太累,没休闲时间。辞职了想做点小生意发现自己根本不是那料,去做一些底层工作嫌不体面,工资低,遂家里蹲。 我知道你想要什么,想要有个几千万上亿,想要有名,有颜,有健硕的身体,有别墅带游泳池,有豪车,有自家公司,平时旅旅游,有个清纯漂亮的女朋友,一起有些放飞自我的激情生活,蹦极,爬山,去法国,去...

    missonce 评论0 收藏0
  • 全栈最后一公里 - Node.js 项目的线上务器部署与发布

    摘要:没有耐心阅读的同学,可以直接前往学习全栈最后一公里。我下面会罗列一些,我自己录制过的一些项目,或者其他的我觉得可以按照这个路线继续深入学习的项目资源。 showImg(https://segmentfault.com/img/bVMlke?w=833&h=410); 本文技术软文,阅读需谨慎,长约 7000 字,通读需 5 分钟 大家好,我是 Scott,本文通过提供给大家学习的方法,...

    singerye 评论0 收藏0
  • 全栈最后一公里 - Node.js 项目的线上务器部署与发布

    摘要:没有耐心阅读的同学,可以直接前往学习全栈最后一公里。我下面会罗列一些,我自己录制过的一些项目,或者其他的我觉得可以按照这个路线继续深入学习的项目资源。 showImg(https://segmentfault.com/img/bVMlke?w=833&h=410); 本文技术软文,阅读需谨慎,长约 7000 字,通读需 5 分钟 大家好,我是 Scott,本文通过提供给大家学习的方法,...

    Nosee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<