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

836 阅读3分钟

本地环境 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"
      }
    }
  }
}