
MerecatはMongooseのしゃれとしてスタートしましたが、実際のWebサービングの目的に役立つようになりました。しかし、それは本当のMeerkatではなく、Jef Poskanzerによって作成された偉大なthttpdからフォークされたさらに別の模倣者です。
MereCAT HTTPDは、THTTPDが元々提供されていた機能を拡張しますが、まだ限られた機能セットがあります。
.htpassdおよび.htaccessサポートmerecat.confで有効にした場合、 php-cgiを使用したネイティブPHPサポート結果として得られたフットプリント(〜140キブ)により、小型および埋め込みシステムに迅速かつ適しています!
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スクリプトを使用して、この機能とユーザーホームディレクトリを有効にします。これについては、以下の機能セクションをご覧ください。
サーバーで仮想ホストをセットアップすることは、他のWebサーバーでは少し手間がかかる場合があります。 MereCatを使用すると、Webサーバールートの各ホストのディレクトリを作成するだけです。
/var/www/
|-- icons/
|-- cgi-bin/
|-- errors/
| `-- err404.html
|-- ftp.example.com/
`- www.example.com/
edit /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
これで、Webサーバールート、 /var/www/は、ファイルを提供しなくなり、仮想ホストディレクトリのみが行い、 icons/ 、 cgi-bin/ 、およびerrors/の共有ファイルを実行します。
Linuxのバインドマウントを使用して、同じファイルへのFTPとWebアクセスをセットアップできます。例/etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Webサーバーのパフォーマンスを最適化するための多くのトリックがあります。最も重要なものの1つは、ブラウザのキャッシュです。 MereCATはETag:とCache-Control:ただし、後者を有効にするには、 /etc/merecat.confでmax-age設定を定義する必要があります。
max-age = 3600 # One hour
値は完全にサイトに依存しています。組み込みシステムの場合、それを最大値に設定することをお勧めしますが、他のシナリオでは他のものが必要になる可能性があります。デフォルトでは、これは無効です(0)。
もう1つのトリックは、 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フレンドリーです。
configure finds openSSLインストールされている場合、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更新を含む証明書を暗号化することを完全にサポートしています。サーバーの場所指令を使用してください:
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、つまり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 40962つのサーバーを備えたセットアップの場合、次の例を使用して、ポート4443、ポート8080でHTTPで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です。
位置設定は、例に示すように、3つのNginxスタイル変数をサポートします。パターンの周りの引用符、または.confパーサーは、パターンがCスタイルのコメントであると考えます。
MereCATは、有効にすると、OpenSSL、Zlib、Libconfuseなどのいくつかの外部ライブラリに依存します。 Debian/ubuntuシステムでは、依存関係をインストールできます。
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Depsを構築する場合。ソースから、 /usr/localのインストールプレフィックスをデフォルトで使用する場合があります。 Non 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に、およびconfig file to /etc/merecat.confに設置するには:
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install Configureスクリプトに--hostフラグを設定することにより、別のターゲットのクロスコンパイルを別のターゲットにすることが可能です。これは、GNUのドキュメントで十分に文書化されています。注:通常、 --buildシステムは自動的に検出されます。
MereCATビルドはデフォルトでサイレントです。詳細なコンパイラ出力の場合、
configure --disable-silent-rules、またはmake V=1でビルドします。
MereCATは、フロントエンドのmerecat.cとスタンドアロンHTTPライブラリlibhttpd.cで構成されており、さまざまな方法で調整し、必要に応じて別のアプリケーションにWebサーバーを埋め込むために使用できます。
最も一般的なオプションは、 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ページに記載されていますが、ヘッダーファイルには非常に便利なコメントもあります。
Merecatは、Webの周りに横たわっている多くの失われたパッチが見つかったSthttpdのスタッチアップフォークです。 STHTTPDプロジェクトは、元のTHTTPD(Tiny/Turbo/Throttling HTTPサーバー)のフォークです。