阿里云服务器 从0 配置Node Nginx 免密ssh 等 环境实现 pm2一键线上部署

本地环境 Mac 服务器 阿里云 ubuntu 14 x64

云服务器环境配置

ssh 链接

ssh root@ip地址
复制代码

磁盘管理

fdisk -l
复制代码

查看硬盘使用情况

df -h
复制代码
control + d \\退出ssh
复制代码

==========================

创建权限较低的用户

adduser manager
复制代码

升级权限

gpasswd -a manager sudo
sudo visudo
复制代码

=======================

配置ssh公钥秘钥(已配置)

启动ssh代理

eval "$(ssh-agent -s)"
复制代码

加入ssh代理

ssh-add ~/.ssh/id_rsa
复制代码

(服务器授权文件 .ssh目录下)

vi authorized_keys

~/.ssh$ chmod 600 authorized_keys
~/.ssh$ sudo service ssh restart
复制代码

=======================

防火墙配置

sudo iptables -F

sudo vi /etc/iptables.up.rules
复制代码

防火墙配置文件



*filter
#allow all connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow out traffic
-A OUTPUT -j ACCEPT

#allow http https
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT

#allow ssh port login
-A INPUT -p tcp -m state --state NEW --dport 29999 -j ACCEPT

#ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#log denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7

#reject all other inbound
#-A INPUT -j REJECT
#-A FORWORD -j REJECT

#drop incoming sensitive connections
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150 -j DROP
COMMIT
复制代码

sudo iptables-restore < /etc/iptables.up.rules
复制代码

查看防火墙是否启动

sudo ufw status
->Status: inactive
sudo ufw enable
复制代码

防火墙开机自启动 shell脚本配置

sudo vi /etc/network/if-up.d/iptables
复制代码

#!/bin/sh
iptables-restore /etc/iptables.up.rules
复制代码

给予脚本执行权限

sudo chmod +x /etc/network/if-up.d/iptables
复制代码

=======================

升级本地工具包

sudo apt-get update
复制代码

安装必要的依赖

sudo apt-get install git vim openssl build-essential libssh-dev wget curl git
复制代码

安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
复制代码

罗列nodejs版本

nvm ls
复制代码

安装nodejs8.1.2

nvm install v8.1.2
复制代码

使用

nvm use v8.1.2
复制代码

设为默认

nvm alias default v8.1.2
复制代码

配置npm源

npm --registry=https://registry.npm.taobao.org install -g npm
复制代码

增加系统文件监控数目

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
复制代码

安装cnpm

npm --registry=https://registry.npm.taobao.org install -g cnpm
复制代码

配置防火墙端口(加入端口3006到白名单)

sudo vi /etc/iptables.up.rules
复制代码

在配置文件中 将website段代码复制 改端口3000为3006

重载配置

sudo iptables-restore </etc/iptables.up.rules
复制代码

================================

再node 官网中复制about代码例

vi server.js
复制代码

启动服务

node server
复制代码

关闭防火墙

sudo ufw stop
复制代码

关闭nginx

sudo service nginx stop
复制代码

启动服务

node server
复制代码

启动另一个终端

curl http://127.0.0.1:3006
-》Hello World

复制代码

##本地安装 通过 Homebrew 安装yarn

brew install yarn
复制代码

服务器安装

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
复制代码

设置yarn安装源为淘宝

yarn config set registry https://registry.npm.taobao.org
复制代码

用npm全局安装 vue-cli pm2 webpack gulp grunt-cli(服务器与本地相同)

npm install vue-cli pm2 webpack gulp grunt-cli -g
复制代码

用pm2来自动维护server进程

pm2 start server.js
复制代码

访问

curl http://127.0.0.1:3006
复制代码

查看服务

pm2 list
pm2 show server
复制代码

结束

pm2 stop server
复制代码

查看日志内容

pm2 logs
复制代码

重启服务

pm2 restart server
复制代码

安装 vue-cli

npm i vue-cli -g
复制代码

===============

node -v
->8.1.2
npm -v
->5.0.3
pm2 -v
2.5.0
yarn --varsion
0.24.6
vue -V
2.8.2
brew -v
1.2.2
复制代码

Nginx 配置

============================

阿里云服务器预装apache

停apache

sudo service apache2 stop
复制代码

删除

update-rc.d -f apache2 remove
复制代码

彻底删除

sudo apt-get remove apache2
复制代码

更新关联表

sudo apt-get update
复制代码

安装nginx

sudo apt-get install nginx
nginx -v
复制代码

查看已部署项目配置

cd /etc/nginx/conf.d
ls
复制代码

配置后重启

sudo service nginx restart
复制代码
如果出错
sudo nginx -t
复制代码

