動作

CentOS7

出自 Itsmw

CentOS 7簡介

 CentOS 是由社群人仕針對 Red Hat 企業版 Linux ,取其自由的部份重新打包的一套 Linux 作業系統,可視為 Red Hat Enterprise Linux 的自由軟體版。由於 Red Hat 企業版 Linux 雖然是基於 Linux 開發而成,但它早已轉型成付費軟體,加上它加上許多非自由的工具或驅動程式。因此才有了 CentOS 的誕生。
對筆者而言 CentOS Linux 吸引我的因素有以下幾點,大家參考看看:

  1. 筆者是自從 Red Hat 9 開始深入接觸 Linux 作業系統,對 Red Hat 的產品有割捨不掉的情感
  2. 有大廠的開發支援,系統穩定度高
  3. 與其他 Linux 套件比起來,CentOS 提供了 10 年的支援期程,比起其他 Linux 來說實在很吸引人



下載與安裝

下載



安裝

安裝前說明

 筆者此次安裝是依以下模擬情境進行,若有不同需求,請自行變通。

  • 以 ownCloud 私有雲端硬碟為主要使用目的
    • 主系統以 ext4 固定磁區,安裝系統
    • 另外以 LVM 磁區,建立起可伸縮的彈性空間供 ownCloud 儲存區用
  • 伺服器介紹
    • Apache2 2.4 + MariaDB + PHP5
    • SAMBA/FTP Server:兩種不同的服務,皆取用個人資料夾及共用磁區之設定方法 



CentOS7安裝

圖1
圖2
圖3
圖4
圖5
圖6
圖7
圖8
圖9
圖10
圖11
圖12
圖13
圖14
圖15
圖16
圖17
圖18
圖19
圖20
圖21
圖22
圖23
圖24
圖25
圖26


安裝後調整暨注意事項

  1. 先聲明,本文所謂的調整是依筆者個人需求所撰寫,可能無法滿足大多數人的需求。
  2. 系統安裝時,若是依本文之圖片介紹,將會建立一組系統管理員帳戶(可 sudo)。

注意

  • 本文大多數套件之安裝與設定皆是採用指令的方式完成,這些動作皆是在 root 的身份下執行。因此若下文出現「 root@主機名~#」,請先依以下步驟執行
  1. 打開終端機
    • 「應用程式」/「公用程式」/終端機
    • 或是把終端機加到桌面捷徑
  2. 切換成 root 身份
    [user@ownc:~]$ sudo -i



輸入法

  • 官方預設輸入法管理程式: ibus
    由於筆者只需注音及倉頡輸入法,故本文將沿用此一設定不做更動。
  • 新增倉頡輸入法
    • [user@ownc:~]$ sudo -i
    • [root@ownc:~]# yum install ibus-table-chinese-cangjie



社群維運套件庫

加上此一來源,可以補官方套件之不足。



VritualBox下安裝變更解析度



新增桌面程式捷徑

  1. 開啟桌面上的「home」圖示
  2. 左側「電腦」--> usr --> share --> applications
  3. 對要放在桌面的程式--> 右鍵--> 複製到-->桌面
Centos7 desktop link.png



預設為 vim 編輯器加上行號

  • 為每個常用的 user (含 root )底下加一個檔案:「 .vimrc」,內容如下。
set number



安裝螢幕擷工具shutter

  1. 依下文介紹,先 nux-dextop 套件庫加入
    http://ask.xmodulo.com/enable-nux-dextop-repository-centos-rhel.html
  2. 安裝
    [root@ownc:~]# yum install shutter



基礎篇

網路設定

  1. 螢幕右上角
    Centos7 nicset01.png

  2. 「有線」/「加入設定組合」
    Centos7 nicset02.png
  3. 再把原本系統安裝時所設定的「組合」刪除
  4. 重新啟動「有線」網卡:先 off 再 on



軟體套件管理暨更新作業

打指令

CentOS 7 的套件管理延續之前做法,所以這裡只做一下簡述

  • 搜尋
    [root@ownc:~]# yum search shutter
  • 安裝
    [root@ownc:~]# yum install shutter
  • 更新
    [root@ownc:~]# yum update
  • 裝了些什麼套件
    [root@ownc:~]# rpm -qa
  • 有沒有安裝 shutter
    [root@ownc:~]# rpm -qa|grep shutter
  • shutter 套件裝了什麼檔案到電腦裡
    [root@ownc:~]# rpm -ql shutter
  • /usr/bin/shutter這個檔案是由什麼套件裝入的
    [root@ownc:~]# rpm -qf /usr/bin/shutter



