amenzai / myDiary

Record what you do every day
4 stars 0 forks source link

项目服务器部署 #56

Closed amenzai closed 5 years ago

amenzai commented 6 years ago

NodeJs 服务器配置及项目部署

生产环境所需要素:

shell:

# 重启服务器命令
sudo service ssh restarts
df -h # 系统盘存储
# 增加用户
adduser guest
# next input pass
xxxxxx
# next some info about guest
xxxx

# 加权限
gpasswd -a guest sudo

# 目录
pwd
ls

# 公钥私钥问题 和 github 差不多 (一下都是在本地配置)
cd ~
# 创建 .ssh 文件夹
mkdir .ssh
cd .ssh
# 生成秘钥
ssh-keygen -t rsa -b 4096 -C "775166868@qq.com"

# 代理ssh
eval "$(ssh-agent -s)"

# add
ssh-add ~/.ssh/id_rsa

# 进入远程服务器 和本地一样 来一遍生成秘钥
# add
ssh-add ~/.ssh/id_rsa
# 上一步之后 执行
vi authorized_keys # 回车

# 按下ESC 确保英文输入模式 再按下 shift + : 键,然后输入 wq!
# 上述其实就是新建一个文件

# 最后将本地 id_rsa.pub 里的内容copy 到 authorized_keys
# 再给 authorized_keys 授权
chmod 600 authorized_keys
sudo service ssh restarts

# 修改服务器配置文件
sudo vi /etc/ssh/sshd_config

# 文件内容修改部分如下
Port 39999 # 修改端口
UseNDS no
AllowUsers guest 
PermitRootLogin no # 关闭 root 登陆
PasswordAuthentication no # 关闭密码登陆
PermitEmptyPasswords no # 不允许是空密码
# 保存后 再去登陆服务器 22 端口就被拒绝了,此时要这样
ssh -p 39999 guest@xxxxxxxx

服务器安全配置开始:

# update ubuntu
sudo apt-get update && sudo apt-get upgrade

# clear
sudo iptables -F

# 打开防火墙文件
sudo vi /etc/iptables.up.rules # 防火墙文件可以配置哪些端口可以访问
# 该文件修改后,重载一下
sudo iptables-restore < /etc/iptables.up.rules

配置 node 环境:

# update ubuntu
sudo apt-get update

# install some thing
sudo apt-get install vim openssl build-essential libssl-dev wget curl git

# use nvm 地址:https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

# nvm 找不到运行一下,一般再打开个窗口就可以了
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash

# 开个新标签 连接服务器
nvm install v6.9.5
nvm use v6.9.5
nvm alias default v6.9.5
node -v

# 指定 npm 国内镜像
npm install -g npm --registry=https://registry.npm.taobao.org
npm -v

# 增加系统文件结构树
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

# 可以把 cnpm 安装上会快一点,如果 npm 速度可以,就用 npm
npm install -g cnpm --registry=https://registry.npm.taobao.org

# 比如 koa 这个模块安装不上 可以使用 cnpm 同步以下
cnpm sync koa

# 安装常用的全局包
npm i pm2 webapck gulp grunt-cli -g

pm2 使用:

# 跑服务
pm2 start test.js

# 列出服务器当前跑的服务
pm2 list

# 查看某个服务详细信息
pm2 show app # app 为服务的名称

# 查看日志
pm2 logs

# 推出pm2
ctrl+c

# pm2, 服务出现异常可以自动重启,收集错误日志

nginx 使用:

# 卸载apache
sudo service apache2 stop
or
update-rc.d -f apache2 remove
sudo apt-get remove apache2

# 更新列表
sudo apt-get update

# 安装 nginx
sudo apt-get install nginx
nginx -v

# 进入 nginx 安装目录,新建配置文件
cd /etc/nginx
ls
cd conf.d
sudo vi test-com-8080.conf # 命名使用域名加端口

# file content
upstream test {
  server 127.0.0.1:8080;
}
server {
  listen 80;
  server_name 127.168.23.22; # 这个IP为服务器IP
  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://test;
    proxy_redirect off;
  }
}
# 进入上层目录 cd ..
sudo vi nginx.conf # 打开这个文件
# 有这个就行
include /etc/nginx/conf.d/*.conf;
# 测试配置文件写的是否正确
sudo nginx -t
# 重启 nginx
sudo nginx -s reload
# 解除nginx.conf文件中的
server_tokens off # 此时 http 响应头就没有 server 的信息

域名解析:

安装 MongoDB:

# 地址:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
# first
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
# second
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
# three
sudo apt-get update

# four
sudo apt-get install -y mongodb-org

# 启动 mongodb
sudo service mongod start

# 检查是否开启成功
cat /var/log/mongodb/mongod.log
# use mongodb
mongo --host 127.0.0.1:27017
# stop mongodb
sudo service mongod stop
# restart mongodb
sudo service mongod restart
# 修改默认端口
sudo vi /etc/mongod.conf