Войти

Показать полную графическую версию : Apach & Файлы & mount_smbfs


astashov
12-04-2007, 15:01
Здравствуйте.
Имею следующую проблему, и честно говоря уже не знаю как ее решить.
Бьюсь уже достаточно давно.
А проблема вот с чем:
К директории на которой расположен сайт, подключен в папку(ну к примеру) images посредством mount_smbfs по чтению виндовый ресурс, на котором расположены картинки для сайта. А когда пытаюсь через браузер посмотреть эту картинку, то в логах пишется что код 200, а в эксплорере "Неудалось отобразить страницу". Хотя если переименовываешь к примеру file.gif в file.html, и открываешь file.html, то все нормально. Картинка видна.
Пробывал перенести картинку в локальную папку. Все нормально. В браузере открывается без проблем.
Если кто знает как решить проблему, искренне прошу откликнуться. Очень надо.
Заранее спасибо за потраченное на меня драгоценное время.
=================
FreeBSD 6.1
Apache/2.2.3
samba 3.0.21

Barracuda
12-04-2007, 17:41
astashov
Возможно дело в пермишнах... на виндовых шарах вечно +x выставлен. А если отдельно потянуть файл а-ля http://some.site/file.gif?

Igor_I
12-04-2007, 17:56
Хотя если переименовываешь к примеру file.gif в file.html, и открываешь file.html, то все нормально.
Не совсем понял это. Картинку переименновываешь?

astashov
12-04-2007, 19:04
Barracuda
Наврятли. хтмл открывает ведь нормально.
И еще. Для временного пользования пришлось написать скрипт на пхп который перекачивает требуемый файл пользователю. Т.е. не http://some.site/file.gif , a http://some.site/get.php?file=file.gif
Ну что-то в этом роде. Но это же не выход из положения.
А если отдельно потянуть файл а-ля http://some.site/file.gif?
Эту ситуацию я описал в первом своем посте:
А когда пытаюсь через браузер посмотреть эту картинку, то в логах пишется что код 200, а в эксплорере "Неудалось отобразить страницу".

Igor_I
Не совсем понял это. Картинку переименновываешь?
А вот так. Сам случайно узнал. Думал появиться содержимое файла в виде текста, ан нет. Вышла картинка. Причем совершенно не важно, какой формат будет у исходной картинки. Гиф, ПНГ. Не важно. Видимо эксплорер по заголовку файла сам определил что это картинка и открыл ее по человечески. Содержимое страницы в этот момент естественно просмотреть нельзя. Короче получается такая-же ситуация, как когда Вы запрашиваете не конкретный файл, а отправляете его к примеру через ПХП скрипт.

Barracuda
13-04-2007, 00:37
astashov
Вообще странно, конечно... может у вас там проксик какой?
Т.е. получается, что сервер отдаёт файл, а браузер, почему-то не принимает.
Тут можно только экспериментальным путём дойти.
Варианта, пока, три:
1. Конфиг сервера (apache)
2. Конфиг клиента (тоже может быть)
3. Что-то съедает по пути.

Да, а в error-логе ничего по этому поводу нет?

astashov
13-04-2007, 11:03
Barracuda
может у вас там проксик какой
Если бы был прокси какой, и он косячил бы, то тогда вообще все картинки(и другие файлы) не открывались бы.
А я же писал:
Пробывал перенести картинку в локальную папку. Все нормально. В браузере открывается без проблем.

Т.е. получается, что сервер отдаёт файл, а браузер, почему-то не принимает.
Что-то вроде того.
Вот куски из лога в момент запроса файла:
access.log
192.168.0.13 - - [13/Apr/2007:13:56:46 +0700] "GET /material/temp/astashov.rar HTTP/1.1" 200 1483395
Размер файла верный. Код возврата правильный.

Что-то съедает по пути.
Тоже не подходит. Размер верный. хтмл показывает. А вот тхт уже нет. Несходиться со "съеданием".

2. Конфиг клиента (тоже может быть)
Это какого еще клиента? Честно. Непонял.

