note

virtual host

[如何在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.confb.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

Access Control

存取控制,可以對資料夾做權限配置,或是設定配置(像是上面的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

FTP

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,傳送資料,這裡是連線到指定資料夾,如果使用使用者登入,會連線到使用者的家目錄

Linux指令