一、簡介 目的:構建小型WEB站,具備SSL,解析PHP指令碼(適用嵌入式環境)。 作者:sundy 2006-3-6 E_MAIL:hysundy@163.com 二、環境資源 redhat 8 mini_httpd_1.19 b修改版 php.4.4.2 三、步驟說明 ------------------------------------------------------------- a.安裝 php (簡介 類似文章很多了 )
解壓 php.4.4.2 #cd php.4.4.2/ #./configure --prefix=/usr/local/php # make install 安裝完成後把/usr/local/src/php-4.4.2/php.ini-dist複製到/usr/local/php/lib/,並重新命名為php.ini -------------------------------------------------------------- -------------------------------------------------------------- b.安裝 mini_httpd-1.19 解壓 mini_httpd-1.19bhoc.tar.gz #cd mini_httpd-1.19bhoc #vi Makefile 修改後如下:
- # Makefile for mini_httpd
- # CONFIGURE: If you are using a SystemV-based operating system, such as
- # Solaris, you will need to uncomment this definition.
- #SYSV_LIBS = -lnsl -lsocket
- # CONFIGURE: Some systems don't need -lcrypt, and indeed they get an
- # error if you try to link with it. If you get an error about libcrypt
- # not found, try commenting out this definition.
- CRYPT_LIB = -lcrypt
- # CONFIGURE: If you want to compile in support for https, uncomment these
- # definitions. You will need to have already built OpenSSL, available at
- # http://www.openssl.org/ Make sure the SSL_TREE definition points to the
- # tree with your OpenSSL installation - depending on how you installed it,
- # it may be in /usr/local instead of /usr/local/ssl.
- SSL_TREE = /usr/share/ssl
- SSL_DEFS = -DUSE_SSL
- SSL_INC = -I${SSL_TREE}/include
- SSL_LIBS = -L${SSL_TREE}/lib -lssl -lcrypto
- # CONFIGURE: If you want to compile in support for PHP environment variables
- # (namely PHP_AUTH_USER and PHP_AUTH_PW) then uncomment the definition below.
- #PHP_ENV = -DPHP_ENV
- # CONFIGURE: If you want to omit all IPV6 Support, uncomment the def below.
- #IPV6_DEFS = -DNO_IPV6
- BINDIR = /usr/local/sbin
- MANDIR = /usr/local/man
- CC = gcc
- CDEFS = ${SSL_DEFS} ${SSL_INC} ${IPV6_DEFS} ${PHP_ENV}
- CFLAGS = -O ${CDEFS}
- #CFLAGS = -g ${CDEFS}
- LDFLAGS = -s
- #LDFLAGS = -g
- LDLIBS = ${SSL_LIBS} ${SYSV_LIBS} ${CRYPT_LIB}
- all: mini_httpd htpasswd
- mini_httpd: mini_httpd.o match.o tdate_parse.o
- ${CC} ${CFLAGS} ${LDFLAGS} mini_httpd.o match.o tdate_parse.o ${LDLIBS} -o mini_httpd
- mini_httpd.o: mini_httpd.c version.h port.h match.h tdate_parse.h mime_encodings.h mime_types.h
- ${CC} ${CFLAGS} -c mini_httpd.c
- match.o: match.c match.h
- ${CC} ${CFLAGS} -c match.c
- tdate_parse.o: tdate_parse.c tdate_parse.h
- ${CC} ${CFLAGS} -c tdate_parse.c
- mime_encodings.h: mime_encodings.txt
- rm -f mime_encodings.h
- sed < mime_encodings.txt > mime_encodings.h \
- -e 's/#.*//' -e 's/[ ]*$$//' -e '/^$$/d' \
- -e 's/[ ][ ]*/", 0, "/' -e 's/^/{ "/' -e 's/$$/", 0 },/'
- mime_types.h: mime_types.txt
- rm -f mime_types.h
- sed < mime_types.txt > mime_types.h \
- -e 's/#.*//' -e 's/[ ]*$$//' -e '/^$$/d' \
- -e 's/[ ][ ]*/", 0, "/' -e 's/^/{ "/' -e 's/$$/", 0 },/'
- htpasswd: htpasswd.o
- ${CC} ${CFLAGS} ${LDFLAGS} htpasswd.o ${CRYPT_LIB} -o htpasswd
- htpasswd.o: htpasswd.c
- ${CC} ${CFLAGS} -c htpasswd.c
- cert: mini_httpd.pem
- mini_httpd.pem: mini_httpd.cnf
- openssl req -new -x509 -days 3650 -nodes -config mini_httpd.cnf -out mini_httpd.pem -keyout mini_httpd.pem
- openssl x509 -subject -dates -fingerprint -noout -in mini_httpd.pem
- chmod 600 mini_httpd.pem
- install: all
- rm -f ${BINDIR}/mini_httpd ${BINDIR}/htpasswd
- -mkdir -p ${BINDIR}
- cp mini_httpd htpasswd ${BINDIR}
- rm -f ${MANDIR}/man8/mini_httpd.8 ${MANDIR}/man1/htpasswd.1
- -mkdir -p ${MANDIR}/man8
- cp mini_httpd.8 ${MANDIR}/man8
- -mkdir -p ${MANDIR}/man1
- cp htpasswd.1 ${MANDIR}/man1
- clean:
- rm -f mini_httpd mime_encodings.h mime_types.h htpasswd mini_httpd.rnd *.o core core.* *.core
- tar:
- @name=`sed -n -e '/SERVER_SOFTWARE/!d' -e 's,.*mini_httpd/,mini_httpd-,' -e 's, .*,,p' version.h` ; \
- rm -rf $$name ; \
- mkdir $$name ; \
- tar cf - `cat FILES` | ( cd $$name ; tar xfBp - ) ; \
- chmod 644 $$name/Makefile $$name/mime_encodings.txt $$name/mime_types.txt ; \
- chmod 755 $$name/contrib $$name/contrib/redhat-rpm ; \
- tar cf $$name.tar $$name ; \
- rm -rf $$name ; \
- gzip $$name.tar
-
複製代碼 修改說明: 編譯支援SSL,採用redhat8 內建SSL /usr/share/ssl。 SSL_TREE = /usr/share/ssl SSL_DEFS = -DUSE_SSL SSL_INC = -I${SSL_TREE}/include SSL_LIBS = -L${SSL_TREE}/lib -lssl -lcrypto 修改ssl認證有效期間為10年, -days 3650 cert: mini_httpd.pem mini_httpd.pem: mini_httpd.cnf openssl req -new -x509 -days 3650 -nodes #make #make install 每次重新編譯前需要運行(make clean) -------------------------------------------------------------- 產生SSL認證: #make cert 安提示輸入認證資訊,即在目前的目錄下產生認證檔案mini_httpd.pem 拷貝該檔案到 /etc #cp ./mini_httpd.pem /etc -------------------------------------------------------------- 修改建立mini_httpd.conf 設定檔
- # mini_httpd configuration file
- data_dir=/usr/local/www
- #user=httpd
- port=443
- host=0.0.0.0
- cgipat=**.php
- logfile=/var/log/mini_httpd
- pidfile=/var/run/mini_httpd.pid
- charset=GB2312
- ssl
- certfile=/etc/mini_httpd.pem
-
複製代碼 拷貝該設定檔到 /etc目錄 #cp ./mini_httpd.conf /etc -------------------------------------------------------------- 建立php 測試指令碼test.php 如下:
- #!/usr/local/php/bin/php
- <?php
- phpinfo();
- ?>
-
複製代碼 拷貝該指令碼到,web 資料目錄 #cp ./test.php /usr/local/www 變更檔為可執行! #chmod +x /usr/local/www/test.php -------------------------------------------------------------- 配置WEB服務網卡IP #ifconfig eth0 192.168.1.1 up 啟動mini_httpd #mini_httpd -C /etc/mini_httpd.conf 用戶端測試URL https://192.168.1.1/test.php |