LINUX.ORG.RU
решено ФорумAdmin

Ищу производительный HTTP файловый сервер

 , ,


0

2

Сейчас пока работает всё через vsftpd, но минусы его в том, что работает по ftp протоколу, однако скорость отдаёт ту, что должен (тобишь максимальную скорость отдачи, а не как WebFS... Урезанную...).

Пробовал:

  • SimpleHTTPServer на Python (Ложится при использовании на synctube, не демон)
  • WebFS (низкая скорость отдачи, вместо 10-12Mb/s — 3-4)
  • И другие... Уже не припомню...

В общем, нужен простой файловый сервер «для дома» Критерии:

  • «Нативность» (Не HFS, ибо через Wine работает)
  • Выдавал список файлов из нужной директории
  • Желательно, поддерживал кириллицу и другие спец.символы адекватно (у WebFS промах с этим)
  • Отдавал нормальную скорость
  • Был «демоном»
  • Отдавал прямые ссылки на файлы

+ такие фишки как смена шаблонов и прочее, крайне приветствуются :)

Буду благодарен за любую информацию... Если можно быстро поднять такой сервер с помощью того-же апача или nginx, то буду рад мануалам.

Немного характеристик:

ОС: xUbuntu 16.04 amd64
Ядро: 4.4.13-040413-lowlatency
Ram: 8GB
CPU: AMD A4-6300 3.7Ghz x2

Думаю остальные характеристики вам ни к чему...

python -m SimpleHTTPServer

гугли в сторону fuse в частности sshfs

$ eix -S fuse -c
[N] app-misc/ofl ((~)20110721): Open file lister (replaces fuser and lsof -m)
[N] dev-libs/go-fuse ((~)0_p20150422): native bindings for the FUSE kernel module
[N] dev-perl/Fuse (0.16.1): Fuse module for perl
[N] dev-python/fuse-python (0.2.1-r1): Python FUSE bindings
[N] dev-python/llfuse ((~)1.0): Python bindings for the low-level FUSE API
[N] media-gfx/gphotofs (0.5): FUSE file system for interfacing with digital cameras using gphoto2
[N] media-gfx/slic3r ((~)1.2.9-r2): A mesh slicer to generate G-code for fused-filament-fabrication (3D printers)
 net-fs/curlftpfs (0.9.2-r3@19.11.2014): File system for accessing ftp hosts based on FUSE
[N] net-fs/davfs2 ((~)1.5.4): Linux FUSE (or coda) driver that allows you to mount a WebDAV resource
[N] net-fs/smbnetfs ((~)0.6.0-r1): FUSE filesystem for SMB shares
[N] sys-fs/archivemount ((~)0.8.7): Mount archives using libarchive and FUSE
[N] sys-fs/bindfs ((~)1.13.1): FUSE filesystem for mounting a directory to another location and altering permissions
[N] sys-fs/clamfs ((~)1.0.1-r2): A FUSE-based user-space file system with on-access anti-virus file scanning
[N] sys-fs/cloudfuse ((~)1.0): A FUSE filesystem for Rackspace's Cloud Files
[N] sys-fs/copyfs ((~)1.0.1): fuse-based filesystem for maintaining configuration files
[N] sys-fs/encfs ((~)1.8.1-r1): An implementation of encrypted filesystem in user-space using FUSE
[N] sys-fs/etcd-fs ((~)0_p20140620): Use etcd as a FUSE filesystem
[N] sys-fs/fur ((~)0.5): A RAPI (SynCE) based FUSE module
[N] sys-fs/fuse-convmvfs ((~)0.2.6): FUSE file system to convert filename charset
[N] sys-fs/fuse-exfat ((~)1.2.4): exFAT filesystem FUSE module
[N] sys-fs/fuse-zip ((~)0.4.0): FUSE file system to navigate, extract, create and modify ZIP archives
[N] sys-fs/fuse4bsd (--): Fuse for FreeBSD
 sys-fs/fuseiso (20070708-r1@19.11.2014): Fuse module to mount ISO9660
