---
# System prepended metadata

title: '**Apache + NFS**'

---

伺服器架設與規劃課程 09/19-01/09
--------------------
老師上課筆記跟影片:
筆記:
https://hackmd.io/@esys/ByWx4KHbs/%2FqJIQwbaZT6O5RtwXInX2xg
影片
https://www.youtube.com/playlist?list=PLhg8hnlDpjb_J9o679eXX8sq69Rq65gwh

---------------------------------------------
0919
------
因為學校版本VMWare版本較舊，開啟server前要修改版本
進到 .vmx檔 修改 virtualHW.version = "16"

新增兩張網卡  
1: NAT
2: Bridge

注意網卡順序不要設錯張!!!

從student轉成root帳戶 - sudo su - 

接著要設定網卡，
DHCP:
圖像化介面的話的話直接按connect就可以了
純文字介面的話要使用nmtui功能，才可啟用

STATIC:
圖像化介面:選擇Wired Setting 進入後再改成手動(Manual)
輸入IP位置10.6.x.5(第一台)或11(第二台) 及 255.255.255.0 即可完成操作

設定完成後兩台可以互連試試看 ping 有沒有辦法連線

**因為在Linux上很難操作，可以在本機windows使用遠端連進去。
使用git-bash檔案
先進到windows的網路介面設定-ipv4新增ip位置
在停用vmware的網路
在git-bash程式輸入ssh 10.6.x.5@student即可連到**

0926
---------------
連至linux時 每個都會叫localhost 為了方便 可以修改主機名稱

**使用圖像化界面:**

1.先轉成root權限

2.關鍵指令
    echo server1 > /etc/hostname
    cat /etc/hostname

3.記得一定要重新開機

**使用純文字系統:**

1.輸入nmtui

2.選擇第三個，輸入你想修改的名字

3.即可完成修改

**基本操作**

ls-->查看檔案
cd-->進入檔案
cp-->複製檔案
touch -->指令建立空檔案

**vi 指令控制(很重要)**
存檔	:w
離開	:q
存檔後離開	:wq
不存檔離開	:q!
強制存檔	:w! (需要有相關權限)
尋找字串	/{word} ({word} 代表要找的字串)

10/3
---------------
**使用者與群組建立:**

新增使用者: useradd (name)
新增群組:groupadd (name)

如果一次要建立很多帳號密碼:

mkdir lab1/; cd lab1/
(建立資料夾後進入)

vi userlist
(使用vi編輯)

stuxxx:P@ssw0rd:1104:1001::/home/stuxxx:/bin/bash
(輸入建立帳號密碼)

newusers < userlist
(newusers用來批次建立帳號)

**密碼修改:**

cd ~/lab1/   ---->(進去資料夾)
vi newpass.txt   ---->(打開vi檔)
即可更改

**移除使用者:**

cd進去後
輸入 userdel xxx 即可完成

10/10
----------------------------

國慶日放假開心

10/17
----------------------------
**權限設定(期末考會考)**

