Ubuntu 基本配置

最近重装了 Ubuntu,在这里记录配置过程,方便以后做类似的操作。

既然要重装系统,那么就要考虑哪些是需要备份的。这里做个记录,普通文件不用说了,自己拷贝。这里主要记录一些配置文件

1
2
3
4
5
6
7
/srv/ 下的一些配置文件
/etc/nginx/sites-available/下的single和default等配置文件
ssl证书
~/.bash_alias
frp的toml配置文件
~/miniconda3/envs
docker images

其实上述文件可以放在第二个硬盘中,因为重装过程不会影响第二个盘,多次尝试皆为如此。

用户及用户组

创建新用户

1
sudo adduser $USER

配置权限

1
sudo usermod -aG sudo $USER

设置免密 visudo

1
rex  ALL=(ALL:ALL) NOPASSWD:ALL

设置服务器名称,比如 aliyun

1
sudo hostnamectl set-hostname aliyun

此外需在 /etc/hosts 添加相应行,比如

1
127.0.0.1  aliyun

PATH 环境变量

关联知识

我们在终端输入命令时,通常不需要输入完整路径,比如运行 Python 输入 python 而不是 /usr/bin/python。通过执行 which 可以查看实际执行文件的路径,比如不同 conda 环境输入 python 运行的程序不同,因此执行 which python 返回的路径也不同。

一些基础命令,比如 pwd, echo, source, which,用 which 查询会提示你是内置命令(built-in command)。而其他大多数命令,比如 git, vim, nginx 等等,都是省略文件路径的命令。更具体地,执行 git 时,系统会在 PATH 给的路径中依次查找,如果存在该可执行文件则运行。因此,如果要省略绝对路径来执行某个文件,可以将该路径添加到 PATH 中。

一般地,用户启动 bash 时,会经过这几个文件:/etc/environment => /etc/profile => ~/.bashrc,一些情况(比如用 ssh 连接服务器)还会经过 ~/.bash_pofile。前两个是系统级别的文件,对所有用户生效,而 .bash_profile/.bashrc 只对用户生效。(zsh 类似,.bashrc 改成 .zshrc 即可)

简单说,我们可以通过修改 PATH 环境变量使可执行文件不需要输入路径就能执行,用户级别的修改可以在 ~/.bashrc 中进行,系统级别的修改可以在 /etc/environment/etc/profile 中进行。

基础软件及配置

添加 ~/.local/bin 到环境变量中:

1
mkdir -p $HOME/.local $HOME/.local/bin

命令行安装的基础应用:

1
2
3
4
5
6
7
8
9
10
11
12
# 更新软件包源列表
sudo apt update
# 基础工具
sudo apt install vim git nginx curl tmux -y
# 编译相关
sudo apt install make gcc flex bison -y
# Json 解析工具
sudo apt install jq -y
# 网络管理工具
sudo apt install nethogs -y
# 安装 gdebi
sudo apt install gdebi -y

注:用 sudo dpkg -i xxx.deb 也能安装 .deb 文件,区别在 gdebi 会自动处理依赖问题,而前者需要手动处理。

安装 oh-my-zsh,使用脚本一键安装

1
curl -sSL http://qiniu.wzhecnu.cn/scripts/oh-my-zsh-p10k.sh | bash

如果有访问校园网的需求,可以装个 openconnect

1
sudo apt install openconnect -y

注:一般不建议在公网服务器上连接校园网,因为走 VPN 的网络较慢。如果要传输文件,可以反过来,从校园网连公网进行传输。

配置 ssh

通常,公网服务器自带 openssh,但如果是台式机一类的设备,需要手动安装后才能用 ssh 远程连接

1
sudo apt install openssh-server -y

网络测速

安装监控工具

1
2
3
4
5
6
# 网络监控
sudo apt install nethogs -y
# 网络测速
sudo apt install speedtest-cli -y
# 测试两个节点之间的网络传递速度
sudo apt-get install iperf -y