[N] sys-fs/go-mtpfs (--): a simple FUSE filesystem for mounting Android devices as a MTP device
[N] sys-fs/jmtpfs ((~)0.5): A FUSE and libmtp based filesystem for accessing MTP devices
[N] sys-fs/ldapfuse ((~)1.0): A virtual filesystem for FUSE which allows navigation of an LDAP tree
[N] sys-fs/lufis ((~)0.3): Wrapper to use lufs modules with fuse kernel support
[N] sys-fs/lxcfs ((~)2.0.1): FUSE filesystem for LXC
[N] sys-fs/mhddfs (0.1.39): Fuse multi harddrive filesystem
[N] sys-fs/mp3fs (0.91): a read-only FUSE filesystem which transcodes FLAC audio files to MP3 when read
[N] sys-fs/mtpfs ((~)1.1-r3): A FUSE filesystem providing access to MTP devices
 sys-fs/ntfs3g (2016.2.22-r1@24.05.2016): Open source read-write NTFS driver that runs under FUSE
[N] sys-fs/obexfs ((~)0.12): FUSE filesystem interface for ObexFTP
[N] sys-fs/rar2fs ((~)1.22.0): A FUSE based filesystem that can mount one or multiple RAR archive(s)
[N] sys-fs/rarfs ((~)0.1.1): Fuse module to mount uncompressed RAR archives
[N] sys-fs/s3backer ((~)1.3.7): FUSE-based single file backing store via Amazon S3
[N] sys-fs/s3fs ((~)1.78): Amazon mounting S3 via fuse
[N] sys-fs/simple-mtpfs ((~)0.2): Simple MTP fuse filesystem driver
 sys-fs/squashfuse (0.1_p20130530@17.01.2015): FUSE filesystem to mount squashfs archives
 sys-fs/sshfs (2.7@26.03.2016): Fuse-filesystem utilizing the sftp service
[N] sys-fs/unionfs-fuse ((~)1.0): Self-syncing tree-merging file system based on FUSE
[N] sys-process/fuser-bsd (--): fuser(1) utility for *BSD

з.ы. кто-то «починил» [pre]

anTaRes ★★★★ ()
Последнее исправление: anTaRes (всего исправлений: 4)

Это поднимается с того же nginx за две минуты практически дефолтным конфигом. Мануал на nginx.org.

staseg ★★★★★ ()
Ответ на: комментарий от anTaRes

Не-не-не... Не в ту сторону... Мне нужно чтобы всё работало по HTTP протоколу, грубо говоря, «с любого браузера и любого устройства». Думаю SSH - совсем не в ту сторону

PowerSlime ()

меня одного удивляет что ТС среди всех имеющихся в мире веб серверов проигнорировал первые два популярных в мире? я читаю и вижу какие-то ноунеймы на которые он жалуется

это что, новый сорт хипстоты повалил?

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

Дык он не осилил их сконфигурировать, читай внимательно, где-то в конце.

staseg ★★★★★ ()

Ищу свистоперделку, но то что вы посоветуете не то что мне нужно, потому какую свистоперделку использовать?

kachan ★★ ()
Ответ на: комментарий от staseg

ага, а потом такие «ойтишники» идут на работу и начинается веселье...

reprimand ★★★★★ ()
Ответ на: комментарий от staseg

В целом, под Nginx всё работает... Оказалось проще чем ожидал, но нет «обертки». Чтобы можно было через Web лазить по директориям. Как это реализовано в том-же SimpleHTTPServer в Python

PowerSlime ()
Ответ на: комментарий от pawnhearts

Скорость отдачи, та же, что и у WebFS, так-же не умеет «показывать» кириллицу.

Сейчас конфиг выглядит следующим образом, можно ли как-то «снять ограничение» на отдачу?

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {
	server {
		location / {
			root /home/powerslime/.ftp;
			autoindex on;
		}
	}
}

