○ mini_httpdのインストール

・軽量WEBサーバのインストール
・起動時のメモリ使用量は256Kバイト程度で収まります
・一般ユーザでの起動、SSL接続、CGIをサポートしています

・新規インストールした openssl を使います
・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:mini_httpd-1.27.tar.gz  (http://www.acme.com/software/)

○参照ファイル

パッケージの追加
opensslのインストール

○インストール環境

:OS CentOS 6.8
:selinux disabled or permissive
:インストール先 
:作業 ~/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

・メンテナンスの場合は一般ユーザから行います



○mini_httpd-1.27

○ソースの展開・インストール

・SSLを有効にしてmakeします
・opensslのディレクトリ設定は各自の環境にあわせます

# cd ~/src
[root@venus:~/src]
# tar zxf mini_httpd-1.27.tar.gz
# chown -R root:root mini_httpd-1.27
# cd mini_httpd-1.27
[root@venus:~/src/mini_httpd-1.27]
# make SSL_INCDIR=/usr/local/include/openssl \
SSL_LIBDIR=/usr/local/lib \
SSL_DEFS=-DUSE_SSL \
SSL_INC=-I/usr/local/include/openssl \
SSL_LIBS='-lssl -lcrypto' \
CFLAGS='-O2 -DUSE_SSL -I/usr/local/include/openssl'

# make install

・ファイルをコピーします

# cd contrib/redhat-rpm
[root@venus:~/src/mini_httpd-1.27/contrib/redhat-rpm]
# cp mini_httpd.init /etc/rc.d/init.d/mini_httpd
# chmod 755 /etc/rc.d/init.d/mini_httpd

# cd ~/src
[root@venus:~/src]
# tar jcvf mini_httpd-1.27-170311.tar.bz2 mini_httpd-1.27/

○ディレクトリの作成 (必要な場合)

# cd ~
[root@venus:~]
# mkdir -p /home/httpd/cgi-bin
# chown -R root:nobody /home/httpd
# chmod -R 750 /home/httpd

○設定ファイル

:/etc/sysconfig/mini_httpd

・パラメータは"man mini_httpd"でマニュアルを参考にしています
・DOCTYPE宣言によって、日本語表示がうまくできない場合があります

port=8080
data_dir=/home/httpd
cgipat=cgi-bin/*
user=nobody
host=venus.528p.com
logfile=/var/log/mini_httpd.log
charset=utf-8

○自動起動ファイル

:/etc/rc.d/init.d/mini_httpd

・ソースファイルからコピーしたものを修正します

#!/bin/sh
# mini_httpd startup script
# Nelson Minar <nelson at monkey.org> Thu Dec 30 13:54:31 PST 1999
# the following two lines added 2000-01-31 by Bennett
# chkconfig: 235 99 01
# description: control script for mini_httpd

# configuration options:

SYSCFG=/etc/sysconfig/mini_httpd
PIDFILE=/var/run/mini_httpd.pid
HTTPD=/usr/local/sbin/mini_httpd

. /etc/rc.d/init.d/functions

case "$1" in
    start)
        echo -n "Starting mini_httpd "
        daemon $HTTPD -r -C $SYSCFG -i $PIDFILE
        echo
        touch /var/lock/subsys/httpd
        ;;

    stop)
        echo -n "Stopping mini_httpd "
        killproc mini_httpd
        echo
        rm -f /var/lock/subsys/httpd $PIDFILE
        ;;

    status)
        status mini_httpd
        ;;

    restart|reload)
        $0 stop
        $0 start
        ;;

    *)
        echo "Usage: mini_httpd {start|stop|status|restart|reload}"
        ;;
esac

exit 0

○SSLv3の使用

・1.27ではSSL v2, v3, TLS v1 でのネゴシエーションができ
かつ SSL v2, v3 での通信要求は拒否する設定になってます

・省略

#ifdef USE_SSL
    if ( do_ssl )
	{
	SSL_load_error_strings();
	SSLeay_add_ssl_algorithms();
	ssl_ctx = SSL_CTX_new( SSLv23_server_method() );
	SSL_CTX_set_options( ssl_ctx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3 );
	if ( certfile[0] != '\0' )
	    if ( SSL_CTX_use_certificate_file( ssl_ctx, certfile, SSL_FILETYPE_PEM ) == 0 ||
		 SSL_CTX_use_certificate_chain_file( ssl_ctx, certfile ) == 0 ||
		 SSL_CTX_use_PrivateKey_file( ssl_ctx, certfile, SSL_FILETYPE_PEM ) == 0 ||
		 SSL_CTX_check_private_key( ssl_ctx ) == 0 )
		{
		ERR_print_errors_fp( stderr );
		exit( 1 );
		}
	if ( cipher != (char*) 0 )
	    {
	    if ( SSL_CTX_set_cipher_list( ssl_ctx, cipher ) == 0 )
		{
		ERR_print_errors_fp( stderr );
		exit( 1 );
		}
	    }
	}
#endif /* USE_SSL */

・省略




○rpmの作成 (参考)

・SSLを有効にしてmakeされます、openssl-develが必要

# cd ~/src
[root@earth:~/src]
# mkdir mini_httpd
# tar zxf mini_httpd-1.27.tar.gz
# cp mini_httpd-1.27.tar.gz ~/rpmbuild/SOURCES
# cd mini_httpd-1.27/contrib/redhat-rpm
[root@earth:~/src/mini_httpd-1.27/contrib/redhat-rpm]
# cp mini_httpd.spec ~/rpmbuild/SPECS
# cd ~/src
[root@earth:~/src]
# rm -rf mini_httpd-1.27
# cd ~/rpmbuild/SPECS
[root@earth:~/rpmbuild/SPECS]
# chmod 644 mini_httpd.spec
# chown root:root mini_httpd.spec

・mini_httpd.specの修正 (下記)

# vi mini_httpd.spec

# rpmbuild -ba --clean --rmsource \
--define 'dist .mn' mini_httpd.spec
# mv mini_httpd.spec ~/src/mini_httpd
# cd ../RPMS/i686
[root@earth:~/rpmbuild/RPMS/i386]

・作成されたパッケージ
 mini_httpd-1.27-1.mn.i686.rpm

# rm *debuginfo*
# mv *.rpm ~/src/mini_httpd
# cd ../../SRPMS
[root@earth:~/rpmbuild/SRPMS]

・作成されたパッケージ
 mini_httpd-1.27-1.mn.src.rpm

# mv *.rpm ~/src/mini_httpd

・インストール

# cd ~/src/mini_httpd
[root@earth:~/src/mini_httpd]
# rpm -Uvh mini_httpd-1.27-1.mn.i686.rpm

・または

# yum localinstall mini_httpd-1.27-1.mn.i686.rpm

:~/rpmbuild/SPECS/mini_httpd.spec

紫色部分 修正または追加

・省略

Summary: small, simple http daemon, supports SSL
Name: mini_httpd
Version: 1.27
Release: 1%{dist}
License: Freely Redistributable
Packager: Bennett Todd <bet@mordor.net>
Group: Networking/Daemons
URL: http://www.acme.com/software/mini_httpd/
Source: http://www.acme.com/software/mini_httpd-%{version}.tar.gz
BuildRoot: /var/tmp/mini_httpd-rpmbuild
Requires: openssl
%description

・省略


○ Copyright(c) 528p.com All Rights Reserved.