Loading... # 0x00 环境 CPU: Intel Core i9-9900k GPU: GeForce RTX 2070 SUPER RAM: DDR4 16GBx2 OS 1: Ubuntu 19.10 eoan OS 2: Windows 10 1909 Disk 1: Samsung SSD 970 EVO Plus 500GB - GUID Partition Table(`/dev/nvme0n1`) Disk 2: ST4000VX007-2DT166 - GUID Partition Table(`/dev/sda`) Disk 3: Samsung SSD 850 EVO M.2 250GB - GUID Partition Table(`/dev/sdb`) Ubuntu Partition 1: 1G - Ext4 - `/boot/` - 逻辑分区(`/dev/sdb1`) Ubuntu Partition 2: 2G - Swap - swap - 逻辑分区(`/dev/sdb2`) Ubuntu Partition 3: 40G - Ext4 - `/home/` - 逻辑分区(`/dev/sdb3`) Ubuntu Partition 4: 206G - Ext4 - `/` - 主分区(`/dev/sdb4`) # 0x01 前言 ## 阅读顺序 强烈建议先仔细阅读一遍本文,了解注意事项及大概流程后,再应用到实际部署中 ## 开发环境 本文中配置的开发环境主要面向 web 开发及运维,主要包括 NodeJs, Go, Nginx, PHP, MySQL, Python 由于 C 的开发环境笔者主要依靠 VSCode + gcc + gbd,每个人有不同的配置习惯且不同需求的环境相差较大,这里不做详细描述 ## 本机配置 本文所有操作基于 Win10 + Ubuntu 双系统,先安装 Win10,再安装 Ubuntu。安装 Ubuntu 时使用单块硬盘(Disk 3)配置分区,将 Ubuntu 引导系统放在 Windows Boot Manager(`/dev/nvme0n1p2`),也就是 Windows 的 EFI 分区中,安装完成后该分区将作为引导分区被挂载到 `/boot/efi/` 目录 ## 如果不使用双系统 单独安装 Ubuntu 或在虚拟机中安装,并不影响本文中大部分操作,唯一需要注意的是不需要在 Grub 中调整引导顺序 ## 为什么使用 Ubuntu 19.10 在所有 Linux 发行/衍生版本中,Ubuntu 是唯一适合日常开发使用,环境较为成熟,社区论坛较多,软件支持全面并且符合用户操作习惯的版本 在笔者尝试安装 Ubuntu 19.04 的过程中,发现部分硬件打不上驱动,导致了安装后有很多关于底层驱动的操作不适合普通用户,并且 19.10 与 19.04 差距并不大,很多适用于 19.04(disco) 的软件源同样也适用于 19.10(eoan),所以最后选择了 Ubuntu 19.10 ## 有哪些用户 文中主要涉及三个用户 - root - 根用户,在系统中拥有最高权限 - user - 系统用户,笔者使用的用户名是 *simonriley* ,文中为便于辨认使用 *user* 代替 - www-data - 大部分 web 服务使用的用户,由 Nginx 或 PHP-FPM 自动创建,只有 web 服务需要使用该用户 ## 用户与系统环境变量配置 按照笔者的习惯,为保证 *root* 与 *user* 使用相同的环境,`/root/` 目录下 `.bashrc`,`.dircolors` 和 `.condarc` 三个配置文件均使用 `/home/user/` 目录下同名文件的软连接 实际部署中发现 *root* 用户可能不会从 `/etc/profile` 读取环境变量配置,所以在 `.bashrc` 中添加如下配置 ```bash source /etc/profile ``` > **注意**:在 `.bashrc` 配置中,为保证后续添加的配置不会被覆盖,默认将新增的配置写在该行下面 ## 文件权限配置 使用软件包管理器安装的包,管理器会自动配置权限,但有些包是我们手动下载并配置的,例如 `/usr/local/node/` 目录,对于这类包,建议在配置完成后使用下面的命令手动将其权限修改为 *user* ```bash sudo chown user:user -R /usr/local/node/ ``` ## 在终端中使用的用户 终端默认使用的用户是 *user* ,但实际操作中会遇到很多需要使用 *root* 权限的命令,在本文中调用该权限的方式为 `sudo <command>` > **注意**:在对系统没有足够了解的情况下不建议直接使用 *root* 用户操作,即使足够了解也请先确认自己知道每一步操作的作用和可能造成的后果。使用 *root* 用户进行操作所造成的任何损失(包括但不限于文档资料损坏或丢失及硬件损坏)笔者不承担任何责任 如果您认为自己有一定 Linux 操作知识,也可以直接使用 `sudo -s` 切换到 *root* 用户进行操作,只要保证创建一些需要从桌面启动的文件/文件夹时能够将其权限设置为 *user* ,或出现权限问题能够通过查看和理解错误输出及时意识到问题所在即可 > **注意**:在对系统没有足够了解的情况下不建议直接使用 *root* 用户操作,即使足够了解也请先确认自己知道每一步操作的作用和可能造成的后果。使用 *root* 用户进行操作所造成的任何损失(包括但不限于文档资料损坏或丢失及硬件损坏)笔者不承担任何责任 ## 文中有些文件名为什么和我下载的不一样 文中下载的有些文件名是带有版本号的,例如 `software-1.12.1.tar.gz`,这里所有版本号均使用 “x” 代替:`software-x.xx.x.tar.gz` ## 配置的应用及重启 文中很多配置在完成后需要重启才会被应用,为减少重启次数,本文将所有重启应用的配置都放在 **0x02** 步骤中,完成该步骤后只需重启一次 # 0x02 安装后保证系统能够正常使用 ## 系统使用 RTC 时间 Ubuntu 安装完成后会出现系统时间与硬件时间不同步的情况,导致 Windows 时间不正确,Windows 端无法进行加密相关的验证 ```bash timedatectl set-local-rtc 1 --adjust-system-clock ``` ## 更换国内软件源 软件源分别来自 TUNA(**[清华大学 TUNA 协会](https://tuna.moe/)** 创建的 **[清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/)**)和 OPSX(**[阿里云](https://cn.aliyun.com/)** 创建的 **[阿里巴巴开源镜像站](https://developer.aliyun.com/mirror/)**) 编辑 `/etc/apt/sources.list` 删除原本的源,添加如下 ```bash ## TUNA deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-updates main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-backports main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-security main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ eoan-security main restricted universe multiverse ## OPSX deb http://mirrors.aliyun.com/ubuntu/ eoan main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ eoan main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ eoan-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ eoan-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ eoan-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ eoan-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ eoan-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ eoan-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ eoan-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ eoan-backports main restricted universe multiverse ``` 更改完成后检查所有软件包的更新并升级 ```bash sudo apt update sudo apt upgrade ``` ## 使 *root* 与 *user* 配置同步 将 `/home/user/` 目录下的配置建立到 `/root/` 目录的软链接 ```bash sudo ln -sf /home/user/.bashrc /root/ sudo ln -sf /home/user/.dircolors /root/ ``` ## 安装常用软件包 ```bash sudo apt install curl git htop fcitx-googlepinyin gnome-tweak-tool gnome-shell-extensions chrome-gnome-shell vim hwinfo ``` | 软件包 | 用途 | | :----: | :--: | | curl | 基于 URL 的文件传输/请求模拟 | | git | GitHub 命令行客户端 | | htop | 进程管理 | | fcitx-googlepinyin | Google 拼音输入法 | | gnome-tweak-tool | Gnome 优化工具 | | gnome-shell-extensions | Gnome 扩展管理 | | chrome-gnome-shell | Chrome 的 Gnome 扩展管理插件 | | vim | 基于命令行的文本编辑器 | | hwinfo | 查看硬件信息 | ## 安装语言支持并修改输入法 从应用菜单中找到 **语言支持** ,打开后会提示 **系统中安装的语言支持不完整** ,点击 **安装** ,等待安装完成 安装完成后,将键盘输入法系统更改为 fcitx 此时输入法修改并不会立即生效 # 0x03 优化显示 ## 优化 Grub 显示 Grub 实际的配置文件是由多个配置自动生成的,所以这里需要修改多个文件 ### 修改 Grub 分辨率 Grub 默认会使用硬件能够输出的最小分辨率,导致 Grub 界面模糊 查看显卡在 Grub 中能够输出的分辨率 ```bash sudo hwinfo --framebuffer ``` 笔者该命令的输出中,最大分辨率 1920x1080x32,实际使用中可能会出现更高的分辨率 在 `/etc/default/grub` 中修改 Grub 显示分辨率为刚才查询到的最大分辨率 ```ini GRUB_GFXMODE=1920x1080x32 ``` ### [可选] 修改 Grub 中显示的操作系统顺序 `/etc/grub.d/` 目录中存放的是 Grub 能够引导的操作系统的配置文件,按照 `启动顺序_操作系统名` 生成实际的启动顺序 这里由于笔者习惯,需要将第一启动项修改为 Windows,直接将 `30_os-prober` 前的数字改到小于 `10_linux` 即可 > **注意**:该目录下有一些需要在所有操作系统前启动的配置,例如 `00_header` 和 `05_debian_theme`,修改的数字要大于这些 ### 为 Grub 安装主题 在 [grub2-themes - GitHub](https://github.com/vinceliuice/grub2-themes) 下载 Release 包 解压后运行 `install.sh`,通过参数选择主题及支持的分辨率,具体请参考上面的 GitHub 项目主页 这里安装的是 vimix 主题 ```bash sudo ./install.sh --vimix ``` ### 修改 Grub 背景颜色 虽然已经设置了 Grub 主题,但实际上它只是在默认的紫色背景上显示了一张图片进行覆盖,当选择操作系统退出 Grub 后,有些主板仍然会显示默认的紫色背景 这可能导致启动系统时屏幕出现 **黑 -> Grub -> 黑 -> 紫 -> 黑 -> OS** ,影响美观,所以这里将背景修改为黑色 编辑 `/usr/share/plymouth/themes/default.grub` 文件,将原本的脚本注释并写入新的 ```bash #if background_color 79,25,76,0; then if background_color 0,0,0; then ``` ### 应用以上 Grub 更改 上面说过 Grub 的配置是由多个文件生成的,系统提供了升级 Grub 重新生成配置文件的命令 ```bash update-grub ``` ## 优化终端显示 ### 修改终端配色 这里先修改 `/home/user/` 目录下的 `.bashrc` 和 `.dircolors`,然后在 `/root/` 目录下建立软链接,确保能够同步 在 `~/.bashrc` 中注释掉如下配置 ```bash #if [ "$color_prompt" = yes ]; then # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' #else # PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' #fi #unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir #case "$TERM" in #xterm*|rxvt*) # PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" # ;; #*) # ;; #esac ``` 并添加如下配置 ```bash PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[38;5;39m\]\w\[\033[00m\] \$ ' ``` 但此时使用 ls 命令显示的文件夹颜色较深,使用下面的命令修改 ```bash dircolors -p > ~/.dircolors sed -ie 's/DIR 01;34/DIR 38;5;39/g' ~/.dircolors ``` ### 优化 Terminal 窗口显示 `Ctrl + Alt + T` 打开 Terminal 窗口 - 右上角设置 - 配置文件首选项 - 常规 - 关闭 **启用菜单快捷键**(影响 htop 退出) - 配置文件 - 未命名 - 文本 - 文本外观 - 终端起始尺寸 **140** 列 **40** 行 - 颜色 - 文本和背景颜色 - 关闭 **使用系统主题中的颜色** - 内置方案 -> Tango 暗色 - 关闭 **使用系统主题的透明度** - 开启 **使用透明背景** ,将其调整为约 **15%** - 滚动 - 关闭 **回滚限制到 10000 行** # 0x04 日常使用优化 ## 修改用户 home 目录下文件夹名为英文 由于日常使用终端使用的都是英文,切换到中文目录中比较麻烦,并且中文可能会导致一些问题 > **注意**:该步骤所有命令使用 *user* 用户操作 通过以下命令修改系统语言 ```bash export LANG=en_US ``` 更新 GTK 语言 ```bash xdg-user-dirs-gtk-update ``` 弹出 **Update standard folders to current language?** 对话框,选择 **Update Names** 一下命令将系统语言重新修改为中文 ```bash export LANG=zh_CN ``` 此时该步骤并未结束,重启后会提示 **将标准文件夹更新到当前语言吗?** ,先选择 **不要再次询问我** ,再点击 **保留旧的名称** ## 重启 以上大部分更改都是重启后才被应用,为减少重启次数,本文先完成以上所有配置,至此重启一次即可 > **注意**:此时重启后默认启动项是 Windows # 0x05 桌面优化 ## 卸载不需要的软件 打开 Ubuntu 软件 卸载如下软件包 - AisleRiot 纸牌游戏 - Amazon - GNOME 扫雷 - GNOME 数独 - GNOME 麻将牌 - Firefox 网络浏览器 或者您习惯使用 Firefox 浏览器可以留下它,但强烈推荐您使用 Chrome 浏览器 安装 Chrome 请参考步骤 **0x07** ## 卸载预装扩展 删除 `/usr/share/gnome-shell/extensions/` 目录下的 `ubuntu-dock` 扩展(该扩展会与 Dash to Dock 产生冲突导致安装失败) `Alt + F2`,输入 `r` 并回车重载桌面 ## 在 Chrome 中安装扩展 在 Chrome 中安装 GNOME Shell integration 扩展 安装完成后访问 [Gnome Extensions](https://extensions.gnome.org/) 进入扩展页面后开启扩展即可自动安装,在 **优化** 应用中可以管理扩展 推荐如下扩展 - User Themes - Dash to Dock - Top Icons Plus Top Icons Plus 扩展需要使用包管理器安装 ```bash sudo apt install gnome-shell-extension-top-icons-plus ``` ## 安装 Gnome Shell 主题 访问 [Gnome Look - Gnome Shell Themes](https://www.gnome-look.org/browse/cat/134/order/latest/) 下载更多,各主题安装方式可能不同,请参考主题页面 推荐 Flat-Remix 主题 ```bash sudo add-apt-repository ppa:daniruiz/flat-remix sudo apt update sudo apt install flat-remix-gnome ``` ## 安装图标主题 推荐 Paper 图标主题 ```bash sudo add-apt-repository -u ppa:snwh/ppa ``` 该源中并不包含 Ubuntu 19.10(eoan),但 Ubuntu 19.04(disco)的主题包也可以应用在 19.10 中,这里手动更改版本 编辑 `/etc/apt/sources.list.d/snwh-ubuntu-ppa-eoan.list` 将链接后的 eoan 修改为 disco 更新软件包列表并安装图标主题 ```bash sudo apt update sudo apt install paper-icon-theme ``` ## 修改 Gnome 桌面设置 打开 Gnome Tweak Tool(优化) - 外观 - 主题 - 应用程序 -> Adwaita-dark - 图标 -> Paper - Shell -> Flat-Remix-Darkest-fullPanel - 开机启动程序 -> 添加 Clash ## 配置 Dash to dock 扩展 打开 Gnome Tweak Tool(优化) - 扩展 - 配置 Dash to dock - 位置和大小 - 智能隐藏设置 - 自动隐藏 - 开启 **在全屏模式下启用** - 避开窗口 -> 选择 **仅最大化窗口** - 启动器 - 开启 **隔离工作区** - 外观 - Customize windows counter indicators -> Dashes - 自定义透明度 -> 固定 - 20% `Alt + F2`,输入 `r` 并回车重载桌面 # 0x06 开发环境安装及配置 ## [可选] Clash 或 ClashR ### 下载 Clash 各组件 如果您有服务商或自建节点,该步骤将帮助您使用 Clash 或 ClashR 连接 Vmess 及 SSR 节点 该步骤使用 Clash 举例,ClashR 相同 在 [Clash - GitHub](https://github.com/Dreamacro/clash) 下载 Release 包 > **注意**:下载 `clash-linux-amd64-vx.xx.x.gz` 格式的包 或在 [ClashR - GitHub](https://github.com/frainzy1477/clashrdev) 下载 Release 包 > **注意**:下载 `clashr-linux-amd64-vx.xx.x.x.gz` 格式的包 解压后重命名为 `clash` 或 `clashr` 并赋予执行权限 ```bash mv clash-linux-amd64-vx.xx.x clash chmod +x clash ``` 在 [maxmind-geoip - GitHub](https://github.com/Dreamacro/maxmind-geoip) 下载 `Country.mmdb` 文件,该文件提供基于 IP 的定位 在[Clash GitHub 源码](https://raw.githubusercontent.com/Dreamacro/clash/master/docs/logo.png) 中下载 Clash 的 Logo,作为桌面图标 在您的服务商处下载 Clash 或 ClashR 节点列表,并更名为 `config.yaml` 将以上四个文件放到 `/usr/local/clash/` 目录中 ### 启动脚本 该脚本实现了以下功能 - 检查正在运行的 Clash 客户端并关闭 - 为 Clash 生成运行日志 - 启动新的 Clash 客户端 - 每次启动时检查日志是否超过 15 份,超出删除 在该文件夹下建立 Clash 的启动脚本 `clash_startup.sh` > **注意**:脚本中变量值根据实际情况配置 ```bash #!/bin/bash CLASH_APP_NAME="clash" CLASH_APP_PATH="/usr/local/clash" CLASH_CONFIG_PATH="/usr/local/clash" CLASH_LOG_PATH="/usr/local/clash/log" LOG_DATE=$(date +'%Y%m%d') CHECK_CLASH_PID=$(ps aux | grep "./$CLASH_APP_NAME -d $CLASH_CONFIG_PATH" | grep -v grep | awk '{print $2}') mkdir -p $CLASH_LOG_PATH LOG_NUM=$(ls -lR $CLASH_LOG_PATH | wc -l) LOG_NUM_MAX=15 if [ -n "$CHECK_CLASH_PID" ]; then for clash_pid in $CHECK_CLASH_PID; do kill -9 $clash_pid done fi cd $CLASH_APP_PATH && nohup ./$CLASH_APP_NAME -d $CLASH_CONFIG_PATH 2>&1 >>$CLASH_LOG_PATH/$CLASH_APP_NAME-$LOG_DATE.log & if [ $LOG_NUM -gt $LOG_NUM_MAX ]; then for i in $(seq 1 $(($LOG_NUM-$LOG_NUM_MAX))); do log_old=$(ls $CLASH_LOG_PATH | sort -n | head -1) rm -f $CLASH_LOG_PATH/$log_old done fi ``` 为脚本添加执行权限 ```bash chmod +x clash_startup.sh ``` ### Clash 桌面图标 在 `/usr/share/applications/` 目录中 创建 Clash 桌面图标文件 `clash.desktop` 并写入如下配置 > **注意**:配置值根据实际情况填写 ```ini [Desktop Entry] Version=1.0 Name=Clash GenericName=Clash Comment=Clash Exec=/usr/local/clash/clash_startup.sh Terminal=false Icon=/usr/local/clash/logo.png Type=Application Categories=Network ``` ### Clash 管理界面的桌面图标 在 `/usr/share/applications/` 目录中 创建 Clash 管理界面的桌面图标文件 `clash-panel.desktop` 并写入如下配置 > **注意**:配置值根据实际情况填写 > > **注意**:该配置是使用 Chrome 打开 `http://clash.razord.top/`,如果使用其他浏览器,将 `Exec` 项的值修改为您使用的浏览器打开指定链接的命令即可 ```ini [Desktop Entry] Version=1.0 Name=Clash Panel GenericName=Clash Panel Comment=Clash admin GUI Exec=/usr/bin/google-chrome-stable http://clash.razord.top/ Terminal=false Icon=/usr/local/clash/logo.png Type=Application Categories=Network ``` ### 配置系统和应用代理 Clash 默认使用 **7890** 端口进行 HTTP/HTTPS 代理,使用 **7891** 端口进行 SOCKS5 代理 **系统设置 -> 网络 -> 网络代理 -> 手动** ,设置为如下值 ```ini HTTP 代理 127.0.0.1 7890 HTTPS 代理 127.0.0.1 7890 Socks 主机 127.0.0.1 7891 ``` 此时即可配置应用代理为以上对应的地址和端口实现代理(Chrome 默认使用系统的配置) ### 配置命令行代理 但有些命令行不使用 Gnome 中设置的代理,可以通过软件包 Proxychains 设置 ```bash sudo apt install proxychains ``` 编辑 `/etc/proxychains.conf` 注释掉最后一行的 socks4 配置,添加 socks5 配置 ```bash #socks4 127.0.0.1 9050 socks5 127.0.0.1 7891 ``` 使用方法 ```bash proxychains <command> ``` 测试 ```bash proxychains curl google.com ``` ## MySQL 8.0 从 [官网](https://dev.mysql.com/downloads/repo/apt/) 下载安装包 > **注意**:该安装包的作用是将 MySQL 官方源列表安装到本地,并非直接安装 MySQL 点击 **Download** 后在跳转的页面中选择 **No thanks, just start my download** 下载完成后使用 apt 安装 ```bash sudo apt install ./mysql-apt-config_0.8.15-1_all.deb ``` 在弹出的 **mysql-apt-config** 中选择 **OK** 安装完成后更新软件包列表并安装 **mysql-server** 包 > **注意**:建议先使用 `apt show mysql-server` 查看包信息,确认 **APT-Source** 项为 MySQL 官网(repo.mysql.com) ```bash sudo apt update sudo apt install mysql-server ``` 根据提示输入 MySQL *root* 用户的密码 > **注意**:该用户是 MySQL 的根用户,与系统 *root* 用户不同 在 **Select default authentication plugin** 中有以下两个选项,如果想使用新版加强的密码加密插件,可以选择第一个。想使用 5.x 版本的认证方法,选择第二个。他们的区别主要在于对密码强度的要求 ```bash Use Strong Password Encryption (RECOMMENDED) Use Legacy Authentication Method (Retain MySQL 5.x Compatibility) ``` 这里建议选择第二个,在实际测试中发现第一项可能导致某些客户端无法登录的问题 ## Anaconda3 Anaconda 是一个很方便的 Python 包和虚拟环境管理器,详情请参考 [Anaconda Doc](https://conda.io/projects/conda/en/latest/index.html) ### 安装 Anaconda3 从 [TUNA](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/) 下载 `Anaconda3-xxxx.xx-Linux-x86_64.sh` 格式的安装脚本 赋予执行权限并安装 ```bash chmod +x Anaconda3-xxxx.xx-Linux-x86_64.sh ./Anaconda3-xxxx.xx-Linux-x86_64.sh ``` 安装过程中会询问安装位置,填写为 `/usr/local/anaconda3` 即可 安装最后一步会询问 **Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no]** 建议输入 **yes** ### 更换为 TUNA 源 换 TUNA 源 首先使用 *user* 用户执行 `conda config --set show_channel_urls yes` 命令生成配置文件 修改 *user* 用户 home 目录下的 `.condarc` 文件为如下 ```ini channels: - defaults show_channel_urls: true channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud ``` 在 *root* 用户 home 目录下建立软连接 ```bash sudo ln -sf /home/user/.condarc /root/ ``` Anaconda 默认使用 Python 3.7,但实际开发中多使用 Python 3.6 清除索引缓存并将当前 conda 环境下 python 版本替换为 3.6 ```bash conda clean -i conda install python=3.6 ``` ## Java SE 8u241 截至目前(2020年4月12日),Oracle 发布的最新 Java SE 版本为 14,但为了兼容旧项目以及其他应用,这里仍然选择安装配置 Java SE 8u241 访问 [Java 官网](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html) 点击 **Java SE Development Kit 8u241** 下的 **Linux x64 Compressed Archive** 右侧链接下载 在弹出的对话框中选中 **I reviewed and accept ...** ,然后点击 **下载** 在跳转的页面中登录 Oracle 帐号 解压后将其移动到 `/usr/local/` 目录下 编辑 `/etc/profile` 文件,增加如下配置 ```bash export PATH=$PATH:/usr/local/jdk1.8.0_241/bin export JAVA_HOME=/usr/local/jdk1.8.0_241 export JRE_HOME=/usr/local/jdk1.8.0_241/jre ``` ## Go 访问 [GoLang 官网](https://golang.org/dl/) 点击 **Linux** 开始下载 解压后移动到 `/usr/local/` 目录下 在 `/etc/profile` 中添加以下配置 ```bash export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=/usr/local/go/src ``` ## NodeJs ### 安装 NodeJs 访问 [NodeJs 官网](https://nodejs.org/zh-cn/) 点击 **长期支持版** 开始下载 解压后重命名为 `node` 并移动到 `/usr/local/` 目录下 在 `/etc/profile` 中添加以下配置 ```bash export PATH=$PATH:/usr/local/node/bin ``` ### 安装 cnpm 由于 npm 官方源位于国外,这里安装 cnpm,使用淘宝源进行 nodejs 包管理,在之后的使用中可以直接使用 cnpm 替换 npm ```bash npm install -g cnpm --registry=https://registry.npm.taobao.org ``` ## PHP 7.3 ### 安装 PHP 7.3 ```bash sudo apt install php7.3-fpm ``` ### 使 FastCGI 监听端口 FastCGI 默认监听 `/run/php/php7.3-fpm.sock` 文件,按照习惯这里修改为监听 **9000** 端口 将 `/etc/php/7.3/fpm/pool.d/www.conf` 中 `listen` 的值修改为 **9000** ## Nginx ### 安装 Nginx ```bash sudo apt install nginx ``` ### 配置 Nginx 解析 PHP 编辑 `/etc/nginx/site-enabled/default`,在 `server {}` 块中添加如下配置 ```nginx location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } ``` 替换将 `server {}` 块中的 `index` 配置替换为如下 ```ini index index.php index.html index.htm; ``` 使用以下命令重启 Nginx 和 php-fpm ```bash systemctl restart nginx systemctl restart php7.3-fpm ``` 访问 `http://127.0.0.1/` 测试 Nginx 是否配置成功 Nginx 的 web 根目录默认位于 `/var/www/html/` 目录,在该目录下创建 index.php 文件,写入如下代码并访问 `http://127.0.0.1/` 测试 php 可用性 ```php <?php phpinfo(); ?> ``` 测试完成后删除 `index.php` 中的内容 # 0x07 应用安装及配置 ## Chrome 浏览器 下载 Chrome 并安装 ```bash wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb ``` ## Free Download Magager 5 FDM5 是一个开源下载器 访问 [FDM5 官网](https://www.freedownloadmanager.org/zh/) 下载安装包 ```bash sudo apt install ./freedownloadmanager.deb ``` 在 Chrome 中安装 Free Download Manager 扩展,可接管浏览器下载行为 ## Sarasa Term SC 字体 这是一个开源的等宽字体,中文名为 **更纱黑体** ,该字体可以解决在 Chromium 内核中等宽字体渲染错误导致不等宽的问题(例如 YaHei Consolas Hybrid 在 VSCode 中) 虽然这个字体一开始用会觉得很奇怪,用习惯了还挺好看 访问 [Sarasa GitHub](https://github.com/be5invis/Sarasa-Gothic) 下载 `sarasa-gothic-ttf-x.xx.x.7z` 格式的 Release 包 > **注意**:该字体包中包含了多种字体,我们只需要双击 **sarasa-term-sc** 开头的字体并点击右上角 **安装** 即可 ## MySQL Workbench ```bash sudo apt install mysql-workbench ``` ## VSCode ### 安装 VSCode 访问 [VSCode 官网](https://code.visualstudio.com/) 点击 **.deb** 开始下载 ```bash sudo apt install ./code_x.xx.x-xxxxxxxxxx_amd64.deb ``` ### 插件推荐 - Chinese (Simplified) Language Pack for Visual Studio Code - C/C++ - ESLint - Markdown All in One - markdownlint - Polacode - Project Manager - Python - Remote Development - Remote - Containers - Remote - SSH - Remote - SSH: Editing Configuration Files - Remote - WSL - Todo Tree 将以下配置写入 setting.json(VSCode 的用户配置文件) ```json { "editor.fontFamily": "Sarasa Term SC", "editor.mouseWheelZoom": true, "editor.fontSize": 16, "todo-tree.tree.showScanModeButton": false } ``` ## 网易云音乐 访问 [网易云音乐官网](https://music.163.com/#/download) 右上角 **下载全部客户端 -> Linux版 -> ubuntu 18.04(64位)** ```bash sudo apt install ./netease-cloud-music_x.x.x_amd64_ubuntu_xxxxxxxx.deb ``` ## VLC 开源播放器 ```bash sudo apt install vlc ``` ## FileZilla 开源 FTP 客户端 ```bash sudo apt install filezilla ``` ## Telegram 加密即时通讯 ```bash sudo apt install telegram-desktop ``` ## Postman HTTP 请求模拟/测试 ### 安装 Postman 访问 [Postman 官网](https://www.postman.com/downloads/),点击 **Download** 下载 将解压后的文件夹移动至 `/usr/local` 下 ### Postman 桌面图标 在 `/usr/share/applications/` 目录下为其建立桌面图标 `postman.desktop` 并写入如下配置 ```ini [Desktop Entry] Version=1.0 Name=Postman GenericName=Postman Comment=Postman Exec=/usr/local/Postman/Postman Terminal=false Icon=/usr/local/Postman/app/resources/app/assets/icon.png Type=Application Categories=Development ``` ### 修改 Postman 工作目录 Postman 默认将工作文件放在用户 home 目录下且不隐藏 这里将 **settings -> General -> WORKING DIRECTORY -> Location** 修改为 `/home/user/.postman/` 目录 ## Meld 开源文件/文件夹 Diff + Merge 工具 ```bash sudo apt install meld ``` ## HMCL Minecraft 第三方启动器 > **注意**:确保本地配置了 jdk 环境且 `java` 命令可用 ### 安装 HMCL 访问 [HMCL 官网](https://hmcl.huangyuhui.net/download) 下载 **.jar** 包 下载后将其重命名为 `HMCL.jar` ### 创建启动脚本 创建启动脚本 `hmcl.sh`,便于桌面调用 ```bash #!/bin/bash HMCL_PATH="/usr/local/minecraft" HMCL_NAME="HMCL.jar" cd $HMCL_PATH && java -jar $HMCL_NAME ``` 赋予其执行权限 ```bash chmod +x hmcl.sh ``` 下载 logo 并将其重命名为 `logo.png` Logo 来自 [HMCL 官方 Github 的资源目录](https://github.com/huanghongxun/HMCL/tree/javafx/HMCL/src/main/resources/assets/img),同级目录下有其他 Logo 可供使用,以下为可用的 Logo 链接列表 - [书架](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/bookshelf.png) - [鸡](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/chicken.png) - [命令方块](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/command.png) - [工作台](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/craft_table.png) - [Fabric](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/fabric.png) - [Forge](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/forge.png) - [熔炉](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/furnace.png) - [草方块](https://raw.githubusercontent.com/huanghongxun/HMCL/javafx/HMCL/src/main/resources/assets/img/grass.png) 在 `/usr/local` 目录下建立 `minecraft` 文件夹,将 HMCL 的 jar 包,启动脚本和 `logo.png` 移动到该目录中 ### HMCL 桌面图标 在 `/usr/share/applications/` 目录下为其建立桌面图标 `hmcl.desktop` ```ini [Desktop Entry] Version=1.0 Name=HMCL GenericName=Hello Minecraft! Launcher Comment=A Minecraft Launcher which is multi-functional, cross-platform and popular Exec=/usr/local/minecraft/hmcl.sh Terminal=false Icon=/usr/local/minecraft/logo.png Type=Application Categories=Game ``` ### 修改下载缓存位置 **启动器设置 -> 文件下载缓存目录** 修改为 `/usr/local/minecraft/.minecraft/` 目录 > **注意**:需要将 HMCL 下载源修改为官方源才能正常安装 fabric ## Jetbrains 系列 IDE 这里使用 idea 举例 访问 [JetBrains 官网](https://www.jetbrains.com/),顶部 Tool 选择要下载的 IDE,跳转后点击 **Download** ,下载 **Ultimate** 或 **Professional** 版本 解压后将其放在 `/usr/local/` 目录下,其可执行程序一般位于 `ide文件夹/bin/` 目录下,例如 `idea/bin/idea`,使用 *user* 用户运行,在配置过程中会自动创建桌面图标,无需用户配置 开始配置前请务必参考 [知了 Blog](https://zhile.io) 最后修改:2022 年 01 月 03 日 © 允许规范转载