好物优选点击查看详情 京东购买

暂无内容

程序员的 Ubuntu 19.10 配置与优化指南

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 服务需要使用该用户

用户与系统环境变量配置

按照笔者的习惯,为保证 rootuser 使用相同的环境,/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 

使 rootuser 配置同步

/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_header05_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 退出)
  • 配置文件

    • 未命名
      • 文本
        • 文本外观
          • 终端起始尺寸 14040
      • 颜色
        • 文本和背景颜色
          • 关闭 使用系统主题中的颜色
          • 内置方案 -> 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.conflisten 的值修改为 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 ,下载 UltimateProfessional 版本

解压后将其放在 /usr/local/ 目录下,其可执行程序一般位于 ide文件夹/bin/ 目录下,例如 idea/bin/idea,使用 user 用户运行,在配置过程中会自动创建桌面图标,无需用户配置

原文链接:https://blog.csdn.net/a51509/article/details/105523455

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享