
Merecat начинался как каламбур в Mongoose, но в настоящее время полезен для реальных целей веб -сервировки. Однако это не настоящий сурикат, просто еще один подражатель, раздвоенный от великого thttpd, созданного Джефом Посканцером.
Merecat httpd расширяет функции, первоначально предлагаемые THTTPD, но все еще имеет ограниченный набор функций:
.htpassd и .htaccess поддержкаphp-cgi если включена в merecat.confПолученный след (~ 140 киб) делает его быстрым и подходящим для небольших и встроенных систем!
Merecat доступен в виде бесплатного/с открытым исходным программным обеспечением по упрощенной лицензии BSD на 2 пункта. Для получения дополнительной информации см. Руководство merecat(8) или FAQ.
Остальная часть этого чтения охватывает некоторые основные функции и рекомендации. Для более подробных примеров использования, см. Следующий 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
}
Теперь root веб-сервера, /var/www/ , больше не обслуживает файлы, только виртуальные каталоги хоста делают, execpt для общих файлов в icons/ , cgi-bin/ , и errors/ .
На Linux Bind Mounts можно использовать для настройки FTP и веб -доступа к тем же файлам. Пример /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Есть много хитростей для оптимизации производительности вашего веб -сервера. Одним из самых важных из них является кэширование браузера. Merecat поддерживает как ETag: и Cache-Control: однако, чтобы позволить последнему вам необходимо определить настройку max-age в /etc/merecat.conf :
max-age = 3600 # One hour
Значение полностью зависит от сайта. Для встроенной системы вы, возможно, захотите установить ее на максимальное значение, тогда как для других сценариев вы, вероятно, захотите что -то еще. По умолчанию это отключено (0).
Еще один трюк - использовать сжатие gzip . Merecat обладает встроенной поддержкой для обслуживания файлов HTML, CSS и других text/* , если есть версия того же файла .gz . Вот пример того, как сжать соответствующие файлы:
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 «дефляция» файлы на лету, что он иначе делает.
Если configure Finds OpenSSL установлена, поддержка HTTPS включена, это может быть отключено с помощью --without-ssl . Однако, чтобы получить доступ к настройкам SSL/TLS, вам также нужна поддержка merecat.conf , поэтому вы должны установить LibConfuse. См. Ниже для всех требований к сборке.
Поддержка HTTPS имеет SSLV2, SSLV3 и TLSV1 отключен (жестко кодированный) по умолчанию. Только TLSV2, а затем будут включены и согласованы по клиенту.
Чтобы настроить MereCat для HTTPS. Настройки /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 полностью поддерживает сертификаты Let's Encrypt, включая обновления 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 должен быть относительно сервера корневого каталога. Используйте Mint Mounts для получения /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Для настройки с двумя серверами можно использовать следующий пример для запуска HTTPS на порте 4443, HTTP на порту 8080 и перенаправление на сервер 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 зависит от нескольких внешних библиотек, если включен, например, OpenSSL, Zlib и Libconfuse. В системах Debian/Ubuntu вы можете установить зависимости:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Если вы построите DEPS. Из источника они могут по умолчанию использовать префикс установки /usr/local . Non Debian/Ubuntu Systems редко поддерживает этот стандарт GNU, так что вот как вы ссылаетесь на его сценарий Merecat configure :
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure Чтобы построить Merecat без поддержки /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --without-configЕсли вы строите из источников GIT, а не выпущенный Tarball, помните:
user@example: ~ /merecat/ > ./autogen.sh Чтобы установить httpd в /usr/sbin/ , индекс и значки по умолчанию в /var/www , и config в файл /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install Cross Compling Merecat для другой цели возможна, установив флаг --host на сценарий Configure. Это хорошо задокументировано в документации GNU. Примечание. Обычно система --build автоматически обнаруживается.
Сборки Merecat по умолчанию молчат. Для получения подробного вывода компилятора отключите Silent Mode с помощью
configure --disable-silent-rulesили постройте с помощью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 есть еще больше функций, которые можно настроить, некоторые из них упоминаются на странице «Человек», но в файле заголовка также есть очень полезные комментарии.
Merecat - это вилка sthttpd с множеством потерянных патчей, найденных в Интернете. Проект STHTTPD, в свою очередь, представляет собой вилку из оригинального THTTPD - Tiny/Turbo/Throttling HTTP -сервер.