Ubuntu 做爲一個Linux的發行版,在桌面環境的易用性上作了不少改善,對推進Linux的推廣作了很大的貢獻。同時,它做爲服務器的操做系統也愈來愈多的被使用。固然,服務器端可能更多的人在使用Redhat、CentOS等系統。Linux的發行版本不少,基本命令都差很少,可是一些系統配置上,也存在着各類各樣的差別。筆者結合Ubuntu的多年使用經驗,總結一下Ubuntu系統的一些配置要點。mysql
Ubuntu在安裝過程當中會自動尋找網絡鏈接並配置網絡IP等,可是好多狀況下,安裝系統時不須要或不方便配置網絡。那麼,等咱們安裝完系統,就要先配好網絡才能繼續安裝、配置其它軟件。Ubuntu的網卡名稱在幾年前(大約14.04以前的版本)都是這樣命名的:
有線網卡爲eth0(多個網卡序號增大:eth1, eth2…),無線網卡是wlan0。
可是到了16.04的版本,網卡的命名作了很是大的改動,名稱從eth0變爲en開頭的,爲何更名呢?ios
可預測的網絡接口命名sql
自從 v197 systemd/udev 開始,系統能夠爲本地的Ethernet、WLAN和WWAN接口自動地分配可預測的、穩定的網絡接口名稱。該規範脫離了傳統的命名機制(eth0,eth1,wlan0等),可是修復了許多問題。docker
緣由ubuntu
在傳統的網絡接口命名規則下,是由內核簡單地從eth0開始爲可被驅動探索到的設備分配名字(eht0,eth1…)。因爲這些驅動不可以被如今技術所預測,意味着多個網絡接口均可以被分配名爲「eth0」、「eth1」這樣的名字,這種方式存在一種隱患,就是一種接口多是以「eth0」啓動,可是結束時就變成了「eth1」.不可預測的命名規則存在着嚴重的安全威脅。 爲了修復這個問題,許多方案被提出和實現。很長一段時間,udev都是根據Mac地址來分配永久了「ethX」名字。這致使了不少問題:這須要一個可寫的可是一般不容許的root目錄;因爲系統的無邊界性,當root一個OS鏡像的時候可能會改變鏡像的配置信息;許多系統的Mac地址並非固定的。其中最大的問題是用戶空間和系統內核對設備命名的衝突。 另外一種解決方案就是「biosdevname」,該方案經過找到固件中固定的拓撲信息而後利用它們分配固定的接口。這個命名機制同/dev/*/by-path/ symlinks的方式很類似。大多數狀況下,biosdevname 從底層的內核設備定位機制中分離了出來。 最後,許多觀點遲滯根據用戶選擇的名字對接口從新命名,切斷同Mac和物理位置的聯繫。這是一個很是好的選擇,可是存在一個隱藏的問題就是用戶得到了選擇和分配這些名字的權利。 咱們相信由「biosdevname」機制已領的泛化機制是一個很好的選擇。基於固件、拓撲和位置信息分配固定的名字有一個巨大的優點,名字是全自動地、可預測的,即便硬件添加或刪除也不影響。vim
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 |
|
apt list –upgradable | apt-get -u upgrade –assume-no |
apt edit-sources |
|
apt autoremove | 替代 apt-get autoremove |
apt purge 包名 | 替代 apt-get purge 包名 |
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了。
4. 修改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