临近 618 年中大促,各大云服务商也会提供一些优惠。正好我三年前在腾讯云上买的一台 2 核 4G 的虚拟机到期了,看了一下腾讯云的优惠活动,下单了一台 2 核 4G 的的轻量应用服务器(一年期,288 元)。
轻量应用服务器一般都会提供一些常见的镜像(Wordpress
,LAMP
等),我的目的不是建站,所以还是选了朴素的 Ubuntu18.04
的基础镜像。
下面大致介绍一下我配置服务器的过程(安装及配置方法基本来源于对应工具官网)。
配置密钥登录
轻量应用服务器默认是从腾讯云控制台直接登录到终端,可以将自己的公钥加到 ssh
配置里。
# Remote
cat PUBLIC_KEY >> ~/.ssh/authorized_keys
为了方便登录,可以配置自己主机的ssh config
文件,随后就可以通过ssh light
命令登录到服务器。
# ~/.ssh/config
Host light
HostName 1.2.3.5
Port 22
User lighthouse
<!-- more -->
更新系统
事实上我可以直接通过命令更新到 20.04,不过根据历史经验服务器直接升级系统不是很稳定,我还是只进行了基本的系统软件更新。
代码语言:txt复制sudo apt update
ssh apt dist-upgrade
安装配置oh my zsh!
oh my zsh!
比起默认的bash
还是要好用一点,并且可以很方便地进行配置。
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装常用开发工具
build-essential
基础的gcc
,g
,make
等构建工具链可以通过安装build-essential
来获得。
sudo apt install build-essential
pyenv
ubuntu 18.04 自带的 Python 版本还是老了一点。我个人还是非常依赖Python 3.8
及以上版本的新语言特性的。在 Linux 平台上安装多版本的 Python,最方便的就是使用pyenv
工具了。
安装构建依赖
代码语言:txt复制sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
安装pyenv
代码语言:txt复制curl https://pyenv.run | bash
安装好 pyenv
后需要按照提示设置一下.zshrc
。
使用pyenv
代码语言:txt复制pyenv install 3.9.5
pyenv install 3.10.0b2
pyenv gloabl 3.9.5
python -m pip install -U pip # 升级pip
Python 相关工具
代码语言:txt复制pip install pipenv poetry iredis httpie prm -i https://mirrors.cloud.tencent.com/pypi/simple
pipenv
,poetry
用于项目和虚拟环境理(我个人不喜欢用virtualenv-wrapper
)。
httpie
是一个很好用的 curl
替代工具。
iredis
是一个交互友好的 redis-client
替代工具。
prm
是一个管理默认pypi
源的工具(作者是我本人)。
docker
和 docker-compose
docker
本身或许不是必要的,但我现在习惯使用容器部署 redis
和 mongodb
实例,并使用 docker-compose
管理。
安装docker
代码语言:txt复制# 安装依赖
sudo apt-get update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
# 引入官方GPG-KEY
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 配置apt源
echo
"deb [arch=amd64 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
# 安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 配置非root用户管理docker
sudo usermod -aG docker light
安装docker-compose
代码语言:txt复制# 下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 修改权限
sudo chmod x /usr/local/bin/docker-compose
rust
及相关工具
身为一个 rust
爱好者,我在大部分的环境下都安装了 rust
工具链和一些列使用 rust
编写的命令行工具。
安装 rust
工具链
代码语言:txt复制curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装 rust 工具
实际上下面有些工具是可以直接下载二进制文件的,使用cargo install
会花费大量的编译时间。
- bat (功能加强的 cat)
- du-dust (du 替代品)
- eva (命令行计算器)
- exa (ls 替代品)
- fd-find (更好用的 find 替代品)
- gitui (还不错的 git 管理工具)
- miniserve (静态 http 服务器,自带一些高级功能:下载 zip,上传文件等,替代
python -m http.server
) - procs (ps 替代品)
- ripgrep (grep 替代品)
- tokei (统计代码行数,比 cloc 快很多)
- xh (rust 版本的 httpie)
deno
我个人还是比较喜欢 deno
的一些理念的,希望这台服务器上可以不用安装node.js
。
curl -fsSL https://deno.land/x/install/install.sh | sh
jre、dotnet、php...
安装方式可以通过官网和搜索引擎获取,只是部署相关服务的话建议使用容器。
总结
配置一台开发服务器还是比较麻烦的,以后有空的话或许可以研究一下ansible
。