Osfonder's blog Just another wd weblog

6Май/100

Перенос сайта архивом без доступа по ssh к целевому серверу

Имеем сайт разрабатываемый на вашем сервере. Заказчик хочет, чтобы размещался в итоге он не у вас и высылает доступ по FTP. Директория с сайтом у вас на сервере весит 46 мегабайт.

Самое банальное — это скопировать все файлы по ФТП, само собой, через ваш компьютер.
Но если на целевом сервере не заблокирована возможность вызова системных команд для PHP, то процедуру можно ускорить, а трафик сократить.

1. На нашем сервере переходим в папку сайта и создаем архив командой

tar cfz site.tar.gz *

теперь вместо кучи файлов общим весом 46 мегабайт имеем один в 18 (например).

2. Загружаем файл site.tar.gz на целевой сервер.

3. Создаем php файл распаковщик extract.php, содержащий одну строку

echo `tar xvf site.tar.gz`;

4. Переходим по ссылке http://newsite.tld/extract.php
результатом будет распаковка архива, в каталог на ФТП.

19Апр/100

.htaccess защита папок и файлов

В посте внешний вид mod_autoindex говорилось о том, как улучшить отображение и функциональность страниц, автоматически сгенерированных apache'ем при просмотре директорий.

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

Можно легко расширить область его использования и избавиться от этого недочёта.

Для торопливых сразу суть: при просмотре содержимого будет единожды запрошена HTTP авторизация. Опять же, только силами apache и без промежуточных скриптов. Просматривать содержимое можно только при правильном вводе имени пользователя и пароля.

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

Более оптимальный ход — это запретить просмотр содержимого каталога без авторизации, что можно просто сделать с помощью .htaccess и .htpasswd файлов.

.htaccess

В .htaccess добавляем

#Для файлов, не имеющих имени — каталогов
<FilesMatch "^$">
    #Сообщение выводимое сервером с просьбой авторизоваться
    AuthName "Authorization"
    AuthType Basic
    #Полный путь к файлу .htpasswd(его мы получим ниже)
    AuthUserFile /full/path/to/.htpasswd
    Require valid-user
</FilesMatch>

.htpasswd

Файл .htpasswd содержит список допустимых пар пользователь:пароль
Захэшированный пароль, если точнее.
Сгенерировать содержимое .htpasswd можно здесь:



Файл .htpasswd

Заметьте, в .htaccess указывается полный путь до файла .htpasswd.
Его можно узнать, например, выполнив php скрипт со строкой

echo __FILE__;

Ну и последнее: если хотите защитить паролем вообще все файлы, нужно в .htaccess вместо

#Для файлов, не имеющих имени — каталогов
<FilesMatch "^$">

использовать

#Для файлов с любым именем
<FilesMatch "^.*$">

17Апр/100

Внешний вид mod_autoindex или организация FTP

У вас есть сервер, который вы используете(в том числе) для хранения файлов и доступа к ним из любого места через интернет-браузер, а файлы, скорее всего, заливаете по FTP.
Если да, то скорее всего вам знакома такая картина

А нет, извините, вам знакома такая


Это стандартная выдача mod_autoindex сервера apache.

Но предлагаю немного упростить себе жизнь и превратить
её в такую.

Да и вообще в онлайн плеер.

Можно это сделать, установив по умолчанию индексным файлом, например, php скрипт, который и будет делать всю черную работу. Есть проект на sourceforge посвященный этому(autoindex).

Но использовать лишнее звено в виде php нет смысла, если есть возможность воспользоваться стандартными функциями или хотя бы просто добавить javascript файл в выдачу. И такая возможность есть.

Большую часть работы по этому уже проделана. Результат её здесь.

Доработанную её версию вам и предлагаю.

Загрузка

Скачать

Нужно просто распаковать архив в корень вашего ФТП хранилища.

Возможности

  1. Сортировка по имени, дате модификации, размеру, типу
  2. Предпросмотр фотографий и изображений
  3. Онлайн прослушивание mp3 файлов

Ну и приглядный внешний вид с иконками.

Техническая сторона

Ну и на последок немного технической информации.

  1. Предпросмотр изображений выполнен с помощью YUI Tooltip
  2. Проигрыватель музыкальных файлов Yahoo! Media Player
  3. JavaScript'ы и устанавливаются в обрамляющих выдачу файлах(см. .htaccess ниже)

