程式員的 Ubuntu 19.10 配置與優化指南

来源:https://www.cnblogs.com/leviatan/archive/2020/04/14/12701974.html
-Advertisement-
Play Games

轉載請註明原文地址: "程式員的 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: Win ...


轉載請註明原文地址:程式員的 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

筆者該命令的輸出中,最大解析度 1920x1080,實際使用中可能會出現更高的解析度

/etc/default/grub 中修改 Grub 顯示解析度為剛纔查詢到的最大解析度

GRUB_GFXMODE=1920x1080

[可選] 修改 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/ 目錄下所有擴展(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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • c 8引入了新特性:“可為空引用”( "詳情" ),這個功能個人覺得挺好的,能夠非常明確的表現程式設計者的意圖,編譯器能夠進行檢查,盡最大可能減小NullReferenceException錯誤。 如果是新項目,那麼上手很簡單,一點點搭建起來,遇山開山,遇河渡河。但是對於我這種手頭上的項目大多都是以 ...
  • 前言:新的的封裝類,增加了單元格映射深度更新和讀取的功能,預留了標題映射的深度更新介面待擴展。。。(以後有時間和精力再完善吧) 【深度更新】:我這裡定義的深度更新策略,指的是:假如我們需要讀取一組單元格的映射數據為一個對象,但是有不止一組這樣的單元格數據對象,且這些對象的單元格位置排列是有規律的! ...
  • 解決NET Core發佈iis項目覆蓋原有的項目時"另一個程式正在使用此文件,進程無法訪問" 現在net core運用的多了,一系列的問題接踵而來,更新項目發佈到iis時就有一個坑。 應急辦法是直接停站點進行發佈。 但是這樣做會導致,部署項目停的時間過長,網站暫時沒法訪問。(項目發佈完成後記得“啟動 ...
  • 1. 創建新項目-ASP.NET Core Web 應用程式 2. 3. 右鍵項目-管理 NuGet 程式包(N)... 4. 搜索 Pomelo.EntityFrameworkCore.MySql 安裝 5. 在appsettings.json文件添加 資料庫連接字元串 "AllowedHosts ...
  • 本文介紹通過C#程式代碼來添加OLE對象到PPT幻燈片的方法。這裡以將Excel文檔為對象插入到PPT幻燈片中的指定位置;添加時,將Excel中的單元格範圍保存為圖片,將圖片以嵌入的方式添加到幻燈片,添加成功後,可通過雙擊圖片來編輯、打開等動作對Excel源文檔進行操作。 使用工具:Free Spi ...
  • 1、在此次先進行定義 public static AOC aoc = null; aoc = this; 2、在窗體中寫入 Control.CheckForIllegalCrossThreadCalls = false; private void Form1_Load(object sender, ...
  • System.Net.Http.Json Json的序列化和反序列化是我們日常常見的操作,通過 System.Net.Http.Json 我們可以用少量的代碼實現上述操作.正如在github設計文檔中所描述 Serializing and deserializing JSON payloads fr ...
  • 在Linux上進行上傳下載時很容易就會用到壓縮和解壓操作,其中用的較多的算是tar命令了,其他命令也可以瞭解下。 gzip/gunzip命令gzip 文件:以.gz格式壓縮文件。壓縮完成後文件名預設是以.gz結尾的(但是註意Linux中是沒有尾碼名一說的)。gunzip 壓縮文件:解壓.gz格式的壓 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...