sudo nethogs 查看当前网络流量, sudo nethogs -d 5 每 5 秒刷新一次:

1
2
3
4
5
PID USER     PROGRAM                    DEV        SENT      RECEIVED
? root ...10.18.5:6379-10.10.18. 0.000 0.485 KB/sec
? root ...10.18.7:56514-10.10.18 0.000 0.336 KB/sec
? root ...10.18.7:56456-10.10.18 0.000 0.054 KB/sec
? root ...10.18.7:56480-10.10.18 0.000 0.027 KB/sec

speedtest-cli 测试网络带宽:

1
2
3
4
5
6
7
8
9
10
❯ speedtest-cli
Retrieving speedtest.net configuration...
Testing from China Education and Research Network Center (49.52.5.48)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by China Unicom 5G (Shanghai) [19.52 km]: 46.222 ms
Testing download speed................................................................................
Download: 92.46 Mbit/s
Testing upload speed......................................................................................................
Upload: 100.13 Mbit/s

iperf3 测试两个节点之间的网络传递速度

1
2
3
4
# 服务器 1
iperf -s
# 服务器 2
iperf -c 服务器1的IP

桌面端软件

安装 vscode

1
2
curl -o code.deb -L http://go.microsoft.com/fwlink/?LinkID=760868
sudo gdebi code.deb

安装 Chrome 浏览器

1
2
wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo gdebi google-chrome-stable_current_amd64.deb

安装 typora

1
2
3
4
5
6
7
8
# or run:
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typoraio.cn/linux/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/typora.asc
# add Typora's repository
sudo add-apt-repository 'deb https://typoraio.cn/linux ./'
sudo apt-get update
# install typora
sudo apt-get install typora

安装截图工具 deepin-screenshot 与 QQ 截图非常类似的工具。

1
2
3
sudo apt-get install deepin-screenshot -y
# flame-shot 个人习惯这个
wget -c https://github.com/flameshot-org/flameshot/releases/download/v12.1.0/flameshot-12.1.0-1.debian-10.amd64.deb

文本复制工具:

1
sudo apt install xclip -y

然后编辑 .bash_aliases

1
alias copy="xclip -selection clipboard"

OBS 录屏软件

OBS 是开源的录屏软件和直播软件,功能强大,安装教程参考官网

  1. 安装依赖 ffmpeg

    1
    sudo apt install ffmpeg -y
  2. 可选内容,如果需要录屏 + 录像功能

    1
    sudo apt install v4l2loopback-dkms -y

    按提示设置重启密码

  3. 依次输入以下命令,安装 obs 软件

    1
    2
    3
    sudo add-apt-repository ppa:obsproject/obs-studio
    sudo apt update
    sudo apt install obs-studio -y
  4. 可能存在的问题,文件下载失败(可能和网络有关)
    深度截图_选择区域_20220123171637
    可行方案为手动安装 libfite,将下载地址的域名 cn.archive. 改为 archive.

    1
    2
    wget -c http://archive.ubuntu.com/ubuntu/pool/universe/f/flite/libflite1_2.1-release-3_amd64.deb
    sudo gdebi libflite1_2.1-release-3_amd64.deb

GIF 动图录制

参考链接: Ubuntu 录制 gif 动态图

  1. 下载工具 byzanz

    1
    sudo apt-get install byzanz
  2. 命令行输入 byzanz-record --help 查看帮助选项

  3. 常用选项:

    • -d 设置录制时间
    • --delay=<秒数> 设置录制开始延时
    • -x, -y 设置录制矩形区域左上位置的 x 坐标, y 坐标,默认为 0, 0
    • -w, -h 设置录制矩形的宽度,高度
  4. 示例

    1
    byzanz-record -x 0 -y 0 -w 10 -h 20 -d 5 --delay=2 ~/test.gif

    参数说明:

    • 录制区域左上角起
    • 区域为宽 10 高 20 的矩形
    • 动画时间设置 5 秒,延迟 2 秒录制
    • 文件保存在 ~/test.gif
  5. 录制区域的确定

    • 方法 1:用 pyautogui.position() 获取
    • 方法 2:终端输入 xwininfo,提示选择区域,鼠标操作后会返回区域的详细信息,比如
      深度截图_code_20220128163626