PowerSlime ()

апач, nginx. всё поднимается довольно быстро.

AndreyKl ★★★★★ ()

sudo apt-get install apache2 -> настроить виртуальный хост -> sudo a2ensite “config_name” -> sudo service apache2 reload

anonymous ()
Ответ на: комментарий от PowerSlime

worker_connnections 4; # больше не нужно тебе точно

кирилицу он «показывать» умеет.

http {
	server {
		location / {
			root /home/powerslime/.ftp;
			autoindex on;
                        charset utf-8;
		}
	}
}

AndreyKl ★★★★★ ()
Ответ на: комментарий от Deleted

Да, тоже добавил. Надо будет уже завтра снова на скорость посмотреть, ибо что-то вечером уже выше 4 не поднимается...

А можно-ли как-то «локально» тестировать на скорость настройки сервера?

PowerSlime ()

Прошу прощения у ТС за штраф -17 к удалению, это вышло случайно. Справедливость по мере возможности восстановил. Пострадавшим по 7.1 ничего сделать не могу :(

leave ★★★★★ ()
Ответ на: комментарий от leave

вот и живи теперь с этим

з.ы. и пни когонть, чтоб починили [pre] обратно

anTaRes ★★★★ ()
Последнее исправление: anTaRes (всего исправлений: 1)
Ответ на: комментарий от PowerSlime

Ммм ну по уму и нужно локально тестить. Иначе ты то ли канал тестишь то ли хз что.

matrixd ()
Ответ на: комментарий от matrixd

Просто проблема в том, что по локалке всегда доступен сервер, а как начинает идти запрос — либо отдаёт «не со всех сил», либо недоступен у всех...

А способ тестирования локально, исключая прямое выкачивание файла из браузера и одновременное слежение за системным монитором есть? :)

PowerSlime ()

Какое-то время использовал nginx, но для всякой динамики (PHP/CGI) слишком много возни, вернулся на Apache. Расшарить каталог в обоих элементарно.

anonymous ()

смена шаблонов

Что это? Тебе вебморда с красивостями нужна, что ли?
Если нет, то apache httpd + mod_dav.
Если нужна вемборда, но скромная - sabre dav.

BTW, наколбасить двумя пальцами красивый листинг каталогов в голом апаче - тоже нифига не rocket science.

thesis ★★★★★ ()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Вчера поднял на NGinx, сегодня на Apache2... У обоих скорость тодачи выше 4Мб/c не поднимается...

P.S. Отдача не в локальной сети.

Такое ощущение, что искусственно отдача «блочится». Ниже приложу оба конфига, один от Nginx, второй от Apache. (Естественно Nginx отключаю когда работаю с апачем, имхо оба 80-ый порт, все дела...)

<VirtualHost *:80>
    ServerAdmin **** # С E-Mail так-же как и с доменным именем
	ServerName **** # Тут доменное имя, но я скрыл, зачем оно вам :)

    DocumentRoot /var/www/FTP # Стоит ссылка на /home/powerslime/.ftp, по другому не хватало прав... Костыль .-.
	<Directory '/var/www/FTP/'>
		AllowOverride All
		Allow From All
	</Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
+ костыль в виде .htaccess в каталоге
Options +Indexes
IndexOptions FancyIndexing XHTML NameWidth=* FoldersFirst SuppressDescription IgnoreCase SuppressHTMLPreamble HTMLTable Charset=UTF-8

Конфиг Nginx

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
	worker_connections 16;
	# multi_accept on;
}

http {
	access_log	/var/log/nginx/access.log;
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 15;

	server {
		listen 80;
		server_name ****; # Домен скрыт

		location / {
			root /home/powerslime/.ftp;
			autoindex on;
			autoindex_exact_size off;
			charset utf-8;
		}
	}
}

Кстати, интересная особенность, Apache отдаёт «метаданные» о типе файла и по этому с ним работает Synchtube, с Nginx нет, возможно из-за моих кривых конфигов .-.

