Ubuntu 16.04 裝機後的配置要點

weixin_34127717發表於2019-03-11

Ubuntu 作為一個Linux的發行版,在桌面環境的易用性上做了很多改善,對推動Linux的推廣做了很大的貢獻。同時,它作為伺服器的作業系統也越來越多的被使用。當然,伺服器端可能更多的人在使用Redhat、CentOS等系統。Linux的發行版本很多,基本命令都差不多,但是一些系統配置上,也存在著各種各樣的差異。筆者結合Ubuntu的多年使用經驗,總結一下Ubuntu系統的一些配置要點。QQ_20190314095024

  1. 網路的配置

Ubuntu在安裝過程中會自動尋找網路連線並配置網路IP等,但是好多情況下,安裝系統時不需要或不方便配置網路。那麼,等我們安裝完系統,就要先配好網路才能繼續安裝、配置其它軟體。Ubuntu的網路卡名稱在幾年前(大約14.04之前的版本)都是這樣命名的:
有線網路卡為eth0(多個網路卡序號增大:eth1, eth2…),無線網路卡是wlan0。
但是到了16.04的版本,網路卡的命名做了非常大的改動,名稱從eth0變為en開頭的,為什麼改名呢?

可預測的網路介面命名

自從 v197 systemd/udev 開始,系統可以為本地的Ethernet、WLAN和WWAN介面自動地分配可預測的、穩定的網路介面名稱。該規範脫離了傳統的命名機制(eth0,eth1,wlan0等),但是修復了許多問題。

原因

在傳統的網路介面命名規則下,是由核心簡單地從eth0開始為可被驅動探索到的裝置分配名字(eht0,eth1…)。由於這些驅動不能夠被現在技術所預測,意味著多個網路介面都可以被分配名為“eth0”、“eth1”這樣的名字,這種方式存在一種隱患,就是一種介面可能是以“eth0”啟動,但是結束時就變成了“eth1”.不可預測的命名規則存在著嚴重的安全威脅。 為了修復這個問題,許多方案被提出和實現。很長一段時間,udev都是根據Mac地址來分配永久了“ethX”名字。這導致了很多問題:這需要一個可寫的但是通常不允許的root目錄;由於系統的無邊界性,當root一個OS映象的時候可能會改變映象的配置資訊;許多系統的Mac地址並不是固定的。其中最大的問題是使用者空間和系統核心對裝置命名的衝突。 另一種解決方案就是“biosdevname”,該方案通過找到韌體中固定的拓撲資訊然後利用它們分配固定的介面。這個命名機制同/dev/*/by-path/ symlinks的方式很相似。大多數情況下,biosdevname 從底層的核心裝置定位機制中分離了出來。 最後,許多觀點遲滯根據使用者選擇的名字對介面重新命名,切斷同Mac和物理位置的聯絡。這是一個非常好的選擇,但是存在一個隱藏的問題就是使用者獲得了選擇和分配這些名字的權利。 我們相信由“biosdevname”機制已領的泛化機制是一個很好的選擇。基於韌體、拓撲和位置資訊分配固定的名字有一個巨大的優勢,名字是全自動地、可預測的,即使硬體新增或刪除也不影響。

V197新增了什麼

systemd 197為許多命名策略新增了許多本地化的支援到 systemd/udevd 並實現了一個類似於“biosdevname”的機制。五種網路介面的命名機制通過udev得到了支援。

/*
 * Two character prefixes based on the type of interface:
 *   en — Ethernet
 *   sl — serial line IP (slip)
 *   wl — wlan
 *   ww — wwan
 *
 * Type of names:
 *   b                             — BCMA bus core number
 *   c                             — CCW bus group name, without leading zeros [s390]
 *   o[d]                 — on-board device index number
 *   s[f][d]     — hotplug slot index number
 *   x                                — MAC address
 *   [P]ps[f][d]
 *                                         — PCI geographical location
 *   [P]ps[f][u][..][c][i]
 *                                         — USB port number chain
 */

上面一段是systemd原始碼的註釋,意思是:

en代表乙太網卡

p3s0代表PCI介面的物理位置為(3, 0), 其中橫座標代表bus,縱座標代表slot

那麼如何檢視我的機器上的網路卡名稱是什麼呢?可以通過以下命令來檢視:

ls /sys/class/net/
docker0 enp0s31f6 enx30b49e09b81e lo zt0

可以看到我的機器上有5個網路卡裝置。知道了網路卡名稱就可以配置網路IP了。這裡,我們用vim編輯網路配置檔案:

vim /etc/network/interfaces

如果你的網路是通過dhcp自動獲取IP,可以這樣編寫配置檔案:

