---
# System prepended metadata

title: 一個機器以最省資源安裝CentOS作為server方式
tags: [系統技術]

---

###### tags: `系統技術`
# 一個機器以最省資源安裝CentOS作為server方式

* Motivation
每次安裝Linux server，每次都要從頭找資料安裝，想以筆記方式提供安裝的guide line，往後按此原則進行即可。

* 安裝Linux OS (CentOS為例)
新機器先以最小安裝方式安裝，避免安裝其他非必要軟體，減少系統負載。
1. 先download最新版CentOS iso檔
2. 以此iso檔做光碟安裝系統
3. 安裝系統選擇"最小安裝"安裝系統

* 調整網卡
最小安裝若是安裝過程中沒有調整網路設定，內定為dhcp方式取得IP，若該段網路沒有dhcp，就無法取得網路IP；並且，通常server都是使用固定IP，因此需要調整IP。
1. 首先關掉 NetworkManager (開始採用新的指令)：


```Linux Script
# systemctl disable NetworkManager.service
# systemctl stop NetworkManager.service
# chkconfig network on
# systemctl stop network
``` 

2. 接下來請編輯 /etc/sysconfig/network-scripts/ifcfg-你的網路卡編號(請利用 vim 編輯器，或是 gedit)，修改內容如下：
```
TYPE="Ethernet"
BOOTPROTO=none            #原本可能是dhcp，固定IP改為none
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="b06e0794-79ce-4d9d-9703-4eff3dc7e38d"
ONBOOT="yes"                #改為開機即啟動網卡
HWADDR=00:0C:29:5B:84:12
IPADDR0=192.168.1.40        #給於固定IP
GATEWAY=192.168.1.2         #設定Gateway
DNS1=8.8.8.8                #設定DNS

```

3. 啟動網路
```
# systemctl start network
```

4. 升級官方套件
```
# yum update -y
```

5. 安裝第三方伺服器EPEL套件庫
有些「特殊應用」沒有放在官方的套件庫中，此時就需要第三方的套件庫。
目前比較知名的有：EPEL套件庫。
安裝前先確認是否已經安裝
```
# yum list installed | grep epel
```
確定沒安裝後可以下指令安裝
```
yum install epel-release
```
或者
```
# yum install http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
```
或者
```
# yum --enablerepo=extras install epel-release
```

6. 安裝REMI repo (Option, for PHP+MySql)
REMI repository 是包含最新版 PHP 和 Mysql 的一個套件庫，由 Remi 提供維護，要安裝 PHP 和 Mysql 的同學請務必安裝！之後要更新 PHP 版本（或者降版本）將會非常方便。
安裝前先確認是否已經安裝
```
# yum list installed | grep remi
```
使用 wget+rpm安裝
```
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm -Uvh remi-release-7.rpm
```
開啟使用 REMI repo
安裝完後如果發現在找安裝套件時沒有出現 remi 的套件，那可能是沒有開啟使用 remi，請至/etc/yum.repos.d/（這是預設位置）找 remi.repo ，或是任何「remi」開頭的repo，開啟檔案並找到 [remi] 這個標籤底下的enabled：
```
[remi]
enabled=1
```
將 enabled 改為 1 表示啟用，接著儲存即可。

7. 安裝系統定時自動更新套件
設定系統定時自動更新，第一步確定伺服器是否安裝了自動執行指令的工具，跟著使用 yum 一個名叫 yum-cron 插件。
CentOS 7 使用數個軟件來自動執行指令：cron、anacron、at 和 batch，其中 cron 和 anacron 用來定期重複執行指令，At 和 batch 則用來在特定時間執行一次性的指令。
使用以下指令安裝 cron 和 anacron：
```
# yum -y install cronie
```
下一步就是安裝 yum-cron：
```
# yum -y install yum-cron
```
可以使用一個指令同時安裝 cronie 和 yum-cron，甚至單獨安裝 yum-cron 也可以，因為 yum 會自動檢測到 yum-cron 需要 cronie 然後自動替你安裝，上面分開兩個指令純粹令大家容易明白。

8. 設定系統定時自動更新配置檔案
完成cron安裝後系統多了數個檔案，比較重要的包括：
* /etc/cron.daily/0yum.cron
Anacron 每天執行這個檔案一次，它根據配置檔案 /etc/yum/yum-cron.conf 來更新軟件
* /etc/yum/yum-cron.conf
這是每天執行 yum-cron 的配置檔案，預設只會下載更新的軟件，並不安裝，用意是讓管理員檢視 yum-cron 的輸出，選取需要更新的軟件進行手動安裝。

修改配置檔案，讓 yum-cron 自動更新軟件，使用 vim  (或任何文本編輯器) 開啓 /etc/yum/yum-cron.conf，尋找：apply_updates，將等於後面的no改為yes
```
apply_updates = yes
```
並確認確認一下 update_messages = yes, download_updates = yes, apply_updates = yes

9. 新增一個非 root 的一般使用者
```
# adduser XXXX
```

10. 禁止 root 使用 ssh 登入
CentOS 7 預設容許任何帳號透過 ssh 登入，包括 root 和一般帳號，為了不讓 root 帳號被黑客暴力入侵，我們必須禁止 root 帳號的 ssh 功能，事實上 root 也沒有必要 ssh 登入伺服器，因為只要使用 su 或 sudo (當然需要輸入 root 的密碼) 普通帳號便可以擁有 root 的權限。
使用 vim (或任何文本編輯器) 開啓 /etc/ssh/sshd_config，尋找：
```
＃PermitRootLogin yes
```
把#去除，並把yes改為no，修改為：
```
PermitRootLogin no
```
重新啟動sshd
```
# systemctl restart sshd.service
```

11. 防火牆
過濾封包功能的 netfilter 已經內建在 CentOS 7 的內核，但是配置 netfilter 的界面程式 firewalld 卻未必有安裝，不論是否已經安裝，都可以執行下面的安裝指令：
```
yum -y install firewalld
```
跟著查看一下防火牆現在開啟了哪些服務和端口：
```
firewall-cmd --list-all
```
在services:後有ssh與dhcpv6-client，表示防火牆只開啟了 DHCP 客戶端和 ssh 兩個服務的通訊端口。