当前位置: 首页 > news >正文

阿里云服务器 从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

相关文章:

  • C# 谁改了我的代码 使用 Resharper 快速做适配器
  • 学不好Linux?我们分析看看正确的学习方法是什么
  • openssl的应用及创建CA
  • 基于zookeeper的高可用Hadoop HA集群安装
  • 归并排序的相关用法
  • 前端js -- this指向总结。
  • 理解Java集合(三)Map : HashMap/SortedMap/TreeMap
  • java io流
  • Heap Dump (heap=dump)
  • 配置Etcd集群和TLS认证
  • 学习最重要是方法,管理最重要是高度
  • git分支管理和工作流规范:不同场景细化和演示
  • JSON返回DateTime/Date('123123123')/解决办法
  • BZOJ 1926 [Sdoi2010]粟粟的书架
  • 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [笔记] php常见简单功能及函数
  • 【知识碎片】第三方登录弹窗效果
  • 230. Kth Smallest Element in a BST
  • Angular Elements 及其运作原理
  • Angular6错误 Service: No provider for Renderer2
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CSS实用技巧
  • ES6系统学习----从Apollo Client看解构赋值
  • golang中接口赋值与方法集
  • js如何打印object对象
  • mysql innodb 索引使用指南
  • Ruby 2.x 源代码分析:扩展 概述
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • VuePress 静态网站生成
  • Windows Containers 大冒险: 容器网络
  • 编写符合Python风格的对象
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 算法-图和图算法
  • 异步
  • 硬币翻转问题,区间操作
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #include<初见C语言之指针(5)>
  • #Z0458. 树的中心2
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LeetCode 49)Anagrams
  • (SpringBoot)第七章:SpringBoot日志文件
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (十一)手动添加用户和文件的特殊权限
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)负载均衡,回话保持,cookie
  • .NET 反射的使用
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET正则基础之——正则委托
  • []Telit UC864E 拨号上网