1. Конфиг сервера (apache)
Пожайлуста.

httpd.conf

ServerRoot "/usr/local"
Listen 80

LoadModule authn_file_module libexec/apache22/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache22/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache22/mod_authn_anon.so
LoadModule authn_default_module libexec/apache22/mod_authn_default.so
LoadModule authn_alias_module libexec/apache22/mod_authn_alias.so
LoadModule authz_host_module libexec/apache22/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache22/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache22/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache22/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so
LoadModule authz_default_module libexec/apache22/mod_authz_default.so
LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache22/mod_auth_digest.so
LoadModule file_cache_module libexec/apache22/mod_file_cache.so
LoadModule cache_module libexec/apache22/mod_cache.so
LoadModule disk_cache_module libexec/apache22/mod_disk_cache.so
LoadModule include_module libexec/apache22/mod_include.so
LoadModule filter_module libexec/apache22/mod_filter.so
LoadModule charset_lite_module libexec/apache22/mod_charset_lite.so
LoadModule deflate_module libexec/apache22/mod_deflate.so
LoadModule log_config_module libexec/apache22/mod_log_config.so
LoadModule logio_module libexec/apache22/mod_logio.so
LoadModule env_module libexec/apache22/mod_env.so
LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache22/mod_cern_meta.so
LoadModule expires_module libexec/apache22/mod_expires.so
LoadModule headers_module libexec/apache22/mod_headers.so
LoadModule usertrack_module libexec/apache22/mod_usertrack.so
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
LoadModule setenvif_module libexec/apache22/mod_setenvif.so
LoadModule version_module libexec/apache22/mod_version.so
LoadModule ssl_module libexec/apache22/mod_ssl.so
LoadModule mime_module libexec/apache22/mod_mime.so
LoadModule dav_module libexec/apache22/mod_dav.so
LoadModule status_module libexec/apache22/mod_status.so
LoadModule autoindex_module libexec/apache22/mod_autoindex.so
LoadModule asis_module libexec/apache22/mod_asis.so
LoadModule info_module libexec/apache22/mod_info.so
LoadModule cgi_module libexec/apache22/mod_cgi.so
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so
LoadModule vhost_alias_module libexec/apache22/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache22/mod_negotiation.so
LoadModule dir_module libexec/apache22/mod_dir.so
LoadModule imagemap_module libexec/apache22/mod_imagemap.so
LoadModule actions_module libexec/apache22/mod_actions.so
LoadModule speling_module libexec/apache22/mod_speling.so
LoadModule userdir_module libexec/apache22/mod_userdir.so
LoadModule alias_module libexec/apache22/mod_alias.so
LoadModule rewrite_module libexec/apache22/mod_rewrite.so
LoadModule php5_module libexec/apache22/libphp5.so

<IfModule !mpm_netware_module>
User www
Group www
</IfModule>

ServerAdmin webmaster@site.com

ServerName site.com:80

DocumentRoot "/http_files/default_apache_dir/www"

<Directory />
AllowOverride None
Order deny,allow
Deny from all
</Directory>

<Directory "/http_files/default_apache_dir/www">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

</Directory>

<IfModule dir_module>
DirectoryIndex index.html index.php index.htm index.php3
</IfModule>

<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>

ErrorLog /http_files/default_apache_dir/log/httpd-error.log
LogLevel warn

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog /http_files/default_apache_dir/log/httpd-access.log combined
</IfModule>

<Directory "/http_files/default_apache_dir/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

DefaultType text/plain

<IfModule mime_module>
TypesConfig etc/apache22/mime.types
AddType application/x-httpd-php .php .html .htm
AddType application/x-httpd-php-source .phps
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi
</IfModule>