圖形化工具

  • 應用程式/系統工具/軟體
CentOS7 軟體01.png


CentOS7 軟體02.png



主機名稱

主機名稱變更

用 sudo 切換成 root 身份,手動修改 /etc/hostname 及 /etc/hosts 再重開機即可。

  • hostname 檔案舉例
ownctest.dces.tn.edu.tw
  • hosts檔案舉例
127.0.0.1 ownctest ownctest.dces.tn.edu.tw localhost4 localhost4.localdomain4
::1 ownctest ownctest.dces.tn.edu.tw localhost6 localhost6.localdomain6



DNS上也要異動

臺南國中小各校DNS服務,已集中托管,若本台主機要「名實相符」,除了主機上的資料要變更外,也要記得到托管介面加入一個「ownctest IN A 120.116.13.198」記錄。

帳號管理

這部份鳥哥的文件都已詳細到不能了,就讓我就省了吧!



伺服器篇

服務之啟動與關閉

由於 CentOS 7 已改用 systemd 做為服務啟動管理程式,與之前的版本會有比較大的差異,請特別注意一下。

手動

  • 啟動
    [root@ownc:~]# systemctl start sshd
  • 關閉
    [root@ownc:~]# systemctl stop sshd
  • 重啟
    [root@ownc:~]# systemctl restart sshd
  • 重新載入設定值
    [root@ownc:~]# systemctl reload sshd
  • 檢查服務狀況
    [root@ownc:~]# systemctl -l status sshd



成為下次重開機預設狀態

  • 下次開機啟動服務
    [root@ownc:~]# systemctl enable sshd
  • 下次開機中止服務
    [root@ownc:~]# systemctl disable sshd



服務是否啟動檢查

  • [root@ownc:~]# netstat -nltup
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2341/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1205/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2996/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2633/master
tcp6 0 0 :::22  :::* LISTEN 1205/sshd

 紅色字代表通訊埠 tcp 22 被 sshd 占用中,意思就是說 ssh server 正在啟動中。

若掌控不了SELinux那就關了吧

SELinux是一組安全性相當高的資安套件,它可以完全阻擋不正常的檔案寫入行為。但隨著安全性的提高,代表提高了設定方式的複雜度,因此本文還是以「關閉」它為前提來介紹各伺服器的設定使用。

  • 修改 /etc/selinux/config
    • 編輯 /etc/selinux/config
      [root@ownc:~]# vi /etc/selinux/config
    • 把預設值改成 disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

  • 重新開機



若掌控不了內建防火牆套件那就關了吧

  • 關閉 fiewalld 服務
    • [root@ownc:~]# systemctl stop firewalld
    • [root@ownc:~]# systemctl disable firewalld
  • 自行把規則列寫入 rc.local 做法
    1. 賦予 /etc/rc.d/rc.local 執行權
      [root@ownc:~]# chmod u+x /etc/rc.d/rc.local
    2. 修改 /etc/rc.d/rc.local 檔,先把以下規則列寫入檔尾,如下所示,後續有需求再慢慢加
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

# 本 Script 參考自 OLS3 (ols3@lxer.idv.tw)
# 執行 systemctl start rc-local 套用新規列
#

IPTABLES="/sbin/iptables"
IP6TABLES="/sbin/ip6tables"

###-----------------------------------------------------###
# 清除先前的設定
###-----------------------------------------------------###
echo "Flush fiter table ......"
echo

# Flush filter
$IPTABLES -F
$IPTABLES -X
$IP6TABLES -F

echo "Flush mangle table ......"
echo
# Flush mangle
$IPTABLES -F -t mangle
$IPTABLES -t mangle -X


echo "Flush nat table ......"
echo
# Flush nat
$IPTABLES -F -t nat
$IPTABLES -t nat -X

###-----------------------------------------------------###
# 設定 filter table 的預設政策
###-----------------------------------------------------###
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

$IPTABLES -A INPUT -p tcp -s 120.116.12.0/23 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76/30 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP
  • 啟用 rc.local
    • [root@ownc:~]# systemctl start rc-local
  • 觀察防火牆規則列
    [root@ownc:~]# iptables -nL
  • 重新套用新修改的防火牆規則列
    [root@ownc:~]# systemctl restart rc-local



SSH遠端終端機連線

  • 若是依本文安裝範例,以「用來進行開發和建立工作站」的預設安裝模式,應已安裝 openssh 服務。
  • 檢查是否已有 openssh 工具
    [root@ownc:~]# rpm -qa |grep ssh
    應該要有以下套件