GIF 压缩工具

  1. 用 byzanz 录制的 gif 文件可能比较大,可配合 gifsicle 压缩文件,GitHub 下载地址

    1
    wget -c https://github.com/kornelski/giflossy/archive/refs/tags/1.91.tar.gz

    注:直接用 apt-install gifsicle 下载的版本还不支持 loosy 参数,因而建议源码安装

  2. 下载后解压文件,依次执行下边命令

    1
    2
    3
    4
    tar -zxvf giflossy-1.91.tar.gz # 解压文件
    bash bootstrap.sh # 生成 configure 文件
    ./configure # 生成 make install 文件
    sudo make install # 源码安装-可能需要权限
  3. gifsicle 的使用语法如下,其中 --lossy 参数值越高,文件压缩后越小

    1
    gifsicle -O3 --lossy=80 -o lossy-compressed.gif input.gif

当然,也有些在线的压缩网站,比如 docsmall 或者 压缩图

设置桌面应用图标

在Ubuntu20.04及以上,使用.desktop文件创建桌面快捷应用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim myapp.desktop
# 将以下内容复制到该文件中
[Desktop Entry]
Type=Application
Name=scientific_surfing
Exec=应用程序命令
Icon=应用程序图标文件路径
Terminal=True
Comment=info
Name[en_US]=surfing
# 将以上内容复制到该文件中

- `Type`:指定.desktop文件的类型为应用程序。
- `Name`:应用程序的名称。
- `Exec`:应用程序的启动命令。例如,如果应用程序是通过终端命令启动的,可以提供完整的命令路径。
- `Icon`:应用程序的图标文件路径。可以使用绝对路径或相对路径。常见的图标文件格式是`.png`或`.svg`。
- `Terminal`:指定是否在终端中运行应用程序。如果应用程序需要在终端中运行,将其设置为`true`;否则,设置为`false`。
- `Comment`:对应用程序的简短描述。

将该文件移动到应用程序目录,该目录用于存储用户的自定义程序快捷方式

1
2
3
4
mv myapp.desktop ~/.local/share/applications/

# ~/.local/share/applications/:只对当前用户可用的应用程序。
# /usr/share/applications/:对系统上的所有用户可用的应用程序。

现在可以去应用程序菜单或者Dash中找到你创建的桌面应用快捷,点击以运行。

搜狗输入法

1
2
3
# 安装fcitx输入法框架
sudo apt update
sudo apt install fcitx

设置 fcitx 为系统输入法,安装完成以后,打开左下角“Show Applications” *—>* 在搜索框输入“Language Support” *—>* 双击 Language Support 应用图标。

在 Language Support 界面,将“Keyboard input method system:”设置为“fcitx” *—>* 点击“Apply System-Wide” *—>* 点击“Close”。

1
2
3
4
# 设置 fcitx 开机自启动
sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/
# 卸载系统 ibus 输入法框架
sudo apt purge ibus

进入搜狗官网,选择“Linux 个人版” *—>* 选择“x86_64”下载。

1
2
3
4
sudo dpkg -i sogoupinyin_4.0.1.2800_x86_64.deb
# 安装输入法依赖
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2
sudo apt install libgsettings-qt1

以上依赖安装完成后,重启系统。

鼠标左击桌面右上角输入法图标 *—>* 点击“Configure”

(3) 在“Input Method Configuration”界面 *—>* 点击左下角“*+**—>* 取消“Only Show Current Language” *—>* 搜索框输入“sogou” *—>* 选中“sogoupinyin” *—>* 点击“OK”

