2013年6月23日日曜日

nginxでwebdavを構築してみる

nginxでWebDAVを使うために、
 ・nginxをソースを入手する
 ・WebDAV用のモジュール(ソース?)を入手する
  ※Windows標準のWebClientを使うため、methodを拡張(PROPFIND,OPTIONS)を扱える
   ようにする
 ・rpmを作成する

構築する環境は、
 ・CentOS 6.4(64bit)
  ・nginx1.4.1
で試してみる。

1.nginx+WebDAV拡張モジュールインストールのためのライブラリのインストール

必要となる以下のパッケージを入れる
・nginxのため
  zlib
  zlib-devel
  pcre
  pcre-devel
  perl
・nginx-dav-ext-moduleのため
  expat
  expat-devel

2.nginxのソースパッケージを入手

# cd /tmp
# wget http://nginx.org/packages/centos/6/SRPMS/nginx-1.4.1-1.el6.ngx.src.rpm
# rpm -ivh  nginx-1.4.1-1.el6.ngx.src.rpm

インストール先は~/rpmbuildになるみたい。

3.拡張モジュールを入手るする

WebDAVの拡張モジュールのソースはgitで管理されているので、gitから入手。

# cd ~/rpmbuild/SOURCES/
# git clone https://github.com/arut/nginx-dav-ext-module.git

上記で以下のフォルダにソースファイルが展開される

~/rpmbuild/SOURCES/nginx-dav-ext-module

4.rpmパッケージの作成

今回必要なモジュールのみインストールをすることを目的に、SPECファイルを
修正する。
ポイントは以下の通り
 1.ソースは1.4.1をベースとする(デフォルトはWebから最新を入手)
 2.不要なライブリの依存を外す(openssl-devel)
 3.不要なnginxのオプションを、ocnfigureから外す
これをspecファイルに反映する。

# vi ~/rpmbuild/SPECS/nginx.spec

>>


Source0: nginx-1.4.1.tar.gz

#BuildRequires: openssl-devel




%build
./configure \
        --prefix=%{_sysconfdir}/nginx \
        --sbin-path=%{_sbindir}/nginx \
        --conf-path=%{_sysconfdir}/nginx/nginx.conf \
        --error-log-path=%{_localstatedir}/log/nginx/error.log \
        --http-log-path=%{_localstatedir}/log/nginx/access.log \
        --pid-path=%{_localstatedir}/run/nginx.pid \
        --lock-path=%{_localstatedir}/run/nginx.lock \
        --user=%{nginx_user} \
        --group=%{nginx_group} \
        --with-http_dav_module \
        --with-cc-opt="%{optflags} $(pcre-config --cflags)" \
        --add-module=/home/chika/rpmbuild/SOURCES/nginx-dav-ext-module \
        $*
make %{?_smp_mflags}
%{__mv} %{_builddir}/%{name}-%{version}/objs/nginx \
        %{_builddir}/%{name}-%{version}/objs/nginx.debug
./configure \
        --prefix=%{_sysconfdir}/nginx \
        --sbin-path=%{_sbindir}/nginx \
        --conf-path=%{_sysconfdir}/nginx/nginx.conf \
        --error-log-path=%{_localstatedir}/log/nginx/error.log \
        --http-log-path=%{_localstatedir}/log/nginx/access.log \
        --pid-path=%{_localstatedir}/run/nginx.pid \
        --lock-path=%{_localstatedir}/run/nginx.lock \
        --user=%{nginx_user} \
        --group=%{nginx_group} \
        --with-http_dav_module \
        --with-cc-opt="%{optflags} $(pcre-config --cflags)" \
        --add-module=/home/chika/rpmbuild/SOURCES/nginx-dav-ext-module \
        $*
make %{?_smp_mflags}


<<

上記のインストールパスの変更などを行いたい場合は、
 ・~/.rpmmacrosに変数を記載
 ・上記のspecファイルに修正を加える。
で対応する。

# rpmbuild -bb ~/rpmbuild/SPECS/nginx.spec

これで、以下にファイルが出来上がり。
 ~/rpmbuild/RPMS/x86_64/nginx-1.4.1-1.el6.ngx.x86_64.rpm

5.nginxをインストール

# rpm -ihv ~/rpmbuild/RPMS/x86_64/nginx-1.4.1-1.el6.ngx.x86_64.rpm

準備中...                ########################################### [100%]
   1:nginx                  ########################################### [100%]
----------------------------------------------------------------------

Thanks for using NGINX!

Check out our community web site:
* http://nginx.org/en/support.html

If you have questions about commercial support for NGINX please visit:
* http://www.nginx.com/support.html

----------------------------------------------------------------------

# /usr/sbin/nginx -V
nginx version: nginx/1.4.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_dav_module --with-cc-opt='-O2 -g -I/usr/local/include' --add-module=/home/nginx/rpmbuild/SOURCES/nginx-dav-ext-module

指定のモジュールが組み込まれているようです!次回はWebDAVの設定です。

0 件のコメント:

コメントを投稿