Ubuntu 20.04 从零开始

Table of Contents


趁着这次更换服务器的系统, 打算完整记录一下操作流程
实例:突发性能实例 t5系列 IV1核 1GB –> 5年642元

创建用户

刚创建的服务器只有root用户, 使用了密钥对的方式登录
注意: 不要开放密码登录的方式到公网

# 先用root用户登录
sudo adduser saul
sudo mkdir -p /home/saul/.ssh
sudo cp /root/.ssh/authorized_keys /home/saul/.ssh
sudo chown -R saul.saul /home/saul/.ssh
# 后续就可以用普通账户登录了

修改hostname

# 使用root执行
hostnamectl set-hostname myubuntu

添加 swap

https://itsfoss.com/swap-size/

Ubuntu has an entirely different perspective on the swap size as it takes hibernation into consideration. If you need hibernation, a swap of the size of RAM becomes necessary for Ubuntu.

Otherwise, it recommends:

If RAM is less than 1 GB, swap size should be at least the size of RAM and at most double the size of RAM
If RAM is more than 1 GB, swap size should be at least equal to the square root of the RAM size and at most double the size of RAM
If hibernation is used, swap size should be equal to size of RAM plus the square root of the RAM size
# https://medium.com/analytics-vidhya/how-to-add-swap-space-on-ubuntu-ff9af2820adc

# Since the server in our example has 1G of RAM, we will create a 1G file in this guide. Adjust this to meet the needs of your own server:
sudo fallocate -l 1G /swapfile
# Make the file only accessible to root by typing:
sudo chmod 600 /swapfile
# We can now mark the file as swap space by typing:
sudo mkswap /swapfile
# After marking the file, we can enable the swap file, allowing our system to start utilising it:
sudo swapon /swapfile

# Back up the /etc/fstab file in case anything goes wrong:
sudo cp /etc/fstab /etc/fstab.bak
# Add the swap file information to the end of your /etc/fstab file by typing:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

软件安装

docker

https://docs.docker.com/engine/install/ubuntu/

# Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Use the following command to set up the stable repository. To add the nightly or test repository, add the word nightly or test (or both) after the word stable in the commands below.
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 给普通用户权限
sudo usermod -G docker -a saul

redis (3MiB)

version: '2'
services:
  redis:
    image: redis:latest
    restart: always
    ports:
      - 6379:6379
    volumes:
      - ./data:/data

mysql (200MiB)

version: "3"
services:
  db:
    image: mysql/mysql-server:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - 3306:3306
    volumes:
      - ./data:/var/lib/mysql

docker-nginx-auto-ssl (8MiB)

version: '2'
services:
  nginx:
    image: valian/docker-nginx-auto-ssl
    restart: on-failure
network_mode: "host"
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./data:/etc/resty-auto-ssl
      - ./conf.d:/etc/nginx/conf.d
    environment:
      ALLOWED_DOMAINS: '([a-z]+.)?osaul.com'
      SITES: 'example.osaul.com=172.22.0.1:8080'

node

https://github.com/nodesource/distributions

# Node.js LTS (v16.x):
# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

frp

https://github.com/fatedier/frp/releases/
下载最新版本的 linux_amd64

wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz
tar -zxvf frp_0.39.1_linux_amd64.tar.gz

openresty

http://openresty.org/en/linux-packages.html#ubuntu

sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \
    | sudo tee /etc/apt/sources.list.d/openresty.list
sudo apt-get update
sudo apt-get -y install openresty

额外配置

user nobody; => user saul;
worker_processes 1; => worker_processes 2;

Author: Saul Lawliet

Created: 2022-03-17 Thu 11:12