LINUX.ORG.RU
ФорумAdmin

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

 , ,


1

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

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



Последнее исправление: PowerSlime (всего исправлений: 1)

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
()

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

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)
Ответ на: комментарий от 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 ☕☕☕☕☕
()
Ответ на: комментарий от Radjah

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

PowerSlime
() автор топика

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

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

router 👍👍
()
Ответ на: комментарий от 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 😊😊😊😊😊
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.