lighttpd - 윈디하나의 솔라나라
|
# wget https://www.zlib.net/zlib-1.3.1.tar.xz # tar xvfJ zlib-1.3.1.tar.xz # cd zlib-1.3.1 # ./configure --64 # make # make test ... *** zlib test OK *** ... *** zlib shared test OK *** ... *** zlib 64-bit test OK *** # sudo make install
# wget https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.bz2
# tar xvfj pcre-8.45.tar.bz2
# cd pcre-8.45
# ./configure CFLAGS="-I/usr/local/include"\
--enable-utf \
--enable-unicode-properties \
--enable-pcregrep-libz \
--enable-pcregrep-libbz2 \
--enable-newline-is-anycrlf \
--enable-pcre16 \
--enable-pcre32 \
--enable-jit \
--enable-pcretest-libedit \
CFLAGS="-m64" LDFLAGS="-m64" CXXFLAGS="-m64" 1)
# make
# sudo make install
1) pcretest에 라인 편집 기능이 필요하지 않다면 이 줄을 제외하고 빌드 해도 된다.
# wget http://dist.schmorp.de/libev/libev-4.33.tar.gz
# tar xvfz libev-4.33.tar.gz
# cd libev-4.33
# ./configure CFLAGS="-m64"
# make
# make install 1)
1) 만약 시스템에 libevent 가 설치되어있다면, libev 설치시 /usr/local/include/event.h
를 덮어쓴다. 따라서 libevent 를 사용하는 프로그램을 빌드할때 심볼을 찾지 못한다는 링크 오류가 발생할 수 있다. 이런경우 libevent 를 다시 설치하면 된다. libev 에서 덮어쓴 event.h 에는 주석으로 파일 상단에 libevent compatibility header, only core events supported
라고 써 있다.
windy@wl ~/src $ wget https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.55.tar.xz windy@wl ~/src $ tar xvfJ lighttpd-1.4.55.tar.xz windy@wl ~/src $ cd lighttpd-1.4.55 windy@wl ~/src/lighttpd-1.4.55 $ ./configure \ --prefix=/usr/local/lighttpd \ --with-libev \ --with-mysql=/usr/local/mysql/bin/mysql_config \ --with-openssl=/usr/local/ssl \ --with-pcre \ --with-zlib \ --with-bzip2 \ --with-geoip \ --with-sqlite \ --with-libxml \ --with-webdav-props \ --with-webdav-locks \ CFLAGS="-m64 -I/usr/local/include" LDFLAGS="-m64" windy@wl ~/src/lighttpd-1.4.55 $ make windy@wl ~/src/lighttpd-1.4.55 $ sudo make install기본 설정 파일들을 복사해놓는다.
windy@wl ~/src/lighttpd-1.4.55 $ sudo mkdir /etc/lighttpd windy@wl ~/src/lighttpd-1.4.55 $ sudo mkdir /etc/lighttpd/conf.d windy@wl ~/src/lighttpd-1.4.55 $ sudo mkdir /etc/lighttpd/vhosts.d windy@wl ~/src/lighttpd-1.4.55 $ sudo cp doc/config/lighttpd.conf doc/config/modules.conf /etc/lighttpd/ windy@wl ~/src/lighttpd-1.4.55 $ sudo cp doc/config/conf.d/*.conf /etc/lighttpd/conf.d/ windy@wl ~/src/lighttpd-1.4.55 $ sudo cp doc/config/vhosts.d/vhosts.template /etc/lighttpd/vhosts.d/
root@wl ~ # mkdir -p /var/log/lighttpd root@wl ~ # chmod daemon:daemon /var/log/lighttpd root@wl ~ # mkdir -p /srv/www/htdocs/ root@wl ~ # vi /etc/lighttpd/lighttpd.conf 1) server.use-ipv6 = "disable" server.username = "daemon" server.groupname = "daemon" server.event-handler = "solaris-eventports" 2) server.network-backend = "solaris-sendfilev" 2) server.stat-cache-engine = "simple" ##server.use-noatime = "enable" server.document-root = "/srv/www/htdocs/" #server.max-workers = 4;1) lighttpd.conf 파일이 설정 파일이다. 사용 가능한 설정을 샘플과 같이 설명하고 있으니, 읽어보면서 설정하면 된다. 아파치와 크게 다르지 않다.
root@wl ~ # vi /etc/lighttpd/lighttpd.conf server.modules 의 "mod_fastcgi" 주석을 제거 fastcgi.server = ( ".php" =>( "localhost" =>("host" => "127.0.0.1","port" => 9000 )))
root@wl ~ # vi /etc/lighttpd/lighttpd.conf server.modules = ( ... "mod_mysql_vhost", ... ) mysql-vhost.db = "lighttpd" mysql-vhost.user = "lighttpd" mysql-vhost.pass = "secret" #mysql-vhost.sock = "/tmp/mysql.sock" mysql-vhost.sql = "SELECT docroot FROM domains WHERE '?' like domain;" mysql-vhost.hostname = "localhost" mysql-vhost.port = 3306MySQL에서 사용자와 테이블을 미리 설정해 놓는다.
root@wl ~ # mysql GRANT SELECT ON lighttpd.* TO lighttpd@localhost IDENTIFIED BY 'secret'; FLUSH PRIVILEGES; CREATE DATABASE lighttpd; USE lighttpd; CREATE TABLE domains ( domain varchar(64) not null primary key, docroot varchar(128) not null ); INSERT INTO domains VALUES ('%.solanara.net', '/export/home/solanara/docroot'); INSERT INTO domains VALUES ('%.solarisschool.com', '/export/home/solarisschool/docroot');위 설정대로 하면 solanara.net 으로 들어오는 요청은 /export/home/solanara/docroot 을 베이스로 처리한다.
root@wl ~ # vi /etc/lighttpd/lighttpd.conf setup { ... module_load "mod_memcached"; ... } memcached.lookup (["server" => "127.0.0.1:11211", "ttl" => "30", "key" => "%{req.scheme}://%{req.host}%{req.path}", "maxsize" => "65535"], { header.add "X-Memcached" => "Hit"; }, { header.add "X-Memcached" => "Miss"; docroot "/export/home/solanara/docroot"; # 중요: memcached.store 앞에 컨텐츠 핸들러가 위치해야 함 static; memcached.store ["key" => "%{req.scheme}://%{req.host}%{req.path}"]; });
windy@wl ~ $ /usr/local/lighttpd/sbin/lighttpd -h lighttpd/1.4.55 (ssl) - a light and fast webserver usage: -f <name> filename of the config-file -m <name> module directory (default: /usr/local/lighttpd/lib) -i <secs> graceful shutdown after <secs> of inactivity -1 process single (one) request on stdin socket, then exit -p print the parsed config-file in internal form, and exit -t test config-file syntax, then exit -tt test config-file syntax, load and init modules, then exit -D don't go to background (default: go to background) -v show version -V show compile-time features -h show this helplighttpd-angel(8) 의 사용 방법도 동일하다.
lighttpd 는 범용 실행 스크립트를 제공하지 않는다. 소스 디렉토리의 ./doc/initscripts.txt
파일을 읽어보고 작성하자. 실행시 lighttpd(8)을 사용하기 보다 하단에 설명된 lighttpd-angel(8) 을 사용해 실행하자.
참고로 lighttpd 는 아래의 시그널을 사용한다.
lighttpd-angel 은 비 정상 종료시 재시작하고, SIGHUP 시그널을 받을 시 설정 파일 다시 로드하며, SIGINT/SIGTERM 시그널을 받을 시 안전하게 서버를 종료하는 기능이 추가되어있다. There Is an Angel for Lighty를 읽어보자. 자세한 사항은 170 라인 정도 되는 소스코드(src/lighttpd-angel.c
)를 보자.
windy@wl ~ $ sudo /usr/local/lighttpd/sbin/lighttpd-angel -f /etc/lighttpd/lighttpd.conf
windy@wl ~ $ sudo pkill lighttpd
RSS ATOM XHTML 5 CSS3 |
Copyright © 2004-2024 Jo HoSeok. All rights reserved. |