這一陣子在用Ansible建立一套平台
當中遇到了一個問題,當使用Ansible去部署application的時候
對於一個需要編譯的application來講每次部署都會自動的在觸發編譯一次
這樣效率有點慢,後來想起來我前公司有用WebDAV去讓人放binary files來加速部署
今天試著自己把WebDAV建起來順變做個紀錄
環境
- CentOS 7.3
- Apache 2.4
然後我希望這個webDAV
- 對於下載沒有限制
- 對於上傳刪除需要LDAP帳號密碼認證
Apahce內建就有webDAV的功能了,直接用Apache就好
安裝部署如下
# Install apache
$ yum -y install httpd mod_ldap
$ httpd -version
>Server version: Apache/2.4.6 (CentOS)
>Server built: Nov 14 2016 18:04:44
$ systemctl enable httpd.service
$ systemctl status httpd.service
# Make webdav directory
$ mkdir -p /data_hdd/webdav
$ chown apache /data_hdd/webdav
$ chgrp apache /data_hdd/webdav
$ chmod 775 /data_hdd/webdav
$ ls -ld /data_hdd/webdav
# Check config
$ cat /etc/httpd/conf.modules.d/00-dav.conf
$ vim /etc/httpd/conf.d/dav.conf
DAVLockDB "/tmp/WebDAV.lock"
Alias /webdav "/data_hdd/webdav"
<Directory /data_hdd/webdav>
DAV On
Options Indexes MultiViews
AuthType Basic
AuthName "intra-auth"
AuthBasicProvider ldap
AuthLDAPGroupAttribute groupOfNames
AuthLDAPURL ldap://$LDAP_URL/ou=people,ou=account,ou=development,o=example.com?uid
require ldap-group ou=authgroup,ou=development,o=example.com
<RequireAny>
Require method GET POST OPTIONS
Require valid-user
</RequireAny>
</Directory>
# Start apache
$ systemctl restart httpd.service
apache config其中的LDAP設定,AuthLDAPURL,AuthLDAPURL等等
LDAP相關找帳號設定需要依據實際的LDAP設定去修正才行
架好之後去http://你的host/webdav/ 就可以看到一個可以下載的位置列表
使用方法:
建立一個新的資料夾
curl -X MKCOL --user <YOUR_SHORT_ACCOUNT> <WEBDAV_URL>/<FOLDER_NAME>
Example:
curl -X MKCOL --user 你的LDAP帳號 http://你的host/webdav/test2
刪除一個資料夾
curl -X DELETE --user <YOUR_SHORT_ACCOUNT> <WEBDAV_URL>/<FOLDER_NAME>/
Example:
curl -X DELETE --user 你的LDAP帳號 http://你的host/webdav/test2
Note: "/" MUST exists after folder name.
上傳檔案
curl -T <LOCAL_FILE_TO_UPLOAD> --user <YOUR_SHORT_ACCOUNT> <WEBDAV_URL>/<FOLDER_NAME>
Example
curl -T ~/Downloads/oracle_BlueKai.pdf --user 你的LDAP帳號 http://你的host/webdav/test2
之後就可以用像wget之類的指令直接抓檔案了