Самый простейший и легковесный http-сервер?
Какой простейший и самый легковесный HTTP сервер вы можете посоветовать? Чтобы никаких лишних примочек, никакой поддержки интерпретаторов. Чтобы умел только показывать файлы и содержимое директории и занимал минимум памяти. Хочется воткнуть такой на Raspberry Pi.
Даже без нагрузки требует в 4 раза больше памяти чем nginx.
Старенький apache-ик без модулей?
В чём преимущество старенького apache перед новеньким nginx?
На правах вопроса, а lighthttpd чем не light?
raspberry вполне себе и полновесный апач потянет
lighttpd всегда ставлю. Даже на 256 метрах WD MBL хорошо себя вел.
nginx и postfix (для пересылки на гуглоящик) на заNATном сервере за 3 бакса в год. Крутит мои статичные сайтцы. Потребляет 8МБ памяти.
Сами пробовали что советуете?
Only Supports: gif jpg jpeg png ico zip gz tar htm html json
Спасибо! Думаю, ничего легковеснее просто не бывает. Разве что кто-нибудь сподобится написать его на ассемблере.
На всякий случай, вот его запускалка для systemd. Вдруг кому понадобится.
1. Это не легковесный сервер.
2. Он не для продакшена даже, если ваш сайт это одна страничка посвящённая вашему котику.
3. На 80 порт повесите от рута что ли?
А что это за сервер такой?
Там на сайте чёрт ногу сломит.
Вот их подсайт с натами i-83.net. (128МБ закончились.)
https://gist.github.com/alexey-sveshnikov/3a109b61ce6241770a86
:;while [ $? -eq 0 ];do nc -vlp 8080 -c'(r=read;e=echo;$r a b c;z=$r;while [ $ <#z>-gt 2 ];do $r z;done;f=`$e $b|sed ‘s/[^a-z0-9_.-]//gi’`;h=«HTTP/1.0»;o=«$h 200 OK\r\n»;c=«Content»;if [ -z «$f» ];then ($e $o;(for n in *;do if [ -f «$n» ]; then $e «`ls -gh \»$n\«`
»;fi;done););elif [ -f «$f» ];then $e «$o$c-Type: `file -ib \»$f\«`\n$c-Length: `stat -c%s \»$f\«`»;$e;$e $f>&2;cat «$f»;else $e -e «$h 404 Not Found\n\n404\n»;fi)’;done
Уриэль в гробу переворачивается.
А почему бы и нет? У меня на Raspberry Pi арч, у него встроенный systemd, почему я не могу использовать его встроенные функции для запуска? Не bash скриптом же его запускать вручную.
Он очень даже лёгкий. На всяких мелких впс за пару баксов в год с 64-128 памяти lighttpd вполне неплохо себя чувствует.
Источник
Static http server linux
Static Web Server
A blazing fast and asynchronous web server for static files-serving. ⚡
Static Web Server (or SWServer abbreviated) is a very small and fast production-ready web server suitable to serve static web files or assets.
Note: For v1 please refer to 1.x branch.
- Built with Rust which is focused on safety, speed, and concurrency.
- Memory safety and very reduced CPU and RAM overhead.
- Blazing fast static files-serving and asynchronous powered by latest Hyper, Tokio and a set of awesome crates.
- Single 4MB and fully static binary with no dependencies (Musl libc). Suitable for running on any Linux distro or Docker container.
- Optional GZip, Deflate or Brotli compression for text-based web files only.
- Compression on demand via Accept-Encoding header.
- Partial Content Delivery support for byte-serving of large files.
- Optional Cache Control headers for assets.
- HEAD responses.
- Lightweight and configurable logging via tracing crate.
- Termination signal handling.
- HTTP/2 + TLS support.
- Security headers for HTTP/2 by default.
- Customizable number of worker threads.
- Optional directory listing.
- CORS support.
- Default and custom error pages.
- Configurable using CLI arguments or environment variables.
- First-class Docker support. Scratch and latest Alpine Linux Docker images available.
- Ability to accept a socket listener as a file descriptor for use in sandboxing and on-demand applications (E.g systemd).
- Cross-platform. Binaries available for Linux, macOS, Windows & FreeBSD x86_64 / ARM.
- x86
- i686-unknown-linux-gnu
- i686-unknown-linux-musl
- x86_64
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- ARM
- arm-unknown-linux-gnueabihf
- ARM64
- aarch64-unknown-linux-musl
- aarch64-unknown-linux-gnu
- x86_64
- x86_64-apple-darwin
- ARM64
- aarch64-apple-darwin
- x86
- i686-pc-windows-msvc
- x86_64
- x86_64-pc-windows-msvc
- x86_64-pc-windows-gnu
- ARM64
- aarch64-pc-windows-msvc (temporarily disabled until briansmith/ring#1167)
- x86
- i686-unknown-freebsd
- x86_64
- x86_64-unknown-freebsd
Server can be configured either via environment variables or their equivalent command-line arguments.
Variable | Description | Default |
---|---|---|
SERVER_HOST | Host address (E.g 127.0.0.1). | Default [::] . |
SERVER_PORT | Host port. | Default 80 . |
SERVER_LISTEN_FD | Optional file descriptor number (e.g. 0 ) to inherit an already-opened TCP listener on (instead of using SERVER_HOST and/or SERVER_PORT ). | |
SERVER_ROOT | Root directory path of static | Default ./public . |
SERVER_LOG_LEVEL | Specify a logging level in lower case. (Values error , warn , info , debug , trace ). | Default error |
SERVER_ERROR_PAGE_404 | HTML file path for 404 errors. | If path is not specified or simply don’t exists then server will use a generic HTML error message. Default ./public/404.html . |
SERVER_ERROR_PAGE_50X | HTML file path for 50x errors. | If path is not specified or simply don’t exists then server will use a generic HTML error message. Default ./public/50x.html |
SERVER_THREADS_MULTIPLIER | Number of worker threads multiplier that’ll be multiplied by the number of system CPUs using the formula: worker threads = number of CPUs * n where n is the value that changes here. When multiplier value is 0 or 1 then the number of CPUs is used. Number of worker threads result should be a number between 1 and 32,768 though it is advised to keep this value on the smaller side. | Default one thread per core. |
SERVER_HTTP2_TLS | Enable HTTP/2 with TLS support. Make sure also to adjust current server port. | Default false |
SERVER_HTTP2_TLS_CERT | Specify the file path to read the certificate. | Default empty |
SERVER_HTTP2_TLS_KEY | Specify the file path to read the private key. | Default empty |
SERVER_CORS_ALLOW_ORIGINS | Specify a optional CORS list of allowed origin hosts separated by comas. Host ports or protocols aren’t being checked. Use an asterisk (*) to allow any host. | Default empty (which means CORS is disabled) |
SERVER_COMPRESSION | Gzip, Deflate or Brotli compression on demand determined by the Accept-Encoding header and applied to text-based web file types only. See ad-hoc mime-type list | Default true (enabled) |
SERVER_DIRECTORY_LISTING | Enable directory listing for all requests ending with the slash character (‘/’) | Default false (disabled) |
SERVER_SECURITY_HEADERS | Enable security headers by default when HTTP/2 feature is activated. Headers included: Strict-Transport-Security: max-age=63072000; includeSubDomains; preload (2 years max-age), X-Frame-Options: DENY , X-XSS-Protection: 1; mode=block and Content-Security-Policy: frame-ancestors ‘self’ | Default false (disabled) |
SERVER_CACHE_CONTROL_HEADERS | Enable cache control headers for incoming requests based on a set of file types. The file type list can be found on src/control_headers.rs file. | Default true (enabled) |
CLI arguments listed with static-web-server -h .
HTML file path for 404 errors. If path is not specified or simply don’t exists then server will use a generic HTML error message [env: SERVER_ERROR_PAGE_404=] [default: ./public/404.html] —page50x
HTML file path for 50x errors. If path is not specified or simply don’t exists then server will use a generic HTML error message [env: SERVER_ERROR_PAGE_50X=] [default: ./public/50x.html] -p, —port
Host port [env: SERVER_PORT=] [default: 80] -d, —root Root directory path of static files [env: SERVER_ROOT=] [default: ./public] —security-headers Enable security headers by default when HTTP/2 feature is activated. Headers included: «Strict-Transport- Security: max-age=63072000; includeSubDomains; preload» (2 years max-age), «X-Frame- Options: DENY», «X-XSS-Protection: 1; mode=block» and «Content-Security-Policy: frame-ancestors ‘self'» [env: SERVER_SECURITY_HEADERS=] [default: false] -n, —threads-multiplier
Use of file descriptor socket passing
Example systemd unit files for socket activation are included in the systemd/ directory. If using inetd , its » wait » option should be used in conjunction with static-web-server’s —fd 0 option.
Источник
Локальный веб-сервер под Linux, с автоматическим поднятием хостов и переключением версий PHP
Скорее всего какие-то части этой статьи уже знакомы многим хаброжителям, но в связи с покупкой нового рабочего ноутбука я решил собрать все крупинки воедино и организовать удобное средство для разработки. Мне часто приходится работать со множеством маленьких проектов, с разными версиями PHP, часто переводить старые проекты на новые версии. В далёком прошлом, когда я был пользователем Windows то использовал OpenServer. Но с переходом на Linux мне нехватало той простоты создания хостов и переключений версий которые были в нём. Поэтому пришлось сделать еще более удобное решение на Linux =)
будет запущен тот же файл но уже с версией PHP 7.2.7
Другие версии доставляются аналогичным описанным ниже способом.
Для создания еще одного сайта просто создаем в /var/www/ папку имеющую окончание .loc, внутри которой должна быть папка public_html являющаяся корнем сайта
Вот собственно и все. Как без дополнительных мучений, перезапусков, и редактирований конфигов имеем автоматическую систему для работы с сайтами.
Всё это я проверну на LinuxMint19, он на базе Ubuntu18.04, так что с ним все будет аналогично.
Для начала поставим необходимые пакеты
Postfix ставим в качестве плюшки, как простое решение(в мастере установки, всё по умолчанию выбираем) для отправки почты с локальной машины.
Так как это локальная разработка и я единственный пользователь. То мне удобней перенести папку с проектами в мою домашнюю дерикторию. Она у меня маунтится отдельным диском и мигрирует при переустановке системы. Самый простой способ это создать ссылку, тогда не нужно менять пути в настройках да и путь привычный для всех.
Скопируем папку созданную апачем в домашний каталог, создадим на ее месте ссылку, не забыв поменять пользователя на себя и обменяться группами с апачем.
Создадим папку в которой будем собирать исходники PHP для разных версий
Также нам понадобится папки для CGI скриптов
И runtime папка для этих же скриптов, с правами
И так как каталог у нас находится в оперативной памяти, добавим его создание при старте системы, для этого добавим в /etc/tmpfiles.d/fcgid.conf
У меня dnsmasq-base идет с коробки, если нет то его всегда можно доставить.
Добавим правило в его конфигурацию. Найти файл конфигурации dnsmasq.conf можно так
Либо если он как и у меня является частью NetworkManager то создать новый файл конфигурации в /etc/NetworkManager/dnsmasq.d/local.conf
Добавим в него строчку для перенаправление нашего локального домена на локальную машину.
Также нужно включить необходимые модули апача
Предварительная подготовка завершена, приступаем к сборке различных локальных версий PHP. Для каждой версии PHP проделываем следующие 4 шага. На примере 5.6.36
1. Скачиваем исходники нужной версии и распаковываем их
2. Cобираем из исходников нужную версию PHP, и помещаем ее в /opt/php-5.6.36
3. Создаем CGI для обработки этой версии в /var/www/cgi-bin/php-5.6.36.fcgi
4. Делаем файл исполняемым
5. Добавляем экшен для обработки каждой версии в /etc/apache2/mods-available/fcgid.conf
6. Добавляем правило для обработки каждой версии в /etc/apache2/sites-available/000-default.conf
Ну вот и всё. Осталось только перезапустить apache и dnsmasq и пользоваться
Источник