转载请注明原文地址:程序员的 Ubuntu 19.10 配置与优化指南

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

用户与系统环境变量配置

按照笔者的习惯,为保证 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 步骤中,完成该步骤后只需重启一次

0x02 安装后保证系统能够正常使用

系统使用 RTC 时间

Ubuntu 安装完成后会出现系统时间与硬件时间不同步的情况,导致 Windows 时间不正确,Windows 端无法进行加密相关的验证

timedatectl set-local-rtc 1 --adjust-system-clock

更换国内软件源

软件源分别来自 TUNA(清华大学 TUNA 协会 创建的 清华大学开源软件镜像站)和 OPSX(阿里云 创建的 阿里巴巴开源镜像站

编辑 /etc/apt/sources.list

删除原本的源,添加如下

## 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

更改完成后检查所有软件包的更新并升级

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
软件包 用途
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 中能够输出的分辨率

sudo hwinfo --framebuffer

笔者该命令的输出中,最大分辨率 1920x1080x32,实际使用中可能会出现更高的分辨率

/etc/default/grub 中修改 Grub 显示分辨率为刚才查询到的最大分辨率

GRUB_GFXMODE=1920x1080x32

[可选] 修改 Grub 中显示的操作系统顺序

/etc/grub.d/ 目录中存放的是 Grub 能够引导的操作系统的配置文件,按照 启动顺序_操作系统名 生成实际的启动顺序

这里由于笔者习惯,需要将第一启动项修改为 Windows,直接将 30_os-prober 前的数字改到小于 10_linux 即可

注意:该目录下有一些需要在所有操作系统前启动的配置,例如 00_header05_debian_theme,修改的数字要大于这些

为 Grub 安装主题

grub2-themes - GitHub 下载 Release 包

解压后运行 install.sh,通过参数选择主题及支持的分辨率,具体请参考上面的 GitHub 项目主页

这里安装的是 vimix 主题

sudo ./install.sh --vimix

修改 Grub 背景颜色

虽然已经设置了 Grub 主题,但实际上它只是在默认的紫色背景上显示了一张图片进行覆盖,当选择操作系统退出 Grub 后,有些主板仍然会显示默认的紫色背景

这可能导致启动系统时屏幕出现 黑 -> Grub -> 黑 -> 紫 -> 黑 -> OS ,影响美观,所以这里将背景修改为黑色

编辑 /usr/share/plymouth/themes/default.grub 文件,将原本的脚本注释并写入新的

#if background_color 79,25,76,0; then
if background_color 0,0,0; then

应用以上 Grub 更改

上面说过 Grub 的配置是由多个文件生成的,系统提供了升级 Grub 重新生成配置文件的命令

update-grub

优化终端显示

修改终端配色

这里先修改 /home/user/ 目录下的 .bashrc.dircolors,然后在 /root/ 目录下建立软链接,确保能够同步

~/.bashrc 中注释掉如下配置

#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

并添加如下配置

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

优化 Terminal 窗口显示

Ctrl + Alt + T 打开 Terminal 窗口

  • 右上角设置

    • 配置文件首选项
  • 常规

    • 关闭 启用菜单快捷键(影响 htop 退出)
  • 配置文件

    • 未命名

      • 文本

        • 文本外观

          • 终端起始尺寸 14040
      • 颜色
        • 文本和背景颜色

          • 关闭 使用系统主题中的颜色
          • 内置方案 -> Tango 暗色
          • 关闭 使用系统主题的透明度
          • 开启 使用透明背景 ,将其调整为约 15%
      • 滚动
        • 关闭 回滚限制到 10000 行

0x04 日常使用优化

修改用户 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

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

进入扩展页面后开启扩展即可自动安装,在 优化 应用中可以管理扩展

推荐如下扩展

  • User Themes
  • Dash to Dock
  • Top Icons Plus

Top Icons Plus 扩展需要使用包管理器安装

sudo apt install gnome-shell-extension-top-icons-plus

安装 Gnome Shell 主题

访问 Gnome Look - Gnome Shell Themes 下载更多,各主题安装方式可能不同,请参考主题页面

推荐 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 并回车重载桌面

0x06 开发环境安装及配置

[可选] Clash 或 ClashR

下载 Clash 各组件

如果您有服务商或自建节点,该步骤将帮助您使用 Clash 或 ClashR 连接 Vmess 及 SSR 节点

该步骤使用 Clash 举例,ClashR 相同

Clash - GitHub 下载 Release 包

注意:下载 clash-linux-amd64-vx.xx.x.gz 格式的包

或在 ClashR - GitHub 下载 Release 包

注意:下载 clashr-linux-amd64-vx.xx.x.x.gz 格式的包

解压后重命名为 clashclashr 并赋予执行权限

mv clash-linux-amd64-vx.xx.x clash
chmod +x clash

maxmind-geoip - GitHub 下载 Country.mmdb 文件,该文件提供基于 IP 的定位

Clash GitHub 源码 中下载 Clash 的 Logo,作为桌面图标

在您的服务商处下载 Clash 或 ClashR 节点列表,并更名为 config.yaml

将以上四个文件放到 /usr/local/clash/ 目录中

启动脚本

该脚本实现了以下功能

  • 检查正在运行的 Clash 客户端并关闭
  • 为 Clash 生成运行日志
  • 启动新的 Clash 客户端
  • 每次启动时检查日志是否超过 15 份,超出删除

在该文件夹下建立 Clash 的启动脚本 clash_startup.sh

注意:脚本中变量值根据实际情况配置

#!/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

为脚本添加执行权限

chmod +x clash_startup.sh

Clash 桌面图标

/usr/share/applications/ 目录中 创建 Clash 桌面图标文件 clash.desktop 并写入如下配置

注意:配置值根据实际情况填写

[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 项的值修改为您使用的浏览器打开指定链接的命令即可

[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 代理

系统设置 -> 网络 -> 网络代理 -> 手动 ,设置为如下值

HTTP 代理 127.0.0.1 7890
HTTPS 代理 127.0.0.1 7890
Socks 主机 127.0.0.1 7891

此时即可配置应用代理为以上对应的地址和端口实现代理(Chrome 默认使用系统的配置)

配置命令行代理

但有些命令行不使用 Gnome 中设置的代理,可以通过软件包 Proxychains 设置

sudo apt install proxychains

编辑 /etc/proxychains.conf

注释掉最后一行的 socks4 配置,添加 socks5 配置

#socks4  127.0.0.1 9050
socks5 127.0.0.1 7891

使用方法

proxychains <command>

测试

proxychains curl google.com

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

Anaconda 是一个很方便的 Python 包和虚拟环境管理器,详情请参考 Anaconda Doc

安装 Anaconda3

TUNA 下载 Anaconda3-xxxx.xx-Linux-x86_64.sh 格式的安装脚本

赋予执行权限并安装

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 文件为如下

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 官网

点击 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

Go

访问 GoLang 官网

点击 Linux 开始下载

解压后移动到 /usr/local/ 目录下

/etc/profile 中添加以下配置

export PATH=$PATH:/usr/local/go/bin

export GOROOT=/usr/local/go
export GOPATH=/usr/local/go/src

NodeJs

安装 NodeJs

访问 NodeJs 官网

点击 长期支持版 开始下载

解压后重命名为 node 并移动到 /usr/local/ 目录下

/etc/profile 中添加以下配置

export PATH=$PATH:/usr/local/node/bin

安装 cnpm

由于 npm 官方源位于国外,这里安装 cnpm,使用淘宝源进行 nodejs 包管理,在之后的使用中可以直接使用 cnpm 替换 npm

npm install -g cnpm --registry=https://registry.npm.taobao.org

PHP 7.3

安装 PHP 7.3

sudo apt install php7.3-fpm

使 FastCGI 监听端口

FastCGI 默认监听 /run/php/php7.3-fpm.sock 文件,按照习惯这里修改为监听 9000 端口

/etc/php/7.3/fpm/pool.d/www.conflisten 的值修改为 9000

Nginx

安装 Nginx

sudo apt install nginx

配置 Nginx 解析 PHP

编辑 /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 中的内容

0x07 应用安装及配置

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 是一个开源下载器

访问 FDM5 官网 下载安装包

sudo apt install ./freedownloadmanager.deb

在 Chrome 中安装 Free Download Manager 扩展,可接管浏览器下载行为

Sarasa Term SC 字体

这是一个开源的等宽字体,中文名为 更纱黑体 ,该字体可以解决在 Chromium 内核中等宽字体渲染错误导致不等宽的问题(例如 YaHei Consolas Hybrid 在 VSCode 中)

虽然这个字体一开始用会觉得很奇怪,用习惯了还挺好看

访问 Sarasa GitHub 下载 sarasa-gothic-ttf-x.xx.x.7z 格式的 Release 包

注意:该字体包中包含了多种字体,我们只需要双击 sarasa-term-sc 开头的字体并点击右上角 安装 即可

MySQL Workbench

sudo apt install mysql-workbench

VSCode

安装 VSCode

访问 VSCode 官网 点击 .deb 开始下载

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 请求模拟/测试

安装 Postman

访问 Postman 官网,点击 Download 下载

将解压后的文件夹移动至 /usr/local

Postman 桌面图标

/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 工作目录

Postman 默认将工作文件放在用户 home 目录下且不隐藏

这里将 settings -> General -> WORKING DIRECTORY -> Location 修改为 /home/user/.postman/ 目录

Meld

开源文件/文件夹 Diff + Merge 工具

sudo apt install meld

HMCL

Minecraft 第三方启动器

注意:确保本地配置了 jdk 环境且 java 命令可用

安装 HMCL

访问 HMCL 官网 下载 .jar

下载后将其重命名为 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

Logo 来自 HMCL 官方 Github 的资源目录,同级目录下有其他 Logo 可供使用,以下为可用的 Logo 链接列表

/usr/local 目录下建立 minecraft 文件夹,将 HMCL 的 jar 包,启动脚本和 logo.png 移动到该目录中

HMCL 桌面图标

/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 用户运行,在配置过程中会自动创建桌面图标,无需用户配置

开始配置前请务必参考 知了 Blog

程序员的 Ubuntu 19.10 配置与优化指南的更多相关文章

  1. [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果

    [C#]使用 C# 代码实现拓扑排序   目录 0.参考资料 1.介绍 2.原理 3.实现 4.深度优先搜索实现 回到顶部 0.参考资料 尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用. ...

  2. Ubuntu 19.10 发布 | 云原生生态周报 Vol. 24

    作者 | 木苏.进超.冬岛.元毅.心水.衷源 业界要闻 1.云原生编程语言 Pulumi 1.0 pulumi ,一款中立的开源云开发平台,Pulumi 支持多语言.混合云环境.完全可扩展.初期支持 ...

  3. Java程序员应该掌握的10项技能

    这篇文章主要介绍了作为Java程序员应该掌握的10项技能,包括java的知识点与相关的技能,对于java的学习有不错的参考借鉴价值,需要的朋友可以参考下   1.语法:必须比较熟悉,在写代码的时候ID ...

  4. (转)程序员应该知道的10个eclipse调试技巧

    调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...

  5. 作为Java程序员应该掌握的10项技能

    本文详细罗列了作为Java程序员应该掌握的10项技能.分享给大家供大家参考.具体如下: 1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知 ...

  6. [Linux] 树莓派 4B 安装 Ubuntu 19.10 (Eoan Ermine) IOT 版

    硬件:Raspberry Pi 4B系统:Ubuntu 19.10 (Eoan Ermine) for IOT官网:https://ubuntu.com/download/iot/raspberry- ...

  7. Ubuntu 19.10将使用GCC 9作为默认编译器

    作为我们这一周期一直期待的变化,Ubuntu 19.10升级到GCC 9作为GCC 8的默认系统编译器. Ubuntu 19.10(和Ubuntu 20.04 LTS)将使用GCC 9 stable作 ...

  8. Ubuntu 19.10安装Wine软件

    ======================================== 我使用的操作系统版本为Ubuntu 19.10 64位,如果是32位Ubuntu19.10则可以跳过步骤一 1.添加 ...

  9. Java程序员常犯的10个错误

      本文总结了Java程序员常犯的10个错误. #1. 把Array转化成ArrayList 把Array转化成ArrayList,程序员经常用以下方法: List<String> lis ...

随机推荐

  1. Java 基础(四):数组

    数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同且无序的元素的存储在固定长度且有序的内存空间. 创建一个数组 在Java中,我们可以通过[]去声明一个指定类型的数组 int[] a; // ...

  2. 从火箭发场景来学习Java多线程并发闭锁对象

    从火箭发场景来学习Java多线程并发闭锁对象 倒计时器场景 在我们开发过程中,有时候会使用到倒计时计数器.最简单的是:int size = 5; 执行后,size—这种方式来实现.但是在多线程并发的情 ...

  3. Python基础篇(一)_基本语法元素

    Python基础篇——基本语法元素 缩进:体现强制可读性,一般缩进4个空格.一个或多个Tab 注释:单行注释----以 # 开头 多行注释----每行以 # 开头,以 # 结束 变量:无须提前声明.可 ...

  4. File 关键词

    getParent() 获取父路径 getAbsoluteFile 获取绝对路径 length()  获得文件的字节数 getName() 获取路径中最后部分的名字 getPath() 获取整体路径. ...

  5. Jenkins的制品管理

    Jenkins的制品管理 制品是什么? 也叫产出物或工件.制品是软件开发过程中产生的多种有形副产品之一.广义的制品包括用例.UML图.设计文档等.而狭义的制品就可以简单地理解为二进制包.虽然有些代码是 ...

  6. Journal of Proteomics Research | Th-MYCN转基因小鼠的定量蛋白质学分析揭示了Aurora Kinase抑制剂改变代谢途径和增强ACADM以抑制神经母细胞瘤的进展

    题目:Quantitative Proteomics of Th-MYCN Transgenic Mice Reveals Aurora Kinase Inhibitor Altered Metabo ...

  7. Spring Data JPA 自定义对象接收查询结果集

    Spring Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和 ...

  8. pandas 的常用方法

    pandas的常用方法: 1.数据输入 2.数据查看 3.数据清洗 4.数据处理 5.数据提取 6.数据筛选 7.数据汇总 8.数据统计 9.数据输出 详情见: https://blog.csdn.n ...

  9. asp.net core系列 76 Apollo 快速安装模式下填坑和ASP.NetCore结合使用

    前言:由于公司占时没有运维,出于微服务的需要,Apollo只能先装在windows 阿里云上跑起来,由于环境及网络等问题,在安装过程中遇到很多坑,算是一个个坑填完后,最终实现. 一. java jdk ...

  10. 被问到到http的时候你就这么回答!

    大家好,我是标题党,啊不,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 分享不易,希望能够得到大家的支持和关注. 什么是互 ...