apache .gz gzip обработчик содержимого для документации Linux / usr / share / doc и localhost / doc / - PullRequest
7 голосов
/ 09 марта 2011

Как я могу создать простой обработчик содержимого для содержимого apache .gz gzip. Я хочу, чтобы он распаковал скажем http://localhost/doc/FAQ/Linux-FAQ.gz и отправил его в браузер в виде обычного текста. Существует много документации для Linux в / usr / share / doc и localhost / doc /. Я не хочу использовать zless, zcat или vim для чтения контента. Я использую apache для просмотра документации на своем локальном компьютере, и мой веб-браузер восстанавливает ее как стандартный текст, чтобы он не просил меня загружать файл * .gz каждый раз.

Alias /doc/ "/usr/share/doc/"
Alias local.doc "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

Но теперь я хочу, чтобы все эти файлы .gz в / usr / share / doc / были представлены в виде простого текста. Я думаю, что я мог бы сделать это очень просто с помощью скрипта Python в CGI-BIN. Я ищу хороший обработчик контента для этих файлов. Подобно тому, как обрабатываются php-файлы .gz должен быть распакован и отправлен в браузер.

<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps
</IfModule>
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Я вижу, что есть mod_deflate, как это применимо. Может ли это обрабатывать содержимое GZIP.

Это значительно облегчит просмотр документации. Любые ресурсы по программированию, чтобы помочь здесь было бы неплохо.

Ответы [ 2 ]

7 голосов
/ 09 марта 2011

Я использовал что-то подобное для файлов js / css (я изменил нижеприведенное в соответствии с вашими потребностями). Добавьте это к вашей записи на виртуальном хосте:

Alias /doc/ "/usr/share/doc/"
Alias local.doc "/usr/share/doc/"
<Directory /usr/share/doc>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128

    AddEncoding gzip gz
    <FilesMatch "\.gz$">
      ForceType text/plain
      Header set Content-Encoding: gzip
    </FilesMatch>
</Directory>

Обновлено выше, чтобы соответствовать вашему коду

В Ubuntu убедитесь, что модуль заголовков включен

$ sudo a2enmod headers  
$ sudo a2enmod deflate
$ sudo apache2ctl restart

Update2: понял, что "AddEncoding gzip gz" отсутствует ... в противном случае файл продолжал пытаться загрузить.

Обновление 3: добавлена ​​команда установки модуля apache. Вот мой deflate.conf:

<IfModule mod_deflate.c>
      # these are known to be safe with MSIE 6
      AddOutputFilterByType DEFLATE text/html text/plain text/xml

      # everything else may cause problems with MSIE 6
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
      AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>

Сначала вы можете попробовать использовать файл другого типа (например, файл CSS). Пример:

cd /usr/share/doc
cat ".styles { width: 50px; }" > test.css
gzip -c test.css > test.css.gz

Добавьте это на свой виртуальный хост:

    <FilesMatch "\.css\.gz$">
        ForceType text/css
        Header set Content-Encoding: gzip
    </FilesMatch>

Проверьте http://127.0.0.1/doc/test.css и http://127.0.0.1/doc/test.css.gz и посмотрите, какой результат вы получите.

0 голосов
/ 11 марта 2011
cat /etc/apache2/mods-enabled/mime.conf | head -n 30
<IfModule mod_mime.c>

#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /etc/mime.types

#
# AddType allows you to add to or override the MIME configuration
# file mime.types for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
# Despite the name similarity, the following Add* directives have
# nothing to do with the FancyIndexing customization directives above.
#
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddEncoding x-bzip2 .bz2
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-bzip2 .bz2
...