(4) 选中添加的“sogoupinyin” *—>* 点击“*^*”;

(5) 关闭配置界面,打开火狐浏览器,测试输入法OK;

安装openssh-server

1
2
3
4
sudo apt-get install openssh-server  # 安装
sudo /etc/init.d/ssh start # 开启openssh服务
ps -e | grep ssh # 验证是否开启服务
# 如果有输出sshd,证明ssh服务已开启

安装NVIDIA驱动

1
2
3
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall # 安装推荐版本
sudo apt install nvidia-driver-525 # 安装 525 版本

安装Conda环境

安装 miniconda,比 Anaconda 更轻量级,只包含了 Python 和 Conda 并没有预装其他库。

1
2
3
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

根据提示进行,如果全局安装,路径可以改修改,比如 /opt/miniconda3 输入项建议选 yes

为 Conda 和 Pip 修改镜像源

1
2
3
4
5
6
7
# Conda 换源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
# pip 换源
pip install pip -U # 更新
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

pip 可以通过 -i 指定镜像源,在 .zshrc 中添加别名

1
2
alias tspip="pip install -i https://pypi.tuna.tsinghua.edu.cn/simple"
alias pypi='pip install -i https://pypi.python.org/simple'

conda环境导出yaml配置文件:

1
2
3
conda activate your_env_name
conda env export > environment.yml
conda env create -f environment.yml

安装 askchat

pip 安装并创建路径 https://github.com/RexWzh/askchat

1
2
3
4
pip install askchat --upgrade
ln `which ask` $HOME/.local/bin/ask
ln `which askchat` $HOME/.local/bin/askchat
askchat --generate-config

设置环境变量

1
2
3
4
export OPENAI_API_KEY=
export OPENAI_API_BASE=
export OPENAI_API_BASE_URL=http://127.0.0.1:8000
# OPENAI_API_BASE_URL填写启动服务的ip和port

安装 Jupyter

推荐使用 Jupyterlab,通过 pip 或 conda 安装

1
conda install jupyter

设置访问密钥并初始化配置文件

1
2
jupyter-lab password  # 改密码需要在tmux中重新启动服务才能生效
jupyter-lab --generate-config

修改配置文件 ~/.jupyter/jupyter_lab_config.py

1
2
3
4
5
6
# 设置允许访问的 IP 地址
c.ServerApp.ip = '0.0.0.0' # 或者 '*'
# 设置默认打开位置
c.ServerApp.root_dir = '/home/rex/workspace'
# 自定义访问端口
c.ServerApp.port = 6000

如果要将 conda 某个环境下的 Python 添加到 Jupyter,先切换到该环境并执行

1
2
3
conda activate <该环境>
conda install ipykernel
python -m ipykernel install --user --name=<kernal 名称>

Docker-compose & nvm

安装 docker 及新版 docker-compose

1
2
3
4
5
6
7
sudo apt install docker.io -y
## 下载 v2.22.0 版本
mkdir -p download
curl -L https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-`uname -s`-`uname -m` -o ~/download/docker-compose
## 赋予执行权限,并移动到系统目录
chmod +x ~/download/docker-compose
sudo mv ~/download/docker-compose /usr/bin/

创建 Docker 用户组,并将用户添加到其中,以免 sudo 运行 docker

1
2
3
4
5
6
7
8
9
10
# 创建用户组
sudo groupadd docker
# 将用户添加到 docker
sudo usermod -aG docker $USER
# 重启docker服务(生产环境慎用):
sudo systemctl restart docker
# 添加访问和执行权限:
sudo chmod a+rw /var/run/docker.sock
# 查看当前 docker 用户列表
sudo cat /etc/group | grep docker

创建 docker 目录用于存放镜像,并修改访问权限,比如

1
2
3
sudo mkdir -p /srv/docker
sudo chown :sudo /srv/docker
sudo chmod 770 /srv/docker

