| [如何在CentOS 7配置Apache虚拟主机 | myfreax](https://www.myfreax.com/how-to-set-up-apache-virtual-hosts-on-centos-7/) |
上禮拜是講解virtual host的概念,這禮拜來進行virtual host 的實做
準備兩個資料夾: a.com、b.com (在/var/www/資料夾下面)
$ cd /var/www
$ mkdir a.com
$ mkdir b.com
$ echo "www.a.com" > ./a.com/index.html
$ echo "www.b.com" > ./b.com/index.html
編輯設定檔案,名稱不是很重要,只是提醒是哪個的配置檔,不過結尾要.conf,因為在/etc/httpd/conf.d 有設定選項: IncludeOptional conf.d/*.conf
$ cd /etc/httpd/conf.d
$ vim a.com.conf
$ vim b.com.conf
a.com.conf和b.com.conf是類似的程式碼,下面示範a.com.conf
如果要把virtual host的位置做更改,需要新增設置Listen的port (/etc/httpd/conf/httpd.conf)
<VirtualHost *:80>
ServerName a.com
ServerAlias www.a.com
ServerAdmin webmaster@a.com
DocumentRoot /var/www/a.com
<Directory /var/www/a.com>
Options -Indexes +FollowSymLinks # 設定權限
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/a.com-error.log # 設定log存放位置
CustomLog /var/log/httpd/a.com-access.log combined
</VirtualHost>
重新啟動伺服器
$ systemctl restart httpd
因為我們現在還沒有架設DNS Server,所以我們必須手動配置 DNS 的設置檔案。
Linux /etc/hosts
Windows: C:\Windows\System32\drivers\etc\hosts
把 a.com 和 b.com的 ip 設定到裡面
192.168.56.106 www.a.com
192.168.56.106 www.b.com
然後就可以使用 www.a.com 和 www.b.com 瀏覽到網頁
課本15-6
存取控制,可以對資料夾做權限配置,或是設定配置(像是上面的a.com.conf)
<Directory 目錄>
# 設定配置
</Directory>
執行順序會影響出來的結果,後面的規則會蓋掉前面的規則
<Directory /var/www/html>
# 讀取順序,先接受再拒絕
Order allow,denv
# 允許全部i
Allow from all
# 拒絕特定IP,黑名單
Deny from 172.17.1.35
# 選擇項會有安全性的問題,所以盡量選擇不要用
# 代表不使用選擇項
Options None
# 當沒有index.html的時候,會建立一個可以查看網站下資料夾的html,讓使用者可以自行查看內容
# Options Indexes
# 可以讓使用者點擊資料連結檔案(使用 ln 創造的東西)
# Options FollowSymLinks
# 可以使用 + - 加上權限,或是直接寫也可以
# Options Indexes FollowSymLinks
# 允許子目錄可以有自己的選項,像是目前資料夾是使用 `Option None`,使用這個選擇項以後,就可以更改選擇項
AllowOverride All
</Directory>
資料夾加密:
vim /etc/httpd/conf.d/a.com.conf
<Directory /var/www/a.com/secure>
AllowOverride AuthConfig
</Directory>
在 secure 資料夾下面創建使用者帳號密碼,並設定 .htacess
$ cd /var/www/a.com
$ mkdir secure; cd secure
$ htpasswd -c .htpasswd user
$ vim .htaccess # 創造.htaccess資料
輸入 .htaccess的內容
AuthType Basic
AuthName "Private File Area"
AuthUserFile /var/www/a.com/secure/.htpasswd
Require valid-user
AuthType
AuthType 為Basic 代表使用由htpasswd 指令產生的密碼檔為驗證依據。
AuthName
驗證的名稱,顯示在對話框上的文字。
AuthUserFile
驗證使用的密碼檔,必需包括所在目錄
Require
可通過驗證的帳號,valid-user 代表所有的帳號
FTP 沒有做加密,所以很容易被入侵,通常是用在內網裡面,作為傳輸使用
setup
$ rpm -qa | grep vsftpd # 查看是否有安裝FTP
$ yum install vsftpd
$ netstat -tunlp | grep 21 # 檢查有沒有開啟 FPT port
$ systemctl start vsftpd
/var/ftp: ftp的家目錄
/etc/vsftpd/vsftpd.conf: 伺服器主要設定檔案
設定權限讓匿名用戶可以修改新增內容
$ chmod 777 /var/ftp/pub
$ vim /etc/vsftpd/vsftpd.conf
把下面的權限打開,拿掉註解,讓匿名使用者也可以傳送資料
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
加入權限
anon_other_write_enable=YES
anon_world_readable_only=NO
anon_root=/var/ftp
重新啟動伺服器
$ systemctl restart vsftpd
可以使用winSCP做連線,使用anonymous,傳送資料,這裡是連線到指定資料夾,如果使用使用者登入,會連線到使用者的家目錄
ln -s a.txt /var/www/a.txt: 建立軟連結,如果要對目錄,需要加上 -nhtpasswd -c .htpasswd user: 加鎖,-c就是創立檔案,這裡創造隱藏檔(.),到目前目錄底下,可以使用 ./htpasswd查看使用者帳號,如果要再次新增帳號密碼,就不用加上-c了