Include etc/apache22/extra/httpd-mpm.conf
Include etc/apache22/extra/httpd-multilang-errordoc.conf
Include etc/apache22/extra/httpd-autoindex.conf
Include etc/apache22/extra/httpd-languages.conf

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include etc/apache22/Includes/*.conf
Include etc/apache22/vhosts/*.conf


А вот тот самый виртуальный хост, с которого пытаюсь открыть файлы.

www_site_com.conf

<VirtualHost *:80>
ServerName www.site.com
ServerAdmin webmaster@site.com
DocumentRoot /http_files/www_site_com/www
DirectoryIndex index.php index.html index.htm
ErrorLog /http_files/www_site_com/log/error.log
CustomLog /http_files/www_site_com/log/access.log common
AccessFileName .htaccess

<Directory "/http_files/www_site_com/www">
AllowOverride All
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

Barracuda
13-04-2007, 20:10
У меня такой вопрос, а точнее несколько:
Релальный интернет есть на той машине, которая не может просматреть картинки? Если да, то как вызывается сайт (прямо строчку вызова из браузера). Дело может оказаться в том, что при наличии нормального интеренета богут быть коллизии с доменными именами. Ну и хотелось бы немного на сетевые настройки взглянуть... Если это локалка, то надо бы настроить DNS, по-хорошему... И ещё - посмотрите на то, как gif этот именуется (сам линк).

Barracuda
14-04-2007, 13:40
Тут давеча копался с конфигом апача - оч интересный эффект от включения/выключения UseCanonicalName получается....

astashov
14-04-2007, 14:27
Barracuda

У меня такой вопрос, а точнее несколько:
Релальный интернет есть на той машине, которая не может просматреть картинки? Если да, то как вызывается сайт (прямо строчку вызова из браузера). Дело может оказаться в том, что при наличии нормального интеренета богут быть коллизии с доменными именами. Ну и хотелось бы немного на сетевые настройки взглянуть... Если это локалка, то надо бы настроить DNS, по-хорошему... И ещё - посмотрите на то, как gif этот именуется (сам линк).

Вообще ничего не понял. Откуда и какие коллизии. Вы о чем?
Про ДНС и всякие там сетевые настройки тут вопрос вообще не стоит. Настроено все как надо. Я сам системщик с 4-х летним стажем.
Я в голове даже не смог смоделировать ситуацию, когда идут куда-то коллизии. Нет. Это не то.

Ну а если же интересно, то да. Интернет есть на той машинке, откуда не грузятся картинки. А так же на всех остальных машинках нашей планеты я тоже думаю есть интернет, но там все равно не будет грузиться.
Тут дело не в локалке или сетевых настройках, а в обработке апача именно подключенных шар с винды. Причем тут днс? Может это я чего то недопонимаю. Объясните. И если можно с примерами. Я честно, люблю учиться, особенно когда я неправ.
Я же писал, что если попытаться загрузить картинку напрямую с ШАРЫ, то фиг, а вот если перенести ее в локальную папку внутри этого хоста, то открывается нормально. И при чем тут коллизии?
Ну а чтоб Вы сами убедились, что картинка не грузиться, то я Вам в ПМ сейчас вышлю ссылки.

Igor_I
14-04-2007, 20:59
Смоделировал ситуацию.
Сервер:
FreeBsd 6.2, Apache 1.3.37
Директория с Windows смонтированна - mount_smbfs -I 192.168.0.12 //guest@igorhome/temp /mnt/www
В этой директории 3 картинки .jpg .gif .png
.png не открывается ни в какую, остальные открываются как угодно. Хоть из .html, .txt или напрямую.
Хотя про .png apache пишет все правильно, и размер, и код отдачи.
Но это все про IE, Opera v.9 открывает все нормально.
Кстати тот же ИЕ и в phpmyadmin не открывает файлы .png. В результате имеем дыры вместо картинок.

astashov
14-04-2007, 21:16
Igor_I
Блин. Ничего понять не могу. Может это именно двойка так брыкается. Может на на первом апаче все нормально будет.
Просто не ясно почему это происходит. И хочется понять проблему, чтоб в будущем неотнекиваться от нее написанием специальных приблуд, а знать как она решается.
Ну за эксперимент спасибо.
Кстати у меня и в опера тоже не открывается. Точно так же как и в ИЕ :)
А насчет неоткрывания пнг, то Вы это зря. Все нормально он открывает. Я когда клиентам сайты пишу, то частенько приходиться пнг вставлять(из за полной поддержки альфа канала). И ни у кого еще пока проблем не было.

Igor_I
14-04-2007, 21:34
Да у меня вообще-то тоже проблем не было. Раньше. Просто сервером пользуюсь довольно редко, а там какие пересборки за последние 2 месяца только не было. Вплоть до пересборки мира и всех портов. Так что где-то что-то не так собралось. Будем искать.

astashov
14-04-2007, 21:47
Igor_I
Ладно спасибо. Буду пробывать поднимать первый апачь и проверять. Может и заработает. Посмотрим.
Если не заработает, то вновь дерну этот топик.
Может чем еще подскажете.

Belansky
15-04-2007, 09:54
А с какими правами виндовая шара монтируется? Я к тому, что у монтируемого каталога должны быть права того юзера, от имени которого Apache запускается.
Ну, и атрибуты файлов соотвествующие.

astashov
15-04-2007, 10:44
Belansky
Это тоже безоговорочно понятно.
Права перепробывал все подряд(666, 777, 644).
Владелец фалов при монтировании 80:80
Я к тому, что у монтируемого каталога должны быть права того юзера, от имени которого Apache запускается.
А иначе бы он вообще ничего не смог бы прочитать. Даже ХТМЛ файл ;-)

Belansky
15-04-2007, 11:21
astashov
А почему нужно в Apache прописывать именно виндовую шару?
Просто много различных аспектов может наложиться, как-то капризы протокольные. Да мало ли какие глюки.

astashov
16-04-2007, 19:16
Belansky
Да в принципе не обязательно именно виндовые, просто сервак фревый далеко не хорошая машинка(проще говоря хлам). и соответственно места на винтах там с гулькин нос. А на виндовом серваке(в принципе приличный сервак) есть достаточно места. Люди туда скидывают свои наработки, и хотят сразу их видеть на сайте. Машины новой не будет. И это печально(кстати эта одна из основных причин моего будущего уволнения. Не люблю полностью в такое ****** залазить.)
Просто раньше(на прошлом месте работы) у меня он нормально работал. За год никаких глюков не было. Работало отменно. А вот тут никак не получается стартануть(на первом апаче пока еще не успел опробывать).

Просто много различных аспектов может наложиться, как-то капризы протокольные. Да мало ли какие глюки.
Если так подходить к вопросы, то такие "малоли какие глюки" могут быть где угодно.
О безопастности я не беспокоюсь(права только по чтению). Если случайно отвалиться, то через минуту автоматически подмонтируется(ресурс не критический. Все самое важное лежит локально.). Сами пользователи имеют большую систему прав для этой папки.
И главное полностью прозрачно как для них(пользователей), так и для будущего "админа"(а может он по пояс деревянный окажется.)

astashov
17-04-2007, 19:15
Блин. Ну даже и не знаю как сказать. Внимательнее мне читать надо маны по конфигам.
Если честно, то я раньше с этой директивой в конфиге апача не сталкивался, вот и не обратил а нее внимание. А собака вот тут порылась:

http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile

Как только ее выключил, так сразу все заработало.
Причем она по дефолту была в комменте, а это насколько я помню значение по умолчанию в апаче. И пока я не раскоментировал значение, то даже и не заработало.
А в логи апач ничего не сыпал, т.к. у него работа с файлами в сети отвечает ядро, а у меня варм в логлевел стоял. Как только в дебуг перевел, так сразу начали сыпаться в хостовый еррор.лог:

(45)Operation not supported: core_output_filter: writing data to the network

Все. Картинка отображается.
Теперь дальше буду рыть. Теперь мне возвращается 304 код. Т.е. он не может размер теперь определить :)
Ни одно так другое.
Ну ладно. Полистаю факи и думаю что найду.
Спасибо Barracuda за подсказку.




© OSzone.net 2001-2012