И еще один вопрос... Состояние демона сохраняется после перезагрузки? Тобишь если я офну nginx, но оставлю Apache, после ребута nginx не стартанёт сам по себе и не вызовет конфликт, ибо всё на 80-ом порте работает...

PowerSlime ()
Ответ на: комментарий от PowerSlime

Такое ощущение, что искусственно отдача «блочится»

Похоже. И это делает не апач/нжынкс. Вешай iperf на 80й порт сервера (iperf -s -p 80, перед этим погаси веб-серверы)и смотри скорость с клиента (iperf -c server_ip -p 80).

костыль в виде .htaccess

...легко перетаскивается в секцию «Directory», заодно AllowOverride переключается в none, ибо нефиг.

если я офну nginx, но оставлю Apache, после ребута nginx не стартанёт сам по себе

Если скажешь ему не стартовать - не стартанет. Я не знаю, кто там в убунте нынче заправляет демонами, если systemd, то systemctl disable nginx или типа того.

thesis ★★★★★ ()
Ответ на: комментарий от thesis

Похоже. И это делает не апач/нжынкс. Вешай iperf на 80й порт сервера (iperf -s -p 80, перед этим погаси веб-серверы)и смотри скорость с клиента (iperf -c server_ip -p 80).

дополню и если проблема в этом, повесь сервак на другой порт.

anc ★★★★★ ()
Ответ на: комментарий от anc

Да, проблема заключалась в том, что через 80 порт трафик «шел медленно»... С чем может быть связанно такое странное поведение?

PowerSlime ()
Ответ на: комментарий от thesis

Если скажешь ему не стартовать - не стартанет. Я не знаю, кто там в убунте нынче заправляет демонами, если systemd, то systemctl disable nginx или типа того.

systemctl disable nginx.core сделал, в итоге после даже апач запустить не смог, ушел в ребут, всё нормально.

Сделал через sysv-rc-conf, убрал с Nginx и WebFS все «Runlevel'ы», вроде должно отключить демонов.

P.S. Документация по бубунте, в неё про отключении служб нашел ссылка

PowerSlime ()
Ответ на: комментарий от PowerSlime

+ не очень удобно каждый раз порт прописывать в браузере чтобы к сайту обратиться... Надо с Hosts и портами на модеме поиграться.

PowerSlime ()
Ответ на: комментарий от PowerSlime

А этого мы не знаем. Начиная от проблемы на ваших системах, заканчивая провами. Попробуйте протестировать варианты 1. клиент через другого прова 2. сервер перенести в другое место. 3. пункт1+2 Так и поймете где узкое место.

anc ★★★★★ ()
Ответ на: комментарий от PowerSlime

+ не очень удобно каждый раз порт прописывать в браузере чтобы к сайту обратиться...

Если проблема только в этом, пропишите редирект на другой порт что бы автоматом перекидывало.

anc ★★★★★ ()
Ответ на: комментарий от anc

Если проблема только в этом, пропишите редирект на другой порт что бы автоматом перекидывало.

Насколько понимаю, сделать .htaccess в отдельной директории, в которой будет перекидывать на желаемый порт?

А этого мы не знаем. Начиная от проблемы на ваших системах, заканчивая провами. Попробуйте протестировать варианты 1. клиент через другого прова 2. сервер перенести в другое место. 3. пункт1+2 Так и поймете где узкое место.

Под «провами» вы подразумеваете провайдера? А с 2-ым пунктом — другую машину?

PowerSlime ()
Ответ на: комментарий от PowerSlime

Насколько понимаю, сделать .htaccess в отдельной директории, в которой будет перекидывать на желаемый порт?

Можно в конфиге самого апача прописать. Смотрите примеры в инете, их много.

Под «провами» вы подразумеваете провайдера?

Да.

А с 2-ым пунктом — другую машину?

Сервак работающий через другого провайдера.

anc ★★★★★ ()