libssh2-1.4.3-8.el7.x86_64
openssh-clients-6.6.1p1-12.el7_1.x86_64
openssh-6.6.1p1-12.el7_1.x86_64
openssh-server-6.6.1p1-12.el7_1.x86_64



網頁資料庫篇

 本篇要介紹的網頁資料庫共含三大套件:Apache2, MariaDB, PHP,沒錯喔,不是 MySQL 而是 MariaDB ,它們兩者間的變化,諸位可以問一下 Google 大神,筆者就不在此地廢言了。

三套安裝一氣呵成

  • [root@ownc:~]# yum install httpd mariadb-server mariadb php php-mysql php-gd php-ldap php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-pecl-apcu php-cli phpMyAdmin
  • 手動啟用服務
    • MariaDB
      [root@ownc:~]# systemctl start mariadb
    • Apache2+PHP
      [root@ownc:~]# systemctl start httpd
  • 打開防火牆之 port 80 及 port 443 之通行權
    建議前文指示用手動設定的規則列,預設應沒阻擋 Port 80 及 443



Apache2設定調整

  • 設定檔位置: /etc/httpd
    • 主設定檔: /etc/httpd/conf/httpd.conf
    • 個別特定設定: /etc/httpd/conf.d
    • 模組載入設定: /etc/httpd/conf.modules.d
  • 預設網頁放置目錄: /var/www/html
  • 修改 phpmyadmin 之連線範圍,預設只有本機才可連線,在 /etc/httpd/conf.d/phpMyAdmin.conf加上學校網段,下文中紅字部分

<IfModule mod_authz_core.c>
  # Apache 2.4
  <RequireAny>
    Require ip 127.0.0.1 120.116.12.0/23
    Require ip ::1 2001:288:75a6::/48
  </RequireAny>
</IfModule>

  • 重新啟動 apache2
    [root@ownc:~]# systemctl restart httpd



MariaDB設定調整

  • 剛安裝完畢,必須設定 mariadb root 密碼
    [root@ownc:~]# mysql_secure_installation
Enter current password for root (enter for none):直接按 Enter

Set root password? [Y/n]
New password: 輸入密碼
Re-enter new password: 輸入密碼
Remove anonymous users? [Y/n] 直接按 Enter
Disallow root login remotely? [Y/n]直接按 Enter
Remove test database and access to it? [Y/n]直接按 Enter
Reload privilege tables now? [Y/n]直接按 Enter

  • 資料庫位置
    /var/lib/mysql



PHP設定調整

  • 主設定檔:/etc/php.ini
  • 把 php 的錯誤訊息( log ),獨立輸出,以利判讀,修改 /etc/php.ini 找到 err_report 的相關設定,改成

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
error_log = /var/log/php/error.log

  • 建立 /var/log/php 資料夾
    [root@ownc:~]# mkdir /var/log/php
  • 修改網頁上傳檔案之大小,修改 /etc/php.ini 內這三個參數

;記憶體限制
memory_limit = 128M
;PHP 表單 POST 限制
post_max_size = 72M
;檔案大小限制
upload_max_filesize = 64M

  • 修改完畢,重新啟動 apache2
    [root@ownc:~]# systemctl restart httpd



建立自我簽證的 https 通道



設定LAMP可隨開機啟用

安裝完 LAMP ,預設不會隨開機啟動,必須手動修改

  • root@[ownc:~]# systemctl enable httpd
  • root@[ownc:~]# systemctl enable mariadb



FTP

安裝暨設定

  • 安裝
    [root@ownc:~]# yum install vsftpd
  • 設定,修改 /etc/vsftpd/vsftpd.conf,請檢查以下參數是否一致
#情況一:在IPv4監聽
listen=YES
#listen_ipv6=YES

#***--------------------------------------------
# 情況二:同時在 v4 及 v6 監聽, 網卡務必要有 ipv6 address
#listen=YES
listen_ipv6=YES

#不允許anonymous公共下載區
anonymous_enable=NO

#列出資料夾內檔案詳細列表
dirmessage_enable=YES

#一律用被動式傳輸
connect_from_port_20=NO
pasv_enable=YES

#啟用本機 User
local_enable=YES
write_enable=YES
local_umask=022
#把 /home/user 轉成根目錄,並禁止一般使用者切換到其他資料夾
chroot_local_user=YES
# allow_writeable_chroot=YES
#本機使用速度限制:0→不設限;n→計量單位為KBytes/sec
local_max_rate=0
#