wx-123mai-vip-3006.conf
upstream wx{
  server 127.0.0.1:3006;
}
server {
        listen 80;
        server_name wx.123mai.vip;
        location / {
                proxy_set_header X-Real-Ip $remote_addr;
                proxy_set_header X-Farward-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nginx-Proxy true;

                proxy_pass http://wx;
                proxy_redirect off;
        }
}
复制代码

安装MongoDB数据库

====================

Ubuntu安装MongoDB 14.04 x64

1 public key 导入
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
复制代码
2 创建列表(阿里云源)
 echo "deb [ arch=amd64 ] https://mirrors.aliyun.com/mongodb/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
复制代码
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

复制代码
3 更新本地包
 sudo apt-get update
复制代码
4 安装全家桶
 sudo apt-get install -y mongodb-org
复制代码

开启服务

sudo service mongod start/stop/restart
复制代码

检查是否启动成功

cat /var/log/mongodb/mongod.log 查看是否有日志信息
复制代码

如果安装失败

cd /etc/apt/sources.list.d
ls
vi mongo***** 
复制代码

修改源地址

查看mongodb 端口及安全配置

sudo vi /etc/mongod.conf
->
net:
  port: 27017
  bindIp: 127.0.0.1
复制代码

打开防火墙配置,添加白名单

sudo vi /etc/iptables.up.rules
复制代码

-A OUTPUT -j ACCEPT

#allow http https
-A INPUT -p tcp --dport 443 -j ACCEPT
-A IMPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 8081 -j ACCEPT

#allow ssh port login
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#mongodb connect
-A INPUT -s 127.0.0.1 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -d 127.0.0.1 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
复制代码

使用 git

=======================

New Project

git 全局设置

git config --global user.name "Prove"
git config --global user.email "137684885@qq.com"
复制代码

创建 git 仓库

mkdir vxfirst
cd vxfirst
touch README.md
git commit -m "first commit"
git remote add orgin git@gitee.com:luo-xin/vxfirst.git
git push -u orgin master
复制代码

已有项目

cd existing_git_repo
git remote add origin git@gitee.com:luo-xin/wx.git
git push -u origin master
复制代码

git 公钥 私钥 配置

ssh-keygen -t rsa -b 4096 -C '137684885@qq.com'
不断回车, 设置没有密码的公钥
复制代码

开启ssh代理

eval "$(ssh-agent -s)"
复制代码

码云配置公钥

cd ~/.ssh
cat id_rsa.pub 打印内容到控制台
复制内容,到码云的公钥配置页面
保存
复制代码

测试是否有拉取权限

git clone git@gitee.com:luo-xin/vxfirst.git
复制代码

配置pm2

===================

本地拉取项目代码

部署项目到www目录 设置权限

cd ~/www
mkdir wx
sudo chmod 777 vxfirst
复制代码

git 本地提交

显示本地与上次提交版本文件不同
git diff

把当前所有修改添加到下次提交中:
git add
附加信息提交
git commit -m '修改信息'
提交
git push origin master




正确步骤:(当新建一个项目要重新git至仓库时)
1. git init //初始化仓库

2. git add .(文件name) //添加文件到本地仓库

3. git commit -m "first commit" //添加文件描述信息

4. git remote add origin + 远程仓库地址 //链接远程仓库,创建主分支

5. git pull origin master // 把本地仓库的变化连接到远程仓库主分支

6. git push -u origin master //把本地仓库的文件推送到远程仓库
复制代码

第一次初始化

pm2 deploy ecosystem.json production setup
复制代码

发布

pm2 deploy ecosystem.json production
复制代码

ecosystem.json




{
  "apps": [
    {
      "name": "IceAndFire",
      "script": "start.js",
      "env": {
        "COMMON_VARIABLE": "true"
      },
      "env_production": {
        "NODE_ENV": "production"
      }
    }
  ],
  "deploy": {
    "production": {
      "user": "你的服务器登录名",
      "host": ["你的服务器 IP"],
      "port": "你的服务器登录端口 默认 22",
      "ref": "origin/master",
      "repo": "你的 git 仓库地址",
      "path": "/www/icefire/production",
      "ssh_options": "StrictHostKeyChecking=no",
      "post-deploy": "yarn install && npm run build && pm2 startOrRestart ecosystem.json --env production",
      "env": {
        "NODE_ENV": "production"
      }
    },
    "plus": {
      "user": "你的服务器登录名",
      "host": ["你的服务器 IP"],
      "port": "你的服务器登录端口 默认 22",
      "ref": "origin/master",
      "repo": "你的 git 仓库地址",
      "ssh_options": "StrictHostKeyChecking=no",
      "post-deploy": "yarn install && pm2 startOrRestart ecosystem.json --env production",
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

复制代码

转载于:https://juejin.im/post/5ac2365751882555666fdd22

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值