学习服务端的操作

纯粹个人学习记录,很入门,很菜

  1. 登录服务器、添加新用户并授权
  # root用户登录
  ssh root@服务器ip地址
  
  # 以root身份登录服务器后,添加新用户
  # 添加之后会要求给这个用户设置单独的密码
  adduser will(填写一个你要添加的用户名)

  # 给新添加的用户授权
  gpasswd -a will sudo
  # 修改配置文件
  sudo visudo
  # 进入配置文件后
  # 在root下面给will用户添加相同的权限
  will ALL=(ALL:ALL) ALL
  # 按提示保存退出

  # 现在就可以使用新用户登入了
  1. 生成密钥和公钥,无密码登录
  # 在本机和服务器端使用相同的命令生成公钥和私钥
  # ls -a 可以查看生成了新的.ssh文件夹,里面包含了id_rsa  id_rsa.pub两个文件
  # cat id_rsa可以查看详情
  
  ssh-keygen -t rsa -b 4096 -C "你的邮箱" 

  # 1.启动代理
  eval "$(ssh-agent -s)"

  # 2.将密钥文件添加至代理中
  ssh-add ~/.ssh/id_rsa

  # 3.进入.ssh文件夹,生成授权文件
  vi authorized_keys

  # 4.进入后不做任何操作
  # shift+: 输入wq!
  # 此时在.ssh文件夹下生成了一个authorized_keys文件

  # 5. 从本地拷贝id_rsa.pub里的内容,粘贴到服务器的authorized_keys文件内

  # 6. 授权,修改这个文件的权限
  chmod 600 authorized_keys
  # 7. 重启ssh服务
  sudo service ssh restart
  1. 修改默认的服务器端口号

服务器默认端口号22,为增加安全性,需修改默认端口号

  # 修改sshd_config这个配置文件
  sudo vi /etc/ssh/sshd_config
  
  # 切记啊,先在Port 22下面添加Port 9000或其他端口号,这样能避免9000登陆失败时还能以22端口登陆

  # 修改端口号,并在最后添加用户,AllowUsers will
  # 保存退出,重启实例
  sudo service ssh restart
  
  # 重新登录服务器时需要加上新改的端口号
  ssh -p 9000 will@服务器ip地址

补充第三点:

如果是阿里云的服务器,修改端口还需要去阿里云的控制台做配置。
进入服务器实例页面 > 点击左侧安全组 > 点击实例的配置管理 > 点击克隆一个自定义TCP > 在弹窗里修改选择自定义TCP,并将端口号改成你给服务器配置的端口号,如9000/9000。后面使用node开启的任何服务,如果自定义了新的端口号,都需要重复这个操作,去阿里云控制台设置。

  1. 更换系统盘后本地连接不上服务器的解决办法

重置端口号后,连接不上服务器了,带参的-p,报连接超时错误。反正刚学,暴力点,直接清盘了,但是清盘后本地连不上服务器了。

用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,如果我们重新安装系统,其公钥信息还在,连接会出现如下截图情况

学习服务端的操作_第1张图片
错误提示

解决方法:

ssh-keygen -R 服务器ip地址
  1. 更新服务器、基础工具安装
# 更新服务器
sudo apt-get update

# 安装多个文件
sudo apt-get install vim openssl build-essential libssl-dev wget curl git

# 安装nvm, 管理node版本
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

# 使用nvm安装最新稳定node版本
nvm install v8.11.1

# 更新npm至最新
npm install npm -g --registry=https://registry.npm.taobao.org

# 装一些环境,如webpack、gulp
  1. node项目服务管理、pm2

前面的几个步骤已经把node的环境搭建好了,在服务器的根目录可以自建个server.js,开启个服务,启动服务,本地就能使用服务器ip+端口访问该服务了

pm2, 是nodejs项目线上运行和进程管理的利器。无论终端关闭与否,该服务除非手动停止,否则一直运行。

# 安装
npm i pm2 -g
# 启动项目
pm2 start app.js
# 列出启动中的node服务
pm2 list
# 查看指定服务详情
pm2 show app
# 查看当前项目日志
pm2 logs
pm2生成的表格
  1. nginx代理
# 更新包列表
sudo apt-get update

# 安装nginx
sudo apt-get install nginx
# 查看nginx版本
nginx -v

# 添加配置文件
cd /etc/nginx
cd confd

# 在该路径下操作 /etc/nginx/conf.d
# 新增配置文件,名字规则域名+端口号
sudo vi yalingmai-cn-1100.conf

新增内容:
upstream yalingmai {
  server 127.0.0.1:你配置的服务器可用端口号
}
server {
  listen 80; // 需要监听的端口
  server_name 你的服务器ip地址; // 服务器名称, 最终实现的效果是,向该服务器地址访问的流量都会转向到upstream

  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://yalingmai;
    proxy_redirect off;
  }
}

# 保存退出后,可以使用下面的命令检查文件格式是否正确
sudo nginx -t
# 重启ngxin
sudo nginx -s reload
# 现在就能通过服务器ip在浏览器上直接访问node启动的服务了

# 修改下nginx.conf,这里的目的是避免服务器返回时头部信息带有服务器信息,现在只返回nginx
sudo vi nginx.conf
# 将下面的server_tokens off;打开,保存退出重启nginx
sudo service nginx reload
学习服务端的操作_第2张图片
之前会带有服务器版本信息,现在通过设置只显示nginx
  1. dnspod使用和域名解析
    这个直接进入dnspod官网添加下就行

上面的部署已经可以实现静态页面的展示了,后面要加上动态效果,使用会配置mongodb实现动态数据管理

待完成...

  1. MongoDB
# 安装


遇到的问题:

  1. 连接服务器时报错:
    ssh_exchange_identification: Connection closed by remote host

你可能感兴趣的:(学习服务端的操作)