SAMBA網芳

 本文的設定是使 samba client 只能連到家目錄,並在家目錄設一個所有人皆可讀取的「共用資料夾」,它的產生是從資料夾權限著手,而不是去設 /var/share/ 之類的作法。在這樣的處理之下 FTP 及 SAMBA 皆會指到家目錄,看到相同的內容。

安裝設定

  • 安裝
    [root@ownc:~]# yum install samba samba-common
  • 設定:修改 /etc/samba/smb.conf
# 在 [global] 下新增以下三行中文編碼設定
[global]
dos charset = cp950
unix charset = UTF8

# 校內使用,不需去查DNS以加快連線速度,把 dns proxy = yes 改成 no
;       dns proxy = yes
       dns proxy = no

       load printers = no
# 把印表機相關設定拿掉,把下面幾行用「;」號註解掉
;[printers]
;       comment = All Printers
;       path = /var/spool/samba
;       browseable = no
;       guest ok = no
;       writable = no
;       printable = yes



Samba帳號管理

  • 使用 pdbedit 管理帳號
    1. 此帳號在 Linux 上必須是存在的, 否則請先用 adduser 新增
    2. 新增帳號
      [root@ownc:~]# pdbedit -au username
    3. 刪除帳號
      [root@ownc:~]# pdbedit -xu username
    4. 列出帳號
      [root@ownc:~]# pdbedit -L
  • 使用 smbpasswd 指令修改密碼
    • 使用時機:
      1. Samba server初建時已大量自動匯入, 但密碼因不明原因無法登入時
      2. 曾用 pdbedit新增過,但有修改密碼的需求時
    • 使用方法
      [root@ownc:~]# smbpasswd username



資安暨服務管理

  • 資安:設定防火牆規則列,依以下原則,加到本文所介紹的防火牆設定區 /etc/rc.d/rc.local ,以限制外面網段存取
$IPTABLES -A INPUT -p tcp -s 120.116.12.0/23 --dport 139 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 120.116.12.0/23 --dport 445 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 120.116.12.0/23 --dport 137 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 120.116.12.0/23 --dport 138 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 139 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 445 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 127.0.0.1 --dport 137 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 127.0.0.1 --dport 138 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 139 -j DROP
$IPTABLES -A INPUT -p tcp --dport 445 -j DROP
$IPTABLES -A INPUT -p udp --dport 137 -j DROP
$IPTABLES -A INPUT -p udp --dport 138 -j DROP
  • 共用資料夾設定文件
    http://myip.tw/itsmw/index.php?title=Ob2d_Vsftp
  • 手動啟用服務
    [root@ownc:~]# systemctl start smb
    [root@ownc:~]# systemctl start nmb
  • 開機啟用服務
    [root@ownc:~]# systemctl enable smb
    [root@ownc:~]# systemctl enable nmb



ownCloud雲端硬碟

 要安裝 ownCloud 前必須要確定已裝妥 Apache2 + MariaDB + PHP 並設好 https 的服務能力。

套件安裝

  • 安裝
    • 加入 ownCloud 套件庫
      [root@ownc:~]# cd /etc/yum.repos.d/
      [root@ownc:~]# wget http://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-7/isv:ownCloud:community.repo
    • 查一下是否有 owncloud 套件
      [root@ownc:~]# yum search owncloud
    • 安裝
      [root@ownc:~]# yum install owncloud



後續設定

  • 修改資料夾權限,把下面 script 存檔並執行
#!/bin/bash
ocpath='/var/www/html/owncloud'
htuser='apache'
htgroup='apache'

find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

chown -R root:${htuser} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/

chown root:${htuser} ${ocpath}/.htaccess
chown root:${htuser} ${ocpath}/data/.htaccess

chmod 0644 ${ocpath}/.htaccess
chmod 0644 ${ocpath}/data/.htaccess



  • 連至 owncloud 網頁進行後續設定
    • https://120.116.13.198/owncloud
Centos7-ownCloud01.png