lighttpd/nginx + php + h5ai

Стильно, модно, молодёжно.

Radjah ★★★★★ ()
Ответ на: комментарий от Radjah

Оо... «Симпотичная» обертка... Насколько понял это что-то а-ля движка, которую попросту можно и на апач установить

PowerSlime ()

HTTP файловый сервер

прочитай про webdav. Если это то, что тебе нужно, то апач с соответствующим модулем. Если тебе нужно просто раздавать файлы, то nginx

router ★★★★★ ()
Ответ на: комментарий от PowerSlime

Листинг с деревом и превьюшками. Конфиг полистай, там много чего настроить можно.

Radjah ★★★★★ ()
Ответ на: комментарий от Radjah

Да, сейчас как раз и «роюсь» в нём. Интересная вещь :D В отличии от всего того, что я раньше использовал

PowerSlime ()

В общем... Спасибо всем кто отозвался и «направил на путь истинный». Стёр все старые файловые серверы, поставил Apache + PHP + h5ai.

Снял сервер с 80-го порта, вместо этого кинул его на 8000-ный и настроил простенький редирект а-ля

Redirect permanent / http://****:8000/

Удобно, что файлы «доступны» по обоим портам, по этому ссылку можно расшаривать по 80-ому (чтобы в том-же ВКонтакте нормально обрабатывалось), а потом всё-равно на 8000-ый кинет.

Плюс немного структуру переработал, но это уже мелочи.

В общем — всё круто, никогда бы не подумал, что проблема в 80-ом порте...

PowerSlime ()
Ответ на: комментарий от PowerSlime

Поздравляю.

h5ai

А он же заливать файлы не дает, как я понял. Или дает? Или, может, тебе заливать и не надо, а мы тут хором webdav советуем?

проблема в 80-ом порте

А сколько у тебя железок между клиентом и сервером? Или между ними вообще провайдерская сеть?

thesis ★★★★★ ()
Ответ на: комментарий от thesis

А он же заливать файлы не дает, как я понял. Или дает? Или, может, тебе заливать и не надо, а мы тут хором webdav советуем?

Заливать файлы с браузера пока-что не требуется :) Всё что мне нужно — кидаю в каталог, а из него уже идёт дальше. Обычно, мне не нужно ничего загружать «из вне», да и в крайнем случае тот-же FTP протокол работает на ПК одновременно.

А сколько у тебя железок между клиентом и сервером? Или между ними вообще провайдерская сеть?

Ну, вообще использую для расшаривания файлов вне локальной сети, по этому примерно следующее: Сервер (На самом деле простой домашний ПК :) ), модем, провайдер, клиент.

Ах, да... Забыл еще упомянуть... Когда локально тестил еще на 80-ом порте, скорость была всегда порядка 50Mb/s и без разницы на каком порте сидел сервер, видимо в провайдере проблема, либо еще где-то в моих кривых руках :)

PowerSlime ()
Ответ на: комментарий от PowerSlime

Когда локально тестил еще на 80-ом порте, скорость была всегда порядка 50Mb/s

Ну дык елы-палы. Тогда понятно, что либо пров (интересно, нахрена бы ему такое делать), либо модем.

thesis ★★★★★ ()
Ответ на: комментарий от thesis

Ну дык елы-палы. Тогда понятно, что либо пров (интересно, нахрена бы ему такое делать), либо модем.

Согласен, не вижу смысла провайдеру «урезать» порт... Да и вроде в настройках портов на модеме ничего лишнего не делал...

http://imgur.com/a/UXqCf

PowerSlime ()
Ответ на: комментарий от PowerSlime

Да хрен знает, может ты сам когда-нибудь скорость порезал и забыл, или он именно веб-трафик анализирует на предмет хацкирства, погляди по закладкам. А может у него просто входящий на 80й порт трафик считается трафиком для управления самим модемом, и он гарантирует для этого канал вот такой толщины, но не больше.

thesis ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.