要自己判斷題目所需，給予權限的號碼
(對照表從老師筆記抓來的)
![](https://i.imgur.com/PIgtYmW.png)

ls: 查看物件資訊
chown: 修改物件 Owner
chgrp: 修改物件 Group
chmod: 修改物件權限*(輸入判斷的權限號碼)*

10/24
----------------------------
**校時很重要(期末考會考)**

調整時間有很多種方式

date 與 timedatectl 顯示目前系統時間

**安裝網路校時套件：**
dnf install -y chrony
systemctl enable --now chronyd

**修改時區**
timedatectl set-timezone Asia/Taipei

11/01
------------------------------------

crontab -l --->查看目前使用者工作排程

rpm套件安裝指令繁瑣，直接查看老師筆記

**磁碟管理(期末考重點)**

1.查看可用磁碟列表 
df -h

2.查看磁碟資訊
lsblk

3.格式化磁碟為 xfs 檔案系統
mkfs.xfs /dev/sdb

4.建立資料夾
mkdir /mydata/

5.將 /dev/sdb 掛載到 /mydata 裡並使用

mount /dev/sdb /mydata/
ls -l /mydata/
touch /mydata/f1.txt
ls -l /mydata/

6.查看磁碟掛載資訊
df -h /mydata

11/7
---------------------
直接看老師筆記即可
(面試題目分享及DNS 客戶端基本操作)

11/14
-------------------------
**HTTP 網頁服務**

1.安裝 httpd 套件
dnf install httpd

2.開機時啟動 httpd 服務
systemctl enable httpd
systemctl start httpd

3.設定防火牆
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

firewall-cmd --list-all | grep http

server1可以開啟瀏覽器 連入 http://10.6.X.11/

4.server2設定首頁檔案

*(php語法分只是範例 可以自行替換)*
echo "Hello ServerX" > index.html
root# ls -lh index.html
-rw-r--r--. 1 root root 14 Nov 12 21:55 index.html

**PHP功能安裝**

1.安裝 PHP 相關基本套件
dnf install -y php

2.首次安裝，需要重新啟動 httpd 套用相關設定檔案。
systemctl restart httpd

3.在 web1.domainX.linux.class 中，新增 PHP 測試程式
cd /var/www/html/web1.domainX.linux.class/

echo '<?php phpinfo(); ?>' > phpinfo.php

(以上PHP在第二台完成)

(接著要到第一台電腦測試!!!!)

Server1 裡，開啟 Firefox後輸入 http://web1.domainX.linux.class/phpinfo.php 查看 PHP 資訊。

11/21
---------------------
**MariaDB 資料庫安裝(期末考會考)**

在第二台電腦安裝!!

1.查看系統中是否有 MariaDB 安裝套件
dnf list mariadb-server

2.安裝 MariaDB Server
dnf install -y mariadb-server

3.查看資料庫實體檔，並建立初始化資料
ls -l /var/lib/mysql/
systemctl enable --now mariadb
ls -l /var/lib/mysql/

查看 MariaDB 服務狀態
systemctl status mariadb

**設管理者密碼**

輸入 mysql_secure_installation 
然後跑出來全部輸入Y(代表YES)

看到 MariaDB [(none)]> 後，代表已經成功登入並且可以開始進行資料庫操作

建立一個 classdb 資料庫

MariaDB [(none)]> CREATE DATABASE classdb;

刪除 classdb 資料庫
MariaDB [(none)]> DROP DATABASE classdb;

**phpMyAdmin Web 管理介面**

1.安裝 Apache (httpd) 與 PHP (php-fpm) 服務。
dnf install -y httpd php-fpm

2.安裝 phpMyAdmin 需要的 PHP 模組。
dnf install -y php-pdo php-mysqli php-mbstring php-json php-xml

3.安裝解開 .tar.gz 的套件。
dnf install -y tar

4.重新啟動 php-fpm，讓剛才安裝好的模組生效。
systemctl restart php-fpm

安裝 phpMyAdmin

(在第二台電腦安裝!!)

cd /var/www/html/

curl -OJL https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz

 tar -zxf phpMyAdmin-5.2.0-all-languages.tar.gz

mv phpMyAdmin-5.2.0-all-languages sql

完成後即可登入囉!!!
(在第一台電腦操作)
輸入http://10.6.X.11/sql/ 網址

剩下的PHPMYADMIN資料庫基本操作已經會了 不做筆記

11/28
------------------------
**資料庫備份與還原**

**測試資料**
curl -OJL https://www.mysqltutorial.org/wp-content/uploads/2018/03/mysqlsampledatabase.zip

sudo dnf install -y unzip
sudo unzip mysqlsampledatabase.zip
ls -lh
mysql -u root -p -h localhost < mysqlsampledatabase.sql
mysql -u root -p -h localhost
MariaDB [(none)]> show databases;

**備份**
在目錄中建立 db_backup 資料夾，並切換到該目錄。
cd; mkdir db_backup; cd db_backup/

mysqldump 指令進行備份
mysqldump -u root -p -h localhost classicmodels > classicmodels.sql

mysqldump -uroot -pYOUR_PASS_WORD -h localhost classicmodels > classicmodels_001.sql

ls

**還原**

工作目錄切換到資料庫備份
cd ~/db_backup/

建立一個新的資料庫，以供還原使用。

mysql -u root -p -h localhost
MySQL> SHOW DATABASES;
MySQL> CREATE DATABASE classdb;
MySQL> SHOW DATABASES;
MySQL> exit;

mysql -u root -p -h localhost classdb < classicmodels.sql

**NFS 網路檔案系統(重要!!期末考會考)**

安裝 nfs-utils 套件。

root# dnf list nfs-utils

root# dnf install -y nfs-utils

root# dnf list nfs-utils
建立檔案存放路徑。

root# mkdir /nfsshare
設定分享目錄路徑。

root# vi /etc/exports
/nfsshare 10.6.X.5(rw)
以上設定了來自 10.6.X.5 的 IP，可以對 /nfsshare 進行讀寫（rw）。

設定開機自動啟動 NFS 服務，並設定防火牆可使用 NFS 連線進入。

root# systemctl enable --now nfs-server

root# firewall-cmd --list-all
root# firewall-cmd --permanent --add-service=nfs
root# firewall-cmd --reload
root# firewall-cmd --list-all

**驗證**
@Server1

建立掛載目錄，並測試將 Server1 中的 NFS 目錄掛載起來。

root# mkdir /nfs-mount

root# mount -t nfs 10.6.X.11:/nfsshare /nfs-mount
在掛載目錄中測試新增檔案，會出現錯誤。

root# cd /nfs-mount

root# touch file
FAIL!
@Server2

在 NFS Server 中，設定分享目錄的擁有者與群組均為 nobody。

root# chown -R nobody:nobody /nfsshare
@Server1

在 Server1，再次測試新增檔案，此時應能順利新增。

root# cd /nfs-mount

root# touch file
當 Server1 寫入檔案時，實際上應該會寫到 Server2 的分享目錄，可以使用 ls 進行確認檔案是否存在。

@Server2

root# ls -l /nfsshare

**開機自動掛載**

若要在 Server1 中將 NFS 的分享目錄在開機時自動掛載，必須修改 /etc/fstab 檔案。

@Server1

root# vi /etc/fstab
最後新增


10.6.X.11:/nfsshare /nfs-mount nfs rw,soft 0 0
root# cd
root# umount /nfs-mount
root# df -h /nfs-mount

root# mount -a

root# df -h /nfs-mount
mount -a 必須無錯誤

root# reboot
root# df -h /nfs-mount
清除作業
在 Server1 中，還原 /etc/fstab 中的 NFS 掛載項目。

@Server1

root# vi /etc/fstab
刪除 nfs 掛載至 /nfs-mount 行


刪除此行: 10.6.X.11:/nfsshare /nfs-mount nfs rw,soft 0 0
存檔後離開

root# umount /nfs-mount
@Server2

在 Server2 中，清空 NFS 設定檔，並移除相關套件。

root# &> /etc/exports

root# systemctl disable nfs-server
root# systemctl stop nfs-server

root# dnf remove nfs-utils

**設定磁碟掛載**
@Server2

root# mkdir /mydata/
root# lsblk /dev/sdb
root# blkid /dev/sdb
blkid 必須為空

root# mkfs.xfs /dev/sdb

root# blkid /dev/sdb
/dev/sdb: UUID="542a5102-6747-41b2-b56c-e0511b6f8169" BLOCK_SIZE="512" TYPE="xfs"
**記下 UUID 字串**

root# vi /etc/fstab
最後一行新增
...

UUID=542a5102-6747-41b2-b56c-e0511b6f8169 /mydata xfs defaults 0 0

root# mount -a
必須沒有任何訊息出現

root# reboot (重新開機)

12/5
-----------------------------------------
# **Apache + NFS**
**一、設定獨立儲存空間**
@Server2

檢視並格式化 /dev/sdb。

root# lsblk /dev/sdb

root# mkfs.xfs /dev/sdb
取得 /dev/sdb 格式化後的 UUID。

root# blkid /dev/sdb
將 UUID 資訊記錄下來，供 /etc/fstab 設定使用。

建立 NFS 分享目錄。

root# mkdir /web/
設定磁碟自動掛載

root# vi /etc/fstab
最後一行新增
...

UUID=XXXX-YYY-ZZZ /web xfs defaults 0 0
確認 /etc/fstab 檔案設定正確

root# mount -a
如發生錯誤，必須再次檢查 /etc/fstab 配置是否正確。

此時 /web/目錄應有獨立可用空間。

root# df -h /web/

**二、設定 NFS 服務**
@Server2

安裝 NFS 套件。

root# dnf install -y nfs-utils
設定 10.6.X.5 主機才能夠使用 /web 分享目錄，且只能使用唯讀方式存取。

root# vi /etc/exports
/web 10.6.X.5(ro)
啟動 NFS 服務

root# systemctl enable --now nfs-server
設定防火牆讓 NFS 服務提供對外服務，讓其它主機可以連入。

root# firewall-cmd --permanent --add-service=nfs

root# firewall-cmd --reload
檢視防火牆規則，確認有提供 nfs 可連入。

root# firewall-cmd --list-all | grep nfs
檢視 NFS 分享路徑

root# showmount -e localhost
@Server2

為網站建立首頁檔案，該檔案放在 NFS Server 的分享目錄中。

root# cd /web
root# echo helloX > index.html

**三、設定 Web Server 服務**
@Server1

安裝 Apache httpd 套件。

root# dnf install -y httpd
將 Server2 的 NFS 分享目錄掛載到 Server1 的 /var/www/html 網站根目錄中，並以唯讀方式掛載。

root# mount -t nfs -o ro 10.6.X.11:/web /var/www/html
啟動 httpd Web 服務

root# systemctl enable --now httpd
在 Server1 防火牆中新增規則，讓其它主機可以存取 http 服務。

root# firewall-cmd --permanent --add-service=http
重新載入防火牆規則，使其生效。

root# firewall-cmd --reload
檢視防火牆規則，應包含 http 服務。

root# firewall-cmd --list-all | grep http
初次檢視首頁，應無法檢視自訂網頁內容。

root# curl http://localhost
FAIL!

**四、設定 SELinux 規則**
打開 SELinux 規則中的 httpd_use_nfs 功能，讓 httpd 可以存取 NFS 內容。

檢視 httpd_use_nfs 目前規則，目前為 off 狀態。

root# getsebool -a | grep httpd_use_nfs 
設定 httpd_use_nfs 為 on。

root# setsebool -P httpd_use_nfs on
再次檢視 httpd_use_nfs 目前規則，應顯示為 on。

root# getsebool -a | grep httpd_use_nfs 
參考: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/sect-managing_confined_services-the_apache_http_server-configuration_examples

**五、檢視 Web 網頁**
使用 curl 工具再次檢視網站首頁，應能顯示自訂內容。

root# curl http://localhost
helloX

**六、開機自動掛載 NFS 目錄**
在 Server1 主機中，設定重開機後能夠自動掛載 NFS 目錄。

@Server1

修改 /etc/fstab 檔案。

root# vi /etc/fstab
最後一行新增
...


10.6.X.11:/web /var/www/html nfs ro 0 0
卸載 /var/www/html/ 目錄，供自動掛載測試。

root# umount /var/www/html/
確認 /var/www/html/ 已無掛載。

root# df -h /var/www/html/
測試 /etc/fstab 設定。

root# mount -a
確認 /var/www/html/ 順利掛載。

root# df -h /var/www/html/
在 Server1 重開機確認各目錄與服務自動啟用。

root# reboot

**七、再次檢視 Web 網頁**
Server1 重開機後，使用 curl 工具再次檢視網站首頁，應能顯示自訂內容。

root# curl http://localhost
helloX

剩餘SELinux的部分直接參考老師的筆記!

12/19
--------------------------------------
**Shell Script 簡介**

***Script 宣告***

#!/bin/bash

***取得上一程式執行結果狀態碼***

student$ ls -l /etc/passwd &> /dev/null

student$ echo $?
student$ ls -l /etc/passwd1 &> /dev/null

student$ echo $?

***取得自己的 PID***

echo $$

***把輸出結果存到變數，並使用之***

student$ date

student$ mydate=$(date)

student$ echo ${mydate}

程式流程的部分參考老師上課的筆記即可

While迴圈比較不會要多注意

接下來則是Lab練習1-練習3的部分，回去一定要練習

12/26
--------------------------------------
今天老師在講解期末考試的事項，還有讓我們練習期末考的模擬試題
考試當天網路一定要連通不然無法評分!

1/2
--------------------------------------
國慶日連假 不上課! 開心 新年快樂

1/9
-----------------------------------------
殘酷的日子希望能考及格 阿蜜陀佛