P.S. Музыка на скриншоте моих друзей Waterplea, пишущих большей частью ambient.

#Файлы, вставляемые до и после выдачи(в них и крепяться стили и javascript'ы)
HeaderName /indexoverride/HEADER.html
ReadmeName /indexoverride/FOOTER.html
#Запрещаем в выдаче ненужные и системные файлы
IndexIgnore .htaccess indexoverride Thumbs.db .??* *~ *# RCS CVS *,v *,t

#Соритировка по умолчанию
IndexOrderDefault Ascending Description

#Настроки структуры выдачи
IndexOptions FancyIndexing FoldersFirst IconsAreLinks NameWidth=* IconWidth=32 IconHeight=32

#Кодировка по умолчанию
IndexOptions Charset=UTF-8

#Иконки и описания по расширениям файлов
AddIcon (IMG,/indexoverride/image.png) .jpg .JPG .png .PNG .bmp .BMP .svg .SVG .gif .GIF .wmf .WMF .psd .PSD
AddDescription "image / PNG" 		*.png *.PNG
AddDescription "image / JPG" 		*.jpg *.JPG
AddDescription "image / BMP" 		*.bmp *.BMP
AddDescription "image / SVG" 		*.svg *.SVG
AddDescription "image / GIF" 		*.gif *.GIF
AddDescription "image / WMF" 		*.wmf *.WMF
AddDescription "image / PSD" 		*.psd *.PSD

AddIcon (AUDIO,/indexoverride/audio.png) .mp3 .MP3 .wav .WAV .ogg .OGG
AddDescription "audio / MP3" 		*.mp3 *.MP3
AddDescription "audio / OGG" 		*.ogg *.OGG

AddIcon (VIDEO,/indexoverride/video.png) .mov .MOV .avi .AVI .mpg .MPG
AddDescription "video / QuickTime" 	*.mov *.MOV
AddDescription "image / AVI" 		*.avi *.AVI
AddDescription "image / MPEG" 		*.mpg *.MPG

AddIcon (FLA,/indexoverride/flash_src.png) .fla .FLA .as .AS
AddDescription "flash / FLA" 		*.fla *.FLA
AddDescription "flash / AS" 		*.as  *.AS

AddIcon (SWF,/indexoverride/swf.png) .swf .SWF
AddDescription "flash / SWF" 		*.swf *.SWF

AddIcon (TXT,/indexoverride/text.png) .txt .TXT
AddDescription "document / TXT" 	*.txt *.TXT

AddIcon (XLS,/indexoverride/xls.png) .xls .XLS .csv .CSV
AddDescription "document / XLS" 	*.xls *.XLS
AddDescription "document / CSV" 	*.csv *.CSV

AddIcon (DOC,/indexoverride/doc.png) .doc .DOC
AddDescription "document / DOC" *.doc *.DOC

AddIcon (PPT,/indexoverride/ppt.png) .ppt .PPT
AddDescription "document / PPT" *.ppt *.PPT

AddIcon (PHP,/indexoverride/php.png) .php .PHP
AddDescription "PHP" *.php *.PHP

AddIcon (HTM,/indexoverride/html.png) .htm .html .HTM .HTML
AddDescription "HTML" *.htm* *.HTM*

AddIcon (HTM,/indexoverride/css.png) .css .CSS
AddDescription "CSS" *.css *.CSS

AddIcon (ARCHIVE,/indexoverride/archive.png) .zip .rar .arj .arc .tar .targz .gz .Z
AddDescription "Archive / ZIP" *.zip *.ZIP
AddDescription "Archive / RAR" *.rar *.RAR
AddDescription "Archive / ARJ" *.arj *.ARJ
AddDescription "Archive / ARC" *.arc *.ARC
AddDescription "Archive / TAR" *.tar *.TAR
AddDescription "Archive / GZ" *.gz *.GZ
AddDescription "Archive / TARGZ" *.targz *.TARGZ
AddDescription "Archive / compress" *.Z

#Иконка для родительской дирректории
AddIcon (PAR,/indexoverride/dir.png) ..

#Иконка по умолчанию
DefaultIcon /indexoverride/default.png

#Иконки по типам
AddIconByType (TXT,/indexoverride/text.png) text/*
AddIconByType (IMG,/indexoverride/image.png) image/*
AddIconByType (VID,/indexoverride/video.png) video/*
AddIconByEncoding (CMP,/indexoverride/archive.png) x-compress x-gzip