建立可廷展的LVM磁區供 ownCloud 存放資料

 LVM: Logical Volume Manager 中文可稱之為邏輯卷管理,這功能可以類似 RAID 一樣把多棵磁區合併成一個。具有特色的是,它可以在 online 的情況下一直加入新磁區,擴充磁碟空間。可以增加,當然也可以減少,但其減低容量的風險太高,所以本文並不介紹。

  • LVM 專文,請參考
    http://wiki.utshop.tw/doku.php/linux:lvm
  • 建立新LVM碟區
    • 先用 fdisk 把空白磁碟規劃成多組磁區,本文以兩組5G磁區為例,分割區類型為:「Linux LVM」,在 fdisk 要 tag 為 8e
      註:本文把新磁區放在 extend 區,所以新的磁區為 sda5,sda6,sda7,sda8
    • 重新開機
    • 建立實體磁區 pvcreate
      [root@ownc:~]# pvcreate /dev/sda{5,6}
    • 建立 Volume Group
      [root@ownc:~]# vgcreate -s 64 OwnCGroup /dev/sda{5,6}
      註:由於一個LV最高只能含有 65536個PE,所以我們若有大空間的需求,在建立 VG 時必須指定 PE 大小,本文以 64MB 為例,理論上最高可建立一個 64x66536 = 4T 大小的空間。
    • 查一下 OwnCGroup 有多少 PE
      [root@ownc:~]# vgdisplay OwnCGroup
      VG Size 9.88 GiB
      PE Size 64.00 MiB
      Total PE 158
    • 建立 Logic Volume
      [root@ownc:~]# lvcreate -l xxxx -n lv_data OwnCGroup
      註:「xxxx」內填入 vgdisplay 查到的數量,依本例是 158
    • 格式化 Logic Volume
      [root@ownc:~]# mkfs.ext4 /dev/mapper/OwnCGroup-lv_data
    • 建立一個資料夾並把 logic volume 掛入
      [root@ownc:~]# mkdir /mnt/owncdata
      [root@ownc:~]# mount /dev/mapper/OwnCGroup-lv_data /mnt/owncdata
    • 為使 owncloud 可存取此資料夾,變更資料夾之使用人及群組
      [root@ownc:~]# chown -R apache.apache /mnt/owncdata
  • 修改 /etc/fstab 下次開機自動掛入此一磁區,加入下面這一行
/dev/mapper/OwnCGroup-lv_data  		  /mnt/owncdata	         ext4    defaults        0 0
  • 測試掛載
    • 先缷載剛手動 mount 的 /mnt/owncdata
      [root@ownc:~]# umount /mnt/owncdata
    • 測試 fstab
      [root@ownc:~]# mount -a


  • 擴展磁區(加入實體碟區),可直接線上作業
    • 把 sda7 加進來
      [root@ownc:~]# vgextend OwnCGroup /dev/sda7
    • 列出 FEE PE 數量
      [root@ownc:~]# vgdisplay
      找到 Free PE 這個欄位,抓出數字,填入下面指令。例: 95, 那麼下方指令開頭便是 lvresize -l +95 /dev/....
    • 改變容量大小
      [root@ownc:~]# lvresize -l +xxxx /dev/mapper/OwnCGroup-lv_data
    • 套用改變用的大小
      [root@ownc:~]# resize2fs /dev/mapper/OwnCGroup-lv_data
  • If you use "xfs partition system" then will change the command :
    [root@ownc:~]# xfs_growfs /dev/mapper/OwnCGroup-lv_data



變更 ownCloud 資料儲存區

  • 把原本的 /var/www/html/owncloud/data 內的所有檔案含隱藏檔全部複製到 /mnt/owncdata
    [root@ownc:~]# cp -a /var/www/html/owncloud/data/. /mnt/owncdata
  • 修改 /var/www/html/owncloud/config/config.php,把 datadirectory 參數改成 /mnt/owncdata
  'datadirectory' => '/mnt/owncdata',



OwnCloud更新注意

 每當用 yum update 到 ownCloud 更新版時,有可能一做完更新 Client 端就連不上了,這時代表需連至網頁上繼續完成更新作業(大多數是資料庫表格異動)。



本文小檔案

題名: Title::CentOS7
作者: Creator::itsmw作者群
主題/關鍵詞: Subject::RedHat, CentOS, Linux
簡述: Description::CentOS 7 Linux 之安裝與調校簡介
出版者: Publisher::MyIP itsmw 計畫
其他參與者: Contributor::itsmw作者群
日期: Date::2015-7-26
文件類型: Type::05作業系統
資料格式: Format::text/html
文件識別代號: Identifier::http://myip.tw/itsmw/index.php?title=CentOS7
來源: Source::http://myip.tw
語言: Language::zh-TW
相關資源: Relation::https://www.centos.org/
文件涵蓋範圍: Coverage::Linux平台
版權規範: Rights::GNU Free Documentation License 1.2