1. 程式人生 > 程式設計 >伺服器必備基礎配置(Ubuntu)

伺服器必備基礎配置(Ubuntu)

本文目的

  • 記錄真實環境中伺服器必須配置;

配置VPN

推薦使用L2TPIPSec方式建立VPN,成熟的標準方案,擁有較好的安全性。

  • L2TP:單臺管理終端或移動終端;
  • IPSec:多臺固定的管理終端一般在入口路由器上配置IPSec實現互聯。

IPMI管理口配置

當前市場上的伺服器一般都支援管理口來對伺服器進行管理,利用管理口功能,我們可以遠端實現系統的開關機、重啟、配置更改、安裝系統等,基本能使我們不再需要申請進入電信機房來解決各種問題。 配置管理口時需要注意以下問題:

  1. 管理口配置為靜態IP
  2. 去掉預設帳戶,使用獨有的使用者名稱和密碼

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

  1. mode=0(balance-rr)(平衡掄迴圈策略)
  2. mode=1(active-backup)(主-備份策略)
  3. mode=2(balance-xor)(平衡策略)
  4. mode=3(broadcast)(廣播策略)
  5. mode=4(802.3ad)(IEEE 802.3ad 動態連結聚合)
  6. mode=5(balance-tlb)(介面卡傳輸負載均衡)
  7. 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擴容

  1. 檢視磁碟裝置:ls /dev/sd*,新新增三塊磁碟為例 顯示:/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc /dev/sdd 其中sdb,sdc,sdd為三個新磁碟
  2. 磁碟上建立物理分割槽:fdisk /dev/sdb p 檢視分割槽表,使用 gpt 分割槽表(Disklabel type),gpt支援大磁碟 n 建立分割槽,都使用預設值 t 更改分割槽型別,使用 Linux LVM w 儲存更改並退出 其他磁碟類似
  3. 建立物理卷:pvcreate /dev/sdd1pvcreate /dev/sd[b,c,d]1直接建立所有物理卷
  4. 將物理卷新增到卷組,使用vgdisplay檢視卷組 vgextend host-vg /dev/sdb1vgextend host-vg /dev/sdb1 /dev/sdc1 /dev/sdd1
  5. 對邏輯卷擴容:lvextend -l +100%FREE /dev/host-vg/root
  6. 讓系統重新識別:resize2fs /dev/host-vg/root

11. Ubuntu掛載U盤

  1. 插入U盤,之後需要設定掛載點。
  2. 首先執行命令fdisk -l檢視磁碟資訊,由資訊可得其路徑“/dev/sdb1”,磁碟格式為fat32.
  3. 執行掛載命令:mount -t vfat /dev/sdb1 /media
  4. 執行命令cd media進入掛載U盤的主目錄。
  5. 執行ls命令可以檢視目錄下的檔案。
新增新磁碟並掛載到指定目錄

建立分割槽 sudo fdisk /dev/sda 格式化 sudo mkfs.ext4 /dev/sda1 掛載到對應目錄 sudo mount /dev/sda1 /mnt

12. 安裝docker

  1. DaoCloud快速安裝docker:get.daocloud.io/#install-do…

  2. docker命令不再需要sudo

# 新增當前使用者到docker組
sudo usermod -aG docker $USER
#切換當前會話到新 group 或者重啟 X 會話
newgrp - docker 或 pkill X
複製程式碼
  1. 解決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,就可以用 ifconfigip a 命令檢視是否沒有 IPv6 地址了

15. 安裝Linux-dash系統監視工具

Linux-dash 是一個低開銷 Linux 伺服器監控系統,基於 Web 的監控介面。

  1. 安裝apache2: apt-get install apache2
  2. 安裝php5: apt-get install php5
  3. 修改apache2的埠:vim /etc/apache2/ports.conf
  4. 下載Linux-dash: cd /var/www/html/ git clone https://github.com/afaqurk/linux-dash.git
  5. 重啟apache2:sudo service apache2 restart
  6. 通過瀏覽器登陸監視頁面: http://ip:port/linux-dash