Node-web05-07-02服务器相关配置及使用

阿里云机器使用

购买服务器

  • 登录 https://www.aliyun.com/
    • 该登录登录,该注册注册,填好身份信息,充值110块,因为必须有超过100块才能买按时付费的服务器
  • 进入云服务器 ECS购买






  • 然后根据提示到 管理控制台,就能看到你买的机器

登录你的服务器

1
2
3
4
5
6
# 你本地命令行里
ssh root@[你的机器公网IP]
# 然后询问你是否连接,回答yes
Are you sure you want to continue connecting (yes/no)? yes
# 然后输入你的秘密即可, 就是刚刚的 123456Abc 然后回车
# 此时不出意外登录成功

使用 ssh登录,避免用密码

  • 如果你用过 github 那么默认应该又一个 ssh key,每台机子有一个 ssh key 就够了,所以你不用创建了
    • 如果你不知道怎么创建 ssh key ,可以参考这个git入门
  • 上传你的ssh key
    1
    2
    3
    4
    5
    6
    7
    8
    # 运行
    > ssh-copy-id root@[你的IP]
    # 然后让你输入密码 123456Abc
    # 成功后
    Number of key(s) added: 1

    # 此后你在登录的时候就不需要密码了
    root@[你的ip]

root密码的安全性考虑

  • 因为本教程里我的密码让你们知道了,这样你就可以登录我的机器了
  • 于是你可能胡作非为
  • 所以应该再次修改密码为一个随机数,或者你不知道的密码
  • google linux change password for root
  • 得到答案 passwd root
1
2
# 修改root用户密码,这样 你的机器就相对安全了
passwd root

其他人如何访问你的机器

1
2
3
4
5
6
7
8
9
10
# 第一步你先登录你的机器

# 第二步
root@dog:~# cd ~/.ssh
root@dog:~/.ssh# ls
# 这里 authorized_keys 就是所有能登录人的 public key
authorized_keys
# 你可以看看是啥
root@dog:~/.ssh# cat authorized_keys
# 这里就是登录人的 公钥,就是你本机的 ~/.ssh/id_rsa.pub 里的内容

服务器用户不要用 root

  • 因为root的权限太大了

每次记不住你的 机器ip咋办

  • 编辑你的 host文件

    • windows 自己修改吧,我的是mac
      1
      2
      3
      4
      5
      # mac,如果权限不够你就 sudo
      sudo vi /etc/hosts

      # 在末尾添加一行
      你的机器ip dev1
  • 此时你就可以 ssh root@dev1 登录,是不是非常方便

添加用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
ssh root@dev1

# 添加用户
> root@dog:~# adduser blog

Adding user `blog' ...
Adding new group `blog' (1000) ...
Adding new user `blog' (1000) with group `blog' ...
Creating home directory `/home/blog' ...
Copying files from `/etc/skel' ...
# 输入你的密码,我这里是 123456Abc
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for blog
Enter the new value, or press ENTER for the default
# 一路回车
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

# 切换用户
root@dog:~# su - blog
blog@dog:~$ pwd
# 我们所有文件都应该在这儿
/home/blog

# 使用 blog用户 登录,然后输入你刚才设置的密码
ssh blog@dev1
# 这样 blog 就只能在它的辖区内操作,就很安全

# 解决 blog用户登录输 密码问题,
ssh-copy-id blog@dev1

# 然后你用 blog登录 就可以这样,而且不用输入密码
ssh blog@dev1

# 最后安全起见,修改 blog的密码,这样就安全了

root安装docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# step01 卸载旧版 docker
sudo apt-get remove docker docker-engine docker.io containerd runc

# step02 更新源
sudo apt-get update

# step03 按照提示 运行
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

# step04 Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# step05
sudo apt-key fingerprint 0EBFCD88

# step06
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# step07
sudo apt-get update

# step08
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装限定版本的 docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看列表
apt-cache madison docker-ce

# 安装限定版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

# 我这里是版本是
docker-ce (5:20.10.3~3-0~ubuntu-bionic)
docker-ce-cli (5:20.10.3~3-0~ubuntu-bionic)
containerd.io (1.4.3-1)

# 所以为了以后跟我同步,你应该这样
sudo apt-get install docker-ce=5:20.10.3~3-0~ubuntu-bionic docker-ce-cli=5:20.10.3~3-0~ubuntu-bionic containerd.io=1.4.3-1

# 测试 docker ,运行它的例子
docker run hello-world

docker设置镜像源头[不设置后面会卡在这]

1
2
3
4
5
6
7
8
9
10
11
# 登录服务器
ssh root@dev1

# 新建文件 /etc/docker/daemon.json
# 内容如下
{
"registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}

# 重启docker
service docker restart

将blog用户加到docker分组

  • 我们是 root安装的 docker 所以其他用户没有权限的
  • 将 blog 用户添加到 docker 分组
  • 搜索 linux list all groups
  • 运行 查看分组名 cat /etc/group
  • 继续搜索 linux add user to group
  • 例子 usermod -a -G [组名] [用户名]
  • 运行 usermod -a -G docker blog

git拉代码

  • 登录 ssh blog@dev1
  • 查看有木有 git which git
  • 有就行,然后拉代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# blog用户登录,默认在你的 home目录
blog@dog:~$ pwd
/home/blog

# 创建我们放代码的地方,进入这个目录
mkdir app
cd app

# 拷贝代码,你会发现失败了,因为我们用的 ssh 方式
git clone git@github.com:slTrust/next-demo-2.git

# 你需要添加ssh key 才行
- 参考这个 https://sltrust.github.io/2017/10/05/N004_1_git%E5%85%A5%E9%97%A8/
# 具体操作如下
ssh-keygen -t rsa -b 4096 -C “你的邮箱”
# 一路回车
# 复制公钥信息
cat ~/.ssh/id_rsa.pub

# 把上面的内容 在 github 里 add key

# 再次 clone代码
git clone git@github.com:slTrust/next-demo-2.git
# 代码拉取成功~

启动数据库:因为我们一会要连接

  • 接续上面的内容
  • 启动 pg
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # blog用户登录
    cd ~/
    # 创建 pg数据持久化目录
    mkdir blog-data

    # 运行命令
    docker run -v /home/blog/blog-data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=blog -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:12.2

    # 创建数据库

    # 创建数据库命令模版
    CREATE DATABASE [数据库名] ENCODING 'UTF8' LC_COLLATE 'en_US.utf8' LC_CTYPE 'en_US.utf8';

    # 进入数据库
    docker exec -it id bash
    # 登录数据库
    psql -U blog -W
    # 创建我们需要的数据库,注意是生产环境的 “blog_production”

    CREATE DATABASE blog_production ENCODING 'UTF8' LC_COLLATE 'en_US.utf8' LC_CTYPE 'en_US.utf8';

项目运行准备工作

服务器上 yarn build,所以需要安装node:安装node12

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

# 根据提示 安装c++ / yarn
sudo apt-get install gcc g++ make

curl -sL 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的版本 是 1.22.xx版


yarn config get registry
# 淘宝
yarn config set registry https://registry.npm.taobao.org
# 还原
yarn config set registry https://registry.yarnpkg.com

# yarn设置镜像 参考
https://www.cnblogs.com/momozjm/p/10635941.html

服务器安全组设置

  • 让我们的自己的电脑能访问它
  • 找到对应机器,安全组开放3000端口