
Merecat은 Mongoose에서 말장난으로 시작했지만 이제는 실제 웹 서비스 목적에 유용합니다. 그러나 그것은 진짜 Meerkat이 아니며 Jef Poskanzer가 만든 위대한 THTTPD에서 나온 또 다른 카피 캣입니다.
Merecat httpd는 원래 THTTPD가 제공하는 기능을 확장하지만 여전히 제한된 기능 세트가 있습니다.
.htpassd 및 .htaccess 지원merecat.conf 에서 활성화 된 경우 php-cgi 사용하여 기본 PHP 지원결과 발자국 (~ 140 kib)은 소형 및 임베디드 시스템에 빠르고 적합합니다!
Merecat은 단순화 된 2- 클라스 BSD 라이센스에 따라 무료/오픈 소스 소프트웨어로 제공됩니다. 자세한 내용은 수동 페이지 merecat(8) 또는 FAQ를 참조하십시오.
이 README의 나머지 부분에는 몇 가지 기본 기능과 권장 사항이 포함됩니다. 보다 심층적 인 사용 사례 예는 다음 Howtos를 참조하십시오.
쉽게 배포 할 수 있도록 시스템의 나머지 부분에서 안전하게 분리 된 Docker Merecat을 사용해보십시오.
~USERNAME/public_html/ 에서 디렉토리를 보호하려면 포함 된 htpasswd 도구를 사용하여 .htpasswd 파일을 만듭니다.
user@example: ~ / > cd public_html/Downloads
user@example: ~ /public_html/Downloads/ > htpasswd -c .htpasswd friend
Changing password for user friend
New password: *****
Re-type new password: ***** configure 스크립트를 사용 하여이 기능 및 사용자 홈 디렉토리를 활성화하십시오. 아래 기능 섹션에서 자세한 내용을 참조하십시오.
서버에서 가상 호스트를 설정하는 것은 다른 웹 서버와 약간의 번거 로움이 될 수 있습니다. Merecat을 사용하면 웹 서버 루트의 각 호스트에 대한 디렉토리를 만듭니다.
/var/www/
|-- icons/
|-- cgi-bin/
|-- errors/
| `-- err404.html
|-- ftp.example.com/
`- www.example.com/
편집 /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
이제 웹 서버 루트 /var/www/ , 더 이상 파일을 제공하지 않으며, 가상 호스트 디렉토리 만 수행하고, 공유 파일의 icons/ , cgi-bin/ 및 errors/ .
에서 Linux 바인드 마운트를 사용하여 동일한 파일에 대한 FTP 및 웹 액세스를 설정할 수 있습니다. 예제 /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
웹 서버의 성능을 최적화하는 데 많은 트릭이 있습니다. 가장 중요한 것 중 하나는 브라우저 캐싱입니다. Merecat은 ETag: 및 Cache-Control: 모두 지원하지만 후자를 가능하게하려면 /etc/merecat.conf 에서 max-age 설정을 정의해야합니다.
max-age = 3600 # One hour
값은 완전히 사이트에 따라 다릅니다. 임베디드 시스템의 경우 최대 값으로 설정하는 반면 다른 시나리오의 경우 다른 것을 원할 것입니다. 기본적으로 이것은 비활성화됩니다 (0).
또 다른 요령은 gzip 압축을 사용하는 것입니다. Merecat은 동일한 파일의 .gz 버전이있는 경우 HTML, CSS 및 기타 text/* 파일을 제공하는 데 대한 지원이 내장되어 있습니다. 다음은 관련 파일을 압축하는 방법의 예입니다.
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; done이 접근법은 Merecat이 파일을 즉시 "디플레이트"하는 것보다 CPU 친화적입니다.
finds OpenSSL 설치를 configure HTTPS 지원이 활성화되면 --without-ssl 사용하여 비활성화 할 수 있습니다. 그러나 SSL/TLS 설정에 액세스하려면 merecat.conf 를 지원해야하므로 libconfuse를 설치해야합니다. 모든 빌드 요구 사항은 아래를 참조하십시오.
HTTPS 지원에는 기본적으로 SSLV2, SSLV3 및 TLSV1 비활성화 (하드 코드)가 있습니다. TLSV2 이상만 고객별로 활성화되고 협상됩니다.
https 용 merecat을 설정하려면 다음 /etc/merecat.conf 설정을 활성화해야합니다.
server secure {
port = 443
ssl {
certfile = /etc/letsencrypt/live/example.com/fullchain.pem
keyfile = /etc/letsencrypt/live/example.com/privkey.pem
dhfile = /etc/letsencrypt/live/example.com/dhparam.pem
}
}
Merecat은 HTTP-01 갱신을 포함하여 Let 's Encrypt 인증서를 전적으로 지원합니다. 서버 위치 지침 사용 :
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
path 서버 루트 디렉토리와 관련이 있어야합니다. 바인드 마운트를 사용하여 서버 루트에 /var/lib/letsencrypt 얻으십시오. 이렇게하면 certbot 자체 디렉토리에만 쓰고 서버 루트의 파일에 글을 쓸 수 없도록 할 수 있습니다.
그런 다음 다음 인수와 함께 certbot 실행 한 다음 Merecat에서 지원하려는 모든 가상 호스트를 추가하십시오.
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencrypt보는 방법 :
자체 서명 인증서를 만들고 완벽한 전진 비밀, PFS, IE Diffie-Helman 매개 변수 (선택 사항)를 활성화하려면 아래와 같이 openssl 도구를 사용하십시오. 대부분의 인증서 설정이있는 openssl.cnf 와 함께 하위 쉘 사용을 주목하고 더 중요한 것은 subjectAltName 또는 SAN의 사용을 주목하십시오. 후자는 오늘날 대부분의 브라우저에서 필요합니다.
root@example:/var/www/ > mkdir private certs
root@example:/var/www/ > openssl req -x509 -newkey rsa:4096 -nodes
-keyout private/server.key -new -out certs/server.pem
-subj /CN=www.acme.com -reqexts SAN -extensions SAN
-sha256 -days 3650 -config <( cat /etc/ssl/openssl.cnf
<( printf ' [SAN]nsubjectAltName=DNS:www.acme.com ' ) )
root@example:/var/www/ > openssl dhparam -out certs/dhparm.pem 4096두 개의 서버가있는 설정의 경우 다음 예제를 사용하여 포트 4443에서 HTTPS, 포트 8080의 HTTP를 실행하고 모든 액세스에서 HTTPS 서버로 리디렉션 할 수 있습니다.
server secure {
port = 4443
ssl {
certfile = certs/server.pem
keyfile = private/server.key
dhfile = certs/dhparm.pem
}
}
server default {
port = 8080
redirect "/**" {
code = 303
location = "https://$host:4443$request_uri$args"
}
}
지원되는 HTTP 리디렉션 코드는 301, 302, 303 및 307입니다.
위치 설정은 예제에 표시된대로 세 가지 nginx 스타일 변수를 지원합니다. 패턴 주위의 인용문에 주목하십시오. 그렇지 않으면 .conf 파서는 패턴이 C 스타일의 주석이라고 생각합니다.
Merecat은 몇 가지 외부 라이브러리에 따라 달라집니다. Debian/Ubuntu 시스템에서는 다음과 같이 의존성을 설치할 수 있습니다.
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev DEP를 구축하는 경우. 소스에서 기본값 /usr/local 의 설치 접두사를 사용하도록 할 수 있습니다. 비 Debian/Ubuntu 시스템은이 GNU 표준을 거의 지원하지 않으므로 Merecat configure 스크립트를 참조하는 방법은 다음과 같습니다.
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure /etc/merecat.conf 를 지원하지 않고 Merecat을 구축하려면 :
user@example: ~ /merecat/ > ./configure --without-config공개 된 타르 볼이 아닌 git 소스에서 구축 한 경우 다음을 기억하십시오.
user@example: ~ /merecat/ > ./autogen.sh httpd /usr/sbin/ , 기본 색인 및 아이콘으로 /var/www 에 설치하고 /etc/merecat.conf 로 구성 파일을 설치하십시오.
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install --host 플래그를 구성 스크립트로 설정하여 다른 대상에 대한 Cross Comping Merecat이 가능합니다. 이것은 GNU 문서에 잘 문서화되어 있습니다. 참고 : 일반적으로 --build 시스템은 자동으로 감지됩니다.
Merecat 빌드는 기본적으로 침묵합니다. 자세한 컴파일러 출력의 경우
configure --disable-silent-rules사용하여 Silent Mode를 비활성화하거나make V=1로 빌드하십시오.
Merecat은 프론트 엔드 merecat.c 및 독립형 HTTP 라이브러리 libhttpd.c 로 구성되어 있으며 다양한 방식으로 조정하고 필요한 경우 다른 응용 프로그램에 웹 서버를 포함시키는 데 사용할 수 있습니다.
가장 일반적인 옵션은 merecat 명령 줄과 merecat.conf 구성 파일에서 사용할 수 있습니다. 덜 일반적인 옵션은 configure 스크립트를 사용하여 활성화 할 수 있습니다.
--enable-builtin-icons Enable built-in icons for dir listings
--enable-htaccess Enable .htaccess files for access control
--enable-htpasswd Enable .htpasswd files for authentication
--enable-public-html Enable $HOME/public_html as ~USERNAME/
--enable-msie-padding Add padding to error messages for Internet Explorer
--disable-dirlisting Disable directory listings when no index file is found
--without-config Disable /etc/merecat.conf support using libConfuse
--without-ssl Disable HTTPS support, default: enabled
--without-symlinks Disable httpd and in.httpd symlinks to merecat
--without-zlib Disable mod_deflate (gzip) using zlib
소스 파일 merecat.h 에는 조정할 수있는 더 많은 기능이 있으며 일부 기능은 Man Page에 언급되어 있지만 헤더 파일에는 매우 유용한 주석도 있습니다.
Merecat은 STHTTPD의 포크로 웹 주위에 누워있는 많은 패치가 발견되었습니다. STHTTPD 프로젝트는 원래 THTTPD (Tiny/Turbo/Throttling HTTP 서버)의 포크입니다.