■1.設定概要
基本的には最近のWebサーバはPUTメソッドがデフォルトでは禁止されている。HTTPのPUTメソッドによるファイルのアップロードを実現するには、Apacheの場合はWebDavが必要。
以下も参照設定
https://httpd.apache.org/docs/2.4/ja/mod/mod_dav.html
※DavLockDBの設定がないとCentOS7ベースのOSは以下のエラーが出る
A lock database was not specified with the DAVLockDB directive. One must be specified to use the locking functionality. [500, #401]
apacheがインストールされているとして、設定は以下
①httpd.confの最後に以下を追加
vim conf/httpd.conf
DavLockDB "/var/tmp/DavLock"
<Directory "/var/www/html/dav">
Require all granted
Dav On
</Directory>
②Davディレクトリ追加
mkdir -p /var/www/html/dav
chmod 777 /var/www/html/dav
③apacheを再起動
systemctl restart httpd
■2.PCからの操作
①アップロード (上書きも可能)
curl -T a.txt --url http://10.1.1.115/dav/a.txt -X PUT
②ファイル取得
curl -O http://10.1.1.115/dav/a.txt
以下だと、ファイルを取得せずに中身を表示
curl --url http://10.1.1.115/dav/a.txt -X GET
③ファイルDELETE(削除)
curl --url http://10.1.1.115/dav/a.txt -X DELETE
■3.WebDavの設定 流し込み
#コンフィグバックアップ
cd /etc/httpd/conf/
sudo cp httpd.conf httpd.conf.org
#PUTメソッド利用のため、mod_davモジュールが有効になっていることを確認(AmazonLinux2ではデフォルト有効)
less /etc/httpd/conf.modules.d/00-dav.conf | grep mod_dav
#以下の3行がコメントアウトされずに記載されていることを確認
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_lock_module modules/mod_dav_lock.so
#PUTメソッド利用のため、davモジュールがインストールされていることも確認
grep -r dav /etc/httpd/modules
#恐らく、以下が表示されるはず
#Binary file /etc/httpd/modules/libphp5.so matches
#Binary file /etc/httpd/modules/mod_dav.so matches
#Binary file /etc/httpd/modules/mod_dav_fs.so matches
#Binary file /etc/httpd/modules/mod_dav_lock.so matches
#Binary file /etc/httpd/modules/mod_status.so matches
#Binary file /etc/httpd/modules/mod_headers.so matches
#httpd.confファイルの末尾に追加
sed -i /etc/httpd/conf/httpd.conf -e '$ a DavLockDB "/var/tmp/DavLock"\n\n<Directory "/var/www/html/dav">\n\tRequire all granted\n\tDav On\n</Directory>'
#Davディレクトリ追加
mkdir -p /var/www/html/dav
chmod 777 /var/www/html/dav
#apacheを再起動
systemctl restart httpd
基本的には最近のWebサーバはPUTメソッドがデフォルトでは禁止されている。HTTPのPUTメソッドによるファイルのアップロードを実現するには、Apacheの場合はWebDavが必要。
以下も参照設定
https://httpd.apache.org/docs/2.4/ja/mod/mod_dav.html
※DavLockDBの設定がないとCentOS7ベースのOSは以下のエラーが出る
A lock database was not specified with the DAVLockDB directive. One must be specified to use the locking functionality. [500, #401]
apacheがインストールされているとして、設定は以下
①httpd.confの最後に以下を追加
vim conf/httpd.conf
DavLockDB "/var/tmp/DavLock"
<Directory "/var/www/html/dav">
Require all granted
Dav On
</Directory>
②Davディレクトリ追加
mkdir -p /var/www/html/dav
chmod 777 /var/www/html/dav
③apacheを再起動
systemctl restart httpd
■2.PCからの操作
①アップロード (上書きも可能)
curl -T a.txt --url http://10.1.1.115/dav/a.txt -X PUT
②ファイル取得
curl -O http://10.1.1.115/dav/a.txt
以下だと、ファイルを取得せずに中身を表示
curl --url http://10.1.1.115/dav/a.txt -X GET
③ファイルDELETE(削除)
curl --url http://10.1.1.115/dav/a.txt -X DELETE
■3.WebDavの設定 流し込み
#コンフィグバックアップ
cd /etc/httpd/conf/
sudo cp httpd.conf httpd.conf.org
#PUTメソッド利用のため、mod_davモジュールが有効になっていることを確認(AmazonLinux2ではデフォルト有効)
less /etc/httpd/conf.modules.d/00-dav.conf | grep mod_dav
#以下の3行がコメントアウトされずに記載されていることを確認
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_lock_module modules/mod_dav_lock.so
#PUTメソッド利用のため、davモジュールがインストールされていることも確認
grep -r dav /etc/httpd/modules
#恐らく、以下が表示されるはず
#Binary file /etc/httpd/modules/libphp5.so matches
#Binary file /etc/httpd/modules/mod_dav.so matches
#Binary file /etc/httpd/modules/mod_dav_fs.so matches
#Binary file /etc/httpd/modules/mod_dav_lock.so matches
#Binary file /etc/httpd/modules/mod_status.so matches
#Binary file /etc/httpd/modules/mod_headers.so matches
#httpd.confファイルの末尾に追加
sed -i /etc/httpd/conf/httpd.conf -e '$ a DavLockDB "/var/tmp/DavLock"\n\n<Directory "/var/www/html/dav">\n\tRequire all granted\n\tDav On\n</Directory>'
#Davディレクトリ追加
mkdir -p /var/www/html/dav
chmod 777 /var/www/html/dav
#apacheを再起動
systemctl restart httpd
コメント