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

- 網絡的配置
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
- 更改源清單
源清單(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 包名
- 永久更改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了。
- 修改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教程]
作者:猿人學