临近 618 年中大促,各大云服务商也会提供一些优惠。正好我三年前在腾讯云上买的一台 2 核 4G 的虚拟机到期了,看了一下腾讯云的优惠活动,下单了一台 2 核 4G 的的轻量应用服务器(一年期,288 元)。
轻量应用服务器一般都会提供一些常见的镜像(Wordpress
,LAMP
等),我的目的不是建站,所以还是选了朴素的 Ubuntu18.04
的基础镜像。
下面大致介绍一下我配置服务器的过程(安装及配置方法基本来源于对应工具官网)。
配置密钥登录
轻量应用服务器默认是从腾讯云控制台直接登录到终端,可以将自己的公钥加到 ssh
配置里。
1 | # Remote |
为了方便登录,可以配置自己主机的ssh config
文件,随后就可以通过ssh light
命令登录到服务器。
1 | # ~/.ssh/config |
更新系统
事实上我可以直接通过命令更新到 20.04,不过根据历史经验服务器直接升级系统不是很稳定,我还是只进行了基本的系统软件更新。
1 | sudo apt update |
安装配置oh my zsh!
oh my zsh!
比起默认的bash
还是要好用一点,并且可以很方便地进行配置。
1 | sudo apt install zsh |
安装常用开发工具
build-essential
基础的gcc
,g++
,make
等构建工具链可以通过安装build-essential
来获得。
1 | sudo apt install build-essential |
pyenv
ubuntu 18.04 自带的 Python 版本还是老了一点。我个人还是非常依赖Python 3.8
及以上版本的新语言特性的。在 Linux 平台上安装多版本的 Python,最方便的就是使用pyenv
工具了。
安装构建依赖
1 | sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ |
安装pyenv
1 | curl https://pyenv.run | bash |
安装好 pyenv
后需要按照提示设置一下.zshrc
。
使用pyenv
1 | pyenv install 3.9.5 |
Python 相关工具
1 | 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
1 | # 安装依赖 |
安装docker-compose
1 | # 下载 |
rust
及相关工具
身为一个 rust
爱好者,我在大部分的环境下都安装了 rust
工具链和一些列使用 rust
编写的命令行工具。
安装 rust
工具链
1 | 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
。
1 | curl -fsSL https://deno.land/x/install/install.sh | sh |
jre、dotnet、php…
安装方式可以通过官网和搜索引擎获取,只是部署相关服务的话建议使用容器。
总结
配置一台开发服务器还是比较麻烦的,以后有空的话或许可以研究一下ansible
。