1. 服务器部署步骤 #

  1. 购买自己的域名
  2. 域名备案
  3. 购买服务器
  4. 配置服务器应用环境
  5. 安装配置服务器
  6. 项目远程部署和发布与更新

1.2 购买域名 #

1.3 云主机 #

1.4 购买阿里云 #

1.5 备案 #

2. 服务器 #

2.1 连接服务器 #

ssh root@47.104.75.43

2.2 创建用户 #

adduser zhufeng

2.3 赋予权限 #

gpasswd命令是Linux下工作组文件/etc/group/etc/gshadow管理工具。

gpasswd -a zhufeng sudo

2.4 添加sudo权限 #

sudo visudo
vi /etc/sudoers

visudo其实是打开/etc/sudoers

增加以下内容

# User privilege specification
zhufeng ALL=(ALL:ALL) ALL

zhufeng这个用户可以从任何机器登录,以任何用户和用户组的身份运行任何命令。 保存并退出

2.5 SSH无密码登录 #

ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。

2.5.1 本地生成公钥和私钥 #

ssh-keygen --help
cd ~/.ssh
ssh-keygen -t rsa -b 4096

2.5.2 开启ssh代理 #

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

2.5.3 服务器配置 #

ssh-keygen -t rsa -b 4096
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

2.5.4 把本地的公钥上传到服务器授权文件中 #

vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
service ssh restart

2.6 安装软件 #

apt-get update
apt-get install wget curl git -y

2.7 安装node #

2.8 编写node程序 #

var http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

2.9 启动程序 #

强大的进程管理器,进程异常退出时pm2会尝试重启

cnpm install pm2 -g

用pm2启动node |命令|用途| |:----|:----| |pm2 start blog.js --name "blog"|启动应用| |pm2 list|查看所有应用| |pm2 restart crawl|重启应用| |pm2 stop crawl|停止应用| |pm2 delete crawl|删除应用|

pm2 start blog.js --name "blog"

2.10 nginx #

2.10.1 安装 #

apt-get install nginx -y

2.10.2 nginx命令 #

名称 命令
启动nginx nginx -c /etc/nginx/nginx.conf
关闭 nginx nginx -s stop
重读配置文件 nginx -s reload / kill -HUP nginx
常用命令 service nginx {start stop status restart reload configtest }

2.10.3 nginx配置 #

cd /etc/nginx/sites-enabled
vi blog.conf
upstream blog{
    server 127.0.0.1:3000;
}
server {
    listen 80;
    server_name 127.0.0.1;
    location / {
        proxy_pass http://blog;
    }
}

2.10.4 重启nginx #

 nginx -s reload

3. Docker 是什么 #

3.1 docker安装 #

3.2 安装 #

yum install -y yum-utils   device-mapper-persistent-data   lvm2
yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io

3.3 启动 #

systemctl start docker

3.4 查看docker版本 #

$ docker version
$ docker info

3.5 卸载 #

docker info
yum remove docker
rm -rf /var/lib/docker

3.6 Docker架构 #

docker

3.7 阿里云加速 #

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fwvjnv59.mirror.aliyuncs.com"]
}
EOF

# 重载所有修改过的配置文件
systemctl daemon-reload
systemctl restart docker

启动服务

docker run ubuntu /bin/echo "Hello world"

3.8 启动node服务 #

3.8.1 Dockerfile #

FROM node
COPY ./app /app
WORKDIR /app
RUN npm install
EXPOSE 3000

3.8.2 创建image #

docker build -t zhufengblog .

3.8.3 使用新的镜像运行容器 #

docker container run -p 3333:3000 -it zhufengblog /bin/bash
npm start

3.8.4 CMD #

Dockerfile

+ CMD npm start

重新制作镜像

docker build -t zhufengblog .