纯粹个人学习记录,很入门,很菜
- 登录服务器、添加新用户并授权
# root用户登录
ssh root@服务器ip地址
# 以root身份登录服务器后,添加新用户
# 添加之后会要求给这个用户设置单独的密码
adduser will(填写一个你要添加的用户名)
# 给新添加的用户授权
gpasswd -a will sudo
# 修改配置文件
sudo visudo
# 进入配置文件后
# 在root下面给will用户添加相同的权限
will ALL=(ALL:ALL) ALL
# 按提示保存退出
# 现在就可以使用新用户登入了
- 生成密钥和公钥,无密码登录
# 在本机和服务器端使用相同的命令生成公钥和私钥
# 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
- 修改默认的服务器端口号
服务器默认端口号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开启的任何服务,如果自定义了新的端口号,都需要重复这个操作,去阿里云控制台设置。
- 更换系统盘后本地连接不上服务器的解决办法
重置端口号后,连接不上服务器了,带参的-p,报连接超时错误。反正刚学,暴力点,直接清盘了,但是清盘后本地连不上服务器了。
用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,如果我们重新安装系统,其公钥信息还在,连接会出现如下截图情况
解决方法:
ssh-keygen -R 服务器ip地址
- 更新服务器、基础工具安装
# 更新服务器
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
- node项目服务管理、pm2
前面的几个步骤已经把node的环境搭建好了,在服务器的根目录可以自建个server.js,开启个服务,启动服务,本地就能使用服务器ip+端口访问该服务了
pm2, 是nodejs项目线上运行和进程管理的利器。无论终端关闭与否,该服务除非手动停止,否则一直运行。
# 安装
npm i pm2 -g
# 启动项目
pm2 start app.js
# 列出启动中的node服务
pm2 list
# 查看指定服务详情
pm2 show app
# 查看当前项目日志
pm2 logs
- 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
- dnspod使用和域名解析
这个直接进入dnspod官网添加下就行
上面的部署已经可以实现静态页面的展示了,后面要加上动态效果,使用会配置mongodb实现动态数据管理
待完成...
- MongoDB
# 安装
遇到的问题:
- 连接服务器时报错:
ssh_exchange_identification: Connection closed by remote host