伺服器必備基礎配置(Ubuntu)
本文目的
- 記錄真實環境中伺服器必須配置;
配置VPN
推薦使用L2TP
或IPSec
方式建立VPN,成熟的標準方案,擁有較好的安全性。
-
L2TP
:單臺管理終端或移動終端; -
IPSec
:多臺固定的管理終端一般在入口路由器上配置IPSec實現互聯。
IPMI管理口配置
當前市場上的伺服器一般都支援管理口來對伺服器進行管理,利用管理口功能,我們可以遠端實現系統的開關機、重啟、配置更改、安裝系統等,基本能使我們不再需要申請進入電信機房來解決各種問題。 配置管理口時需要注意以下問題:
- 管理口配置為
靜態IP
- 去掉預設帳戶,使用獨有的使用者名稱和密碼
Ubuntu基本配置
1. 更新源和系統軟體
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list # 新增源,推薦使用國內阿里/網易相應的源
sudo apt-get update 或 sudo apt update
sudo apt-get upgrade 或 sudo apt upgrade
複製程式碼
2. 網路及DNS配置
Ubuntu 16.04 及之前版本
配置靜態IP sudo vim /etc/network/interface
# This file describes the network interfaces available on your system
# and how to activate them. For more information,see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
複製程式碼
配置本機hosts sudo vim /etc/hosts
註釋這一行:127.0.1.1 ubuntu
配置 DNS 伺服器地址 sudo vim /etc/resolvconf/resolv.conf.d/base
新增:nameserver 192.168.1.114
Ubuntu 18.04 採用 netplan
作為網路配置管理,與16.04及之前的版本區別很大
去掉檔案 /etc/network/interfaces
中的所有配置
修改配置檔案:sudo vim /etc/netplan/50-cloud-init.yaml
:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities,write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 192.168.1.114
search:
- corp.xxx.com
version: 2
複製程式碼
然後執行命令使配置立即生效:sudo netplan apply
附:如需在本地配置專用 DNS 伺服器,可參考 內網配置DHCP+DNS(dnsmasq)
3. SSH安全配置
機器只允許內部IP地址SSH進去,只允許指定使用者進行SSH,其他使用者都不允許SSH
/etc/hosts.allow新增 sshd:192.168.2.,192.168.3.10:allow
/etc/hosts.deny新增 sshd : ALL
/etc/ssh/sshd_config
禁用root登陸,修改:PermitRootLogin no
新增允許登陸的使用者:AllowUsers username
username為允許登陸的使用者名稱
hosts.allow,hosts.deny修改後立即生效
sshd_config修改後需要重啟ssh服務:sudo service ssh restart
,重啟不會斷開當前連線
4. Ubuntu開機啟動
Ubuntu需要開機啟動的命令新增到/etc/rc.local
中
5. 配置NTP時間伺服器
自動與Ubuntu時間伺服器同步,並且本機可以作為時間伺服器使用,需要等待幾分鐘後才可以同步到最新:
$ sudo apt-get install ntp
安裝之後ntp
自動啟動
6. 優化記憶體使用(記憶體足夠時推薦禁用交換分割槽)
swappiness
值的大小決定如何使用swap分割槽,系統預設為60
,也就是說,你的記憶體在使用到100-60=40%的時候,就開始出現有交換分割槽的使用。
cat /proc/sys/vm/swappiness # 檢視swapness:
sysctl vm.swappiness=5 # 這只是臨時調整的方法,重啟後會回到預設設定的
# 要想永久調整的話,需要將/etc/sysctl.conf修改:
sudo vim /etc/sysctl.conf
新增:vm.swappiness=5
執行:sudo sysctl -p 立即生效
複製程式碼
7. 禁用交換分割槽
命令:swapon -s
檢視交換分割槽
通過命令: swapoff -a
禁用交換分割槽。將該命令命令新增到"/etc/rc.local"中,開機啟動時就禁用交換分割槽。
要永久禁掉swap分割槽,開啟檔案/etc/fstab
註釋掉swap那一行
建議:在所有機器上禁用交換分割槽
8. 多網路卡bond配置
現在伺服器一般都不止一個網口,通過bond將多個網口合併成一個邏輯網口,能夠充分利用多個網口的頻寬。 bond的七種模式,bond=0~6
-
mode=0
(balance-rr)(平衡掄迴圈策略) -
mode=1
(active-backup)(主-備份策略) -
mode=2
(balance-xor)(平衡策略) -
mode=3
(broadcast)(廣播策略) -
mode=4
(802.3ad)(IEEE 802.3ad 動態連結聚合) -
mode=5
(balance-tlb)(介面卡傳輸負載均衡) -
mode=6
(balance-alb)(介面卡適應性負載均衡)
常用的有三種
mode=0
:平衡負載模式,有自動備援,但需要”Switch”支援及設定。
mode=1
:自動備援模式,其中一條線若斷線,其他線路將會自動備援。
mode=6
:平衡負載模式,有自動備援,不必”Switch”支援及設定。
檢視是否支援bond: # modinfo bonding |more
(1) Ubuntu 14.04 bond 配置
安裝 $ sudo apt-get install ifenslave
修改檔案:sudo vim /etc/modules
新增:bonding mode=6 miimon=100
修改檔案:sudo vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information,see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1
複製程式碼
(2) Ubuntu 16.04配置
與14.04基本相同,唯一的區別在/etc/network/interfaces
首先還是安裝:$ sudo apt-get install ifenslave
修改檔案:sudo vim /etc/modules
新增:bonding mode=6 miimon=100
修改檔案:sudo vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information,see interfaces(5).
#source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto bond0
iface bond0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves eth0 eth1
bond-lacp-rate 1
bond-mode 6
bond-miimon 100
複製程式碼
(3) Ubuntu 18.04配置
Ubuntu 18.04 採用netplan
作為網路配置管理,與16.04及之前的版本區別很大
去掉檔案 /etc/network/interfaces
中的所有配置
修改配置檔案:sudo vim /etc/netplan/50-cloud-init.yaml
:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities,write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
bonds:
bond0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
interfaces:
- eth0
- eth1
nameservers:
addresses:
- 192.168.1.114
search:
- corp.xxx.com
parameters:
mode: balance-alb
ethernets:
eth0: {}
eth1: {}
version: 2
複製程式碼
然後執行命令使配置立即生效:sudo netplan apply
9. keepalived配置虛擬IP
一般服務推薦使用虛擬IP,方便配置備用伺服器
安裝:sudo apt-get install keepalived
編輯配置檔案:sudo vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface em2
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 51
}
virtual_ipaddress {
192.168.2.4/24
192.168.2.5/24
}
}
複製程式碼
其中:priority
表示優先順序,高優先順序的伺服器作為MASTER
,低優先順序的作為SLAVE
檢視虛擬IP:ip addr
10. Ubuntu LVM擴容
- 檢視磁碟裝置:
ls /dev/sd*
,新新增三塊磁碟為例 顯示:/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc /dev/sdd 其中sdb,sdc,sdd為三個新磁碟 - 磁碟上建立物理分割槽:
fdisk /dev/sdb
p 檢視分割槽表,使用 gpt 分割槽表(Disklabel type),gpt支援大磁碟 n 建立分割槽,都使用預設值 t 更改分割槽型別,使用 Linux LVM w 儲存更改並退出 其他磁碟類似 - 建立物理卷:
pvcreate /dev/sdd1
或pvcreate /dev/sd[b,c,d]1
直接建立所有物理卷 - 將物理卷新增到卷組,使用vgdisplay檢視卷組
vgextend host-vg /dev/sdb1
或vgextend host-vg /dev/sdb1 /dev/sdc1 /dev/sdd1
- 對邏輯卷擴容:
lvextend -l +100%FREE /dev/host-vg/root
- 讓系統重新識別:
resize2fs /dev/host-vg/root
11. Ubuntu掛載U盤
- 插入U盤,之後需要設定掛載點。
- 首先執行命令
fdisk -l
檢視磁碟資訊,由資訊可得其路徑“/dev/sdb1”,磁碟格式為fat32. - 執行掛載命令:
mount -t vfat /dev/sdb1 /media
- 執行命令
cd media
進入掛載U盤的主目錄。 - 執行
ls
命令可以檢視目錄下的檔案。
新增新磁碟並掛載到指定目錄
建立分割槽 sudo fdisk /dev/sda
格式化 sudo mkfs.ext4 /dev/sda1
掛載到對應目錄 sudo mount /dev/sda1 /mnt
12. 安裝docker
-
DaoCloud快速安裝docker:get.daocloud.io/#install-do…
-
讓
docker
命令不再需要sudo
# 新增當前使用者到docker組
sudo usermod -aG docker $USER
#切換當前會話到新 group 或者重啟 X 會話
newgrp - docker 或 pkill X
複製程式碼
- 解決
docker pull
預設使用https問題
# Ubuntu 14.04
sudo vim /etc/default/docker,新增
DOCKER_OPTS="--insecure-registry 0.0.0.0/0"
# Ubuntu 16.04
sudo vim /etc/docker/daemon.json,新增
{"insecure-registries":["0.0.0.0/0"]}
# 之後重啟docker服務
複製程式碼
13. 配置本地 docker Hub
docker run -d --restart=always --name myDockerHub \
-p 5000:5000 \
-v /home/${USER}/docker-registry:/opt/docker-image \
-e SQLALCHEMY_INDEX_DATABASE=sqlite:////opt/docker-image/docker-registry.db \
-e STORAGE_PATH=/opt/docker-image/data registry:0.9.0
echo -e "\033[32;49;1mMy-Docker-Hub started......\033[39;49;0m"
複製程式碼
14. 禁用IPv6
修改 /etc/sysctl.conf
檔案,新增:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
複製程式碼
然後執行:sudo sysctl -p
,就可以用 ifconfig
或 ip a
命令檢視是否沒有 IPv6 地址了
15. 安裝Linux-dash系統監視工具
Linux-dash
是一個低開銷 Linux 伺服器監控系統,基於 Web 的監控介面。
- 安裝apache2:
apt-get install apache2
- 安裝php5:
apt-get install php5
- 修改apache2的埠:
vim /etc/apache2/ports.conf
- 下載Linux-dash:
cd /var/www/html/
git clone https://github.com/afaqurk/linux-dash.git
- 重啟apache2:
sudo service apache2 restart
- 通過瀏覽器登陸監視頁面:
http://ip:port/linux-dash