docker是一个小型的环境,是有ip和网络的,这个网络容易和服务器的ip冲突,导致无法上网,下面设置docker的网段在一个不常用的范围:

1
2
cd /etc/docker
sudo touch daemon.json

添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"default-address-pools":
[
{"base":"100.10.0.0/16","size":24}
]
}

然后重启docker服务,sudo systemctl restart docker
docker网络常用指令

1
2
docker network ls
docker network inspect <network-name>

安装 nvm

1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

通过 nvm 安装 nodejs,先 source ~/.bashrc,然后安装

1
nvm install 18

配置Bash_alias & git

.bash_alias 可以单独写在文件中,然后用 source 引入,比如

1
source $HOME/.bash_aliases

git 配置

1
2
# 保存 git 连接信息
git config --global credential.helper cache

安装 Julia

官网下载最新版 Julia,当前版本为 1.9.4

1
2
3
4
wget -c https://julialang-s3.julialang.org/bin/linux/x64/1.9/julia-1.9.4-linux-x86_64.tar.gz
tar -zxvf julia-1.9.4-linux-x86_64.tar.gz
# 如果全局安装,可以将目录解压到 /opt/,后边的环境变量也相应修改
mv julia-1.9.4 $HOME/software/julia19

添加环境变量

1
export PATH=$HOME/software/julia19/bin:$PATH

安装 IJulia,用于 Jupyter 系列

1
2
3
using Pkg
Pkg.add("IJulia")
# Pkg.build("IJulia") #

如果存在多个 Julia 环境,需要执行 build 选项,将其他 Julia 版本的 kernel 添加到 Jupyter 中。

安装微信

wine比deepin好用,目前测试ubuntu18和22是好用的,ubuntu20不可用。从软件目录看,deepin 的原理好像是将 windows 的软件放在容器中,里边有不少 exe 文件。

1
2
3
4
wget -c http://172.23.132.104:9080/ukylin-wine_70.6.3.25_amd64.deb
wget -c http://172.23.132.104:9080/ukylin-wechat_3.0.0_amd64.deb
sudo apt-get install -f -y ./ukylin-wine_70.6.3.25_amd64.deb
sudo apt-get install -f -y ./ukylin-wechat_3.0.0_amd64.deb

安装 Vpn

可以去github下载,然后Profiles粘贴订阅链接,IMPORT即可

以上配置好以后,需要重启电脑才可以生效,不要傻傻等待。

vpn rules修改:找到配置文件,通常在~/.config/clash/config.yaml,打开编辑,想将 example.com 添加到白名单中,您可以添加以下规则:

1
2
3
Rule:
- DOMAIN-SUFFIX,example.com,Direct
# 上述规则表示将以 `example.com` 结尾的域名路由到直连(即不经过代理)。

重启clash使生效。

视频播放

1
sudo apt install vlc

安装Times New Roman字体

在基于 Ubuntu 的系统中,你可以使用以下命令安装字体:

1
2
sudo apt update
sudo apt install ttf-mscorefonts-installer

安装完成后,更新字体缓存:

1
fc-cache -fv

检查字体是否安装成功:

1
fc-list | grep "Times New Roman"

如果安装成功,你应该会看到类似于以下的输出:

1
/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf: Times New Roman,Times

spotlight

1
sudo add-apt-repository ppa:agornostal/ulauncher && sudo apt update && sudo apt install ulauncher

输入ctrl+space调出窗口,点击右边的设置,再点击顶部的EXTENSIONS,点击左侧的Add extension,

复制https://github.com/brpaz/ulauncher-file-search到输入框,点击add,失败也没关系,重启ulauncher。再次点击设置,EXTENSTIONS–> File Search–> 滑到最底端的Base dir, 将/改成你需要搜索的目录,否则会在整个操作系统中搜索,拖慢搜索速度。好了,现在可以愉快的享用ulauncher了。

小结

好了,先整理这么多,后续再换服务器,遇到什么好用的继续更新,欢迎关注。