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
)
阅读顺序
强烈建议先仔细阅读一遍本文,了解注意事项及大概流程后,再应用到实际部署中
开发环境
本文中配置的开发环境主要面向 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
中添加如下配置
source /etc/profile
注意:在
.bashrc
配置中,为保证后续添加的配置不会被覆盖,默认将新增的配置写在该行下面
文件权限配置
使用软件包管理器安装的包,管理器会自动配置权限,但有些包是我们手动下载并配置的,例如 /usr/local/node/
目录,对于这类包,建议在配置完成后使用下面的命令手动将其权限修改为 user
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 步骤中,完成该步骤后只需重启一次
系统使用 RTC 时间
Ubuntu 安装完成后会出现系统时间与硬件时间不同步的情况,导致 Windows 时间不正确,Windows 端无法进行加密相关的验证
timedatectl set-local-rtc 1 --adjust-system-clock
更换国内软件源
编辑 /etc/apt/sources.list
删除原本的源,添加如下
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 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
更改完成后检查所有软件包的更新并升级
sudo apt update sudo apt upgrade
使 root 与 user 配置同步
将 /home/user/
目录下的配置建立到 /root/
目录的软链接
sudo ln -sf /home/user/.bashrc /root/ sudo ln -sf /home/user/.dircolors /root/
安装常用软件包
sudo apt install curl git htop fcitx-googlepinyin gnome-tweak-tool gnome-shell-extensions chrome-gnome-shell vim hwinfo
安装语言支持并修改输入法
从应用菜单中找到 语言支持 ,打开后会提示 系统中安装的语言支持不完整 ,点击 安装 ,等待安装完成
安装完成后,将键盘输入法系统更改为 fcitx
此时输入法修改并不会立即生效
优化 Grub 显示
Grub 实际的配置文件是由多个配置自动生成的,所以这里需要修改多个文件
Grub 默认会使用硬件能够输出的最小分辨率,导致 Grub 界面模糊
查看显卡在 Grub 中能够输出的分辨率
sudo hwinfo --framebuffer
笔者该命令的输出中,最大分辨率 1920x1080x32,实际使用中可能会出现更高的分辨率
在 /etc/default/grub
中修改 Grub 显示分辨率为刚才查询到的最大分辨率
GRUB_GFXMODE=1920x1080x32
/etc/grub.d/
目录中存放的是 Grub 能够引导的操作系统的配置文件,按照 启动顺序_操作系统名
生成实际的启动顺序
注意:该目录下有一些需要在所有操作系统前启动的配置,例如
00_header
和05_debian_theme
,修改的数字要大于这些
解压后运行 install.sh
,通过参数选择主题及支持的分辨率,具体请参考上面的 GitHub 项目主页
这里安装的是 vimix 主题
sudo ./install.sh --vimix
虽然已经设置了 Grub 主题,但实际上它只是在默认的紫色背景上显示了一张图片进行覆盖,当选择操作系统退出 Grub 后,有些主板仍然会显示默认的紫色背景
这可能导致启动系统时屏幕出现 黑 -> Grub -> 黑 -> 紫 -> 黑 -> OS ,影响美观,所以这里将背景修改为黑色
编辑 /usr/share/plymouth/themes/default.grub
文件,将原本的脚本注释并写入新的
if background_color 0,0,0; then
上面说过 Grub 的配置是由多个文件生成的,系统提供了升级 Grub 重新生成配置文件的命令
update-grub
优化终端显示
这里先修改 /home/user/
目录下的 .bashrc
和 .dircolors
,然后在 /root/
目录下建立软链接,确保能够同步
在 ~/.bashrc
中注释掉如下配置
并添加如下配置
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[38;5;39m\]\w\[\033[00m\]\$ '
但此时使用 ls 命令显示的文件夹颜色较深,使用下面的命令修改
dircolors -p > ~/.dircolors sed -ie 's/DIR 01;34/DIR 38;5;39/g' ~/.dircolors
Ctrl + Alt + T
打开 Terminal 窗口
-
右上角设置
- 配置文件首选项
-
常规
- 关闭 启用菜单快捷键(影响 htop 退出)
-
配置文件
- 未命名
- 文本
- 文本外观
- 终端起始尺寸 140 列 40 行
- 文本外观
- 颜色
- 文本和背景颜色
- 关闭 使用系统主题中的颜色
- 内置方案 -> Tango 暗色
- 关闭 使用系统主题的透明度
- 开启 使用透明背景 ,将其调整为约 15%
- 文本和背景颜色
- 滚动
- 关闭 回滚限制到 10000 行
- 文本
- 未命名
修改用户 home 目录下文件夹名为英文
由于日常使用终端使用的都是英文,切换到中文目录中比较麻烦,并且中文可能会导致一些问题
注意:该步骤所有命令使用 user 用户操作
通过以下命令修改系统语言
export LANG=en_US
更新 GTK 语言
xdg-user-dirs-gtk-update
弹出 Update standard folders to current language? 对话框,选择 Update Names
一下命令将系统语言重新修改为中文
export LANG=zh_CN
此时该步骤并未结束,重启后会提示 将标准文件夹更新到当前语言吗? ,先选择 不要再次询问我 ,再点击 保留旧的名称
以上大部分更改都是重启后才被应用,为减少重启次数,本文先完成以上所有配置,至此重启一次即可
注意:此时重启后默认启动项是 Windows
卸载不需要的软件
打开 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 扩展
进入扩展页面后开启扩展即可自动安装,在 优化 应用中可以管理扩展
推荐如下扩展
- User Themes
- Dash to Dock
- Top Icons Plus
Top Icons Plus 扩展需要使用包管理器安装
sudo apt install gnome-shell-extension-top-icons-plus
安装 Gnome Shell 主题
推荐 Flat-Remix 主题
sudo add-apt-repository ppa:daniruiz/flat-remix sudo apt update sudo apt install flat-remix-gnome
安装图标主题
推荐 Paper 图标主题
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
更新软件包列表并安装图标主题
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
并回车重载桌面
MySQL 8.0
注意:该安装包的作用是将 MySQL 官方源列表安装到本地,并非直接安装 MySQL
点击 Download 后在跳转的页面中选择 No thanks, just start my download
下载完成后使用 apt 安装
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)
sudo apt update sudo apt install mysql-server
根据提示输入 MySQL root 用户的密码
注意:该用户是 MySQL 的根用户,与系统 root 用户不同
在 Select default authentication plugin 中有以下两个选项,如果想使用新版加强的密码加密插件,可以选择第一个。想使用 5.x 版本的认证方法,选择第二个。他们的区别主要在于对密码强度的要求
Use Strong Password Encryption (RECOMMENDED)
Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)
这里建议选择第二个,在实际测试中发现第一项可能导致某些客户端无法登录的问题
Anaconda3
赋予执行权限并安装
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 源
首先使用 user 用户执行 conda config --set show_channel_urls yes
命令生成配置文件
修改 user 用户 home 目录下的 .condarc
文件为如下
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 目录下建立软连接
sudo ln -sf /home/user/.condarc /root/
Anaconda 默认使用 Python 3.7,但实际开发中多使用 Python 3.6
清除索引缓存并将当前 conda 环境下 python 版本替换为 3.6
conda clean -i conda install python=3.6
Java SE 8u241
截至目前(2020年4月12日),Oracle 发布的最新 Java SE 版本为 14,但为了兼容旧项目以及其他应用,这里仍然选择安装配置 Java SE 8u241
点击 Java SE Development Kit 8u241 下的 Linux x64 Compressed Archive 右侧链接下载
在弹出的对话框中选中 I reviewed and accept … ,然后点击 下载
在跳转的页面中登录 Oracle 帐号
解压后将其移动到 /usr/local/
目录下
编辑 /etc/profile
文件,增加如下配置
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
点击 Linux 开始下载
解压后移动到 /usr/local/
目录下
在 /etc/profile
中添加以下配置
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=/usr/local/go/src
NodeJs
点击 长期支持版 开始下载
解压后重命名为 node
并移动到 /usr/local/
目录下
在 /etc/profile
中添加以下配置
export PATH=$PATH:/usr/local/node/bin
由于 npm 官方源位于国外,这里安装 cnpm,使用淘宝源进行 nodejs 包管理,在之后的使用中可以直接使用 cnpm 替换 npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
PHP 7.3
sudo apt install php7.3-fpm
FastCGI 默认监听 /run/php/php7.3-fpm.sock
文件,按照习惯这里修改为监听 9000 端口
将 /etc/php/7.3/fpm/pool.d/www.conf
中 listen
的值修改为 9000
Nginx
sudo apt install nginx
编辑 /etc/nginx/site-enabled/default
,在 server {}
块中添加如下配置
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
配置替换为如下
index index.php index.html index.htm;
使用以下命令重启 Nginx 和 php-fpm
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 phpinfo(); ?>
测试完成后删除 index.php
中的内容
Chrome 浏览器
下载 Chrome 并安装
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 是一个开源下载器
sudo apt install ./freedownloadmanager.deb
在 Chrome 中安装 Free Download Manager 扩展,可接管浏览器下载行为
Sarasa Term SC 字体
这是一个开源的等宽字体,中文名为 更纱黑体 ,该字体可以解决在 Chromium 内核中等宽字体渲染错误导致不等宽的问题(例如 YaHei Consolas Hybrid 在 VSCode 中)
虽然这个字体一开始用会觉得很奇怪,用习惯了还挺好看
注意:该字体包中包含了多种字体,我们只需要双击 sarasa-term-sc 开头的字体并点击右上角 安装 即可
MySQL Workbench
sudo apt install mysql-workbench
VSCode
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 的用户配置文件)
{ "editor.fontFamily": "Sarasa Term SC", "editor.mouseWheelZoom": true, "editor.fontSize": 16, "todo-tree.tree.showScanModeButton": false }
网易云音乐
右上角 下载全部客户端 -> Linux版 -> ubuntu 18.04(64位)
sudo apt install ./netease-cloud-music_x.x.x_amd64_ubuntu_xxxxxxxx.deb
VLC
开源播放器
sudo apt install vlc
FileZilla
开源 FTP 客户端
sudo apt install filezilla
Telegram
加密即时通讯
sudo apt install telegram-desktop
Postman
HTTP 请求模拟/测试
将解压后的文件夹移动至 /usr/local
下
在 /usr/share/applications/
目录下为其建立桌面图标 postman.desktop
并写入如下配置
[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 默认将工作文件放在用户 home 目录下且不隐藏
这里将 settings -> General -> WORKING DIRECTORY -> Location 修改为 /home/user/.postman/
目录
Meld
开源文件/文件夹 Diff + Merge 工具
sudo apt install meld
HMCL
Minecraft 第三方启动器
注意:确保本地配置了 jdk 环境且
java
命令可用
下载后将其重命名为 HMCL.jar
创建启动脚本 hmcl.sh
,便于桌面调用
#!/bin/bash HMCL_PATH="/usr/local/minecraft" HMCL_NAME="HMCL.jar" cd $HMCL_PATH && java -jar $HMCL_NAME
赋予其执行权限
chmod +x hmcl.sh
下载 logo 并将其重命名为 logo.png
在 /usr/local
目录下建立 minecraft
文件夹,将 HMCL 的 jar 包,启动脚本和 logo.png
移动到该目录中
在 /usr/share/applications/
目录下为其建立桌面图标 hmcl.desktop
[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 官网,顶部 Tool 选择要下载的 IDE,跳转后点击 Download ,下载 Ultimate 或 Professional 版本
解压后将其放在 /usr/local/
目录下,其可执行程序一般位于 ide文件夹/bin/
目录下,例如 idea/bin/idea
,使用 user 用户运行,在配置过程中会自动创建桌面图标,无需用户配置
原文链接:https://blog.csdn.net/a51509/article/details/105523455