用Apahce+LDAP自建WebDAV當binary repository

這一陣子在用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之類的指令直接抓檔案了

comments powered by Disqus