auto lo # 代表127.0.0.1,即localhost
iface lo inet loopback

auto enp0s31f6  # 這是網路卡名稱
iface enp0s31f6 inet dhcp

如果你的網路有靜態IP,則這樣編寫配置檔案:

auto lo # 代表127.0.0.1,即localhost
iface lo inet loopback

auto enp0s31f6  # 這是網路卡名稱
iface enp0s31f6 inet static
    address 10.1.40.240
    gateway 10.1.40.254
    netmask 255.255.255.0

如果你的網路卡需要繫結多個IP,則增加的IP這樣寫:

auto enp0s31f6:0  # 這是虛擬出的網路卡名稱,加了:0,如果有更多IP,可以:1, :2, ...
iface enp0s31f6:0 inet static
    address 192.168.1.100
    gateway 192.168.1.1
    netmask 255.255.255.0

配置檔案編輯完成後,重啟一下網路,使配置生效:

sudo /etc/init.d/networking restart

# 或者用service命令:

sudo service networking restart
  1. 更改源列表

源列表(sources.list)是Ubuntu的包管理軟體apt-get獲取軟體的網址列表。該列表檔案位於: /etc/apt/sources.list。由於Ubuntu官方的源地址在國外,國內訪問速度很慢,所以,我們需要改成國內的映象伺服器,這樣下載安裝軟體包的時候就可以很快了。比如,可以使用阿里雲的映象:

​deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

除了阿里雲的映象,國內還有清華大學映象、中科大映象等等,可以根據自己的網路連線情況選擇映象源。

隨著 Ubuntu 16.04 LTS 的釋出,Ubuntu 的軟體包管理命令也發生了變化,新系統採用了 Debian 專案中所使用的 APT(Advanced Package Tool)來完成各種的不同的任務,APT 命令全面取代了我們之前在 Linux 軟體包管理基本操作入門中所介紹的 apt-get、apt-cache 等功能。下面是新的apt和舊的apt-get、apt-cache的不同:

Ubuntu 16.04 LTS 老版本Ubuntu
apt install 包名 替代 apt-get install 包名
apt remove 包名 替代 apt-get remove 包名
apt search 包名 替代 apt-cache search 包名
apt show 包名 替代 apt-cache show 包名
apt update 替代 apt-get update
apt upgrade 替代 apt-get upgrade
apt list –installed
替代 dpkg –get-selections | grep -v deinstall
替代 dpkg -l
apt list –upgradable apt-get -u upgrade –assume-no
apt edit-sources
替代 echo ‘new line of text’ | sudo tee -a /etc/apt/sources.list
替代 sudo nano /etc/apt/sources.list
apt autoremove 替代 apt-get autoremove
apt purge 包名 替代 apt-get purge 包名

  1. 永久更改ulimit

ulimit限制著程式開啟檔案的數目,預設情況下為1024,作為伺服器使用時,這個數字往往非常偏小。Ubuntu要修改這個限制,稍微有點複雜。以下步驟我們把限制數修改為:65536。

(1)修改系統限制

abc@ubuntu:~$ sudo vim /etc/sysctl.conf

檔案最後增加一行:

fs.file-max = 65536

(2)修改limits.conf

sudo vim /etc/security/limits.conf

增加:

* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
root soft nproc 65536
root hard nproc 65536
root soft nofile 65536
root hard nofile 65536

(3)修改common-session

sudo vim /etc/pam.d/common-session

增加:

session required pam_limits.so

(4)編輯/etc/profile,加入

ulimit -SHn 65536

重啟系統,再次通過命令ulimit -n 檢視,該數字已經變成65536了。

  1. 修改MySQL的儲存路徑datadir

Ubuntu通過apt install mysql-server 安裝的MySQL的預設路徑是 /var/lib/mysql。作為伺服器,我們往往把MySQL的資料盤單獨出來,而不是和系統盤混在一起。比如,我們希望MySQL放在/database 這個資料盤上,則需要以下配置:

0. 停止MySQL服務

sudo service mysql stop

1.複製原有資料(-a 選項保持mysql目錄的原始許可權)

cp -ra /var/lib/mysql/ /database/

2.修改MySQL配置檔案

vim /etc/mysql/my.cnf
datadir = /database/mysql

3.修改apparmor啟動檔案

vim /etc/apparmor.d/usr.sbin.mysqld
#把
/var/lib/mysql r
/var/lib/mysql/** rwk
#修改成
/database/mysql r
/database/mysql/** rwk,

4.重啟apparmor

/etc/init.d/apparmor restart

5. 啟動MySQL

sudo service mysql start

學習筆記來自於 [Python教程]
作者:猿人學

相關文章