Контент сайта в облаке Яндекс Диск

+36
3.66K
Иллюстрация
Приветствую.
Небольшой мануал, как перенести весь контент сайта в облако Яндекс Диск.


Данный мануал протестировал у себя на сервере, файлы из папок images были перенесены в облако и отдавались пользователям из него, ссылки и адреса файлов не изменяются. Смысл заключается в монтировании яндекс диска к папке на вашем сервере. По аналогии возможна интеграция с другими облачными сервисами

Что нужно

1) ОБЯЗАТЕЛЬНО сделать дампы!
2) Повторить первый пункт
3) Сервер, VPS под управлением linux
4) Зарегистрироваться в яндекс

p.s. Внимание, все шаги делаются только на свой страх и риск, за возможные проблемы и потерю информации я не отвечаю =)

Уточнения

На каждом сервере возможна своя иерархия папок, воспользуемся упрощением, допустим сайт у нас будет находится в каталоге:
/home/www
Контент соответственно будет находиться в
/home/www/images
(данные действия можно выполнить для любой папки)

Мануал

1) Необходимо установить утилиту davfs2, для этого в консоли выполнить
  1. sudo apt-get install davfs2
2) Создаем яндекс диск (регистрируемся), и копируем в его корень все файлы из папки нашего сервера /home/www/images

3) Очищаем папку /home/www/images (Дампы должны быть уже сохранены!!!)

4) Выполняем в консоле процедуру монтирования
  1. sudo mount -t davfs https://webdav.yandex.ru /home/www/images
После чего вам предложат ввести Username и password, соответственно это email и пароль к нему на яндексе.

5) Выставить необходимые права

Бинго.


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

п.с.п.с При изучении темы наткнулся на php класс для работы с диском, может быть полезно например для сохранения дампов по крону на яндекс диск
+3
Coolmax Coolmax 10 лет назад #
Davfs - довольно медленная вещь, я бы не рискнул на рабочем проекта такое ставить...
0
Су-27 Су-27 10 лет назад #
За неимением необходимого дискового пространства на серваке кому-то пригодится...поэтому плюс hoho
+1
Fatum Fatum 10 лет назад #
Согласен и с Coolmax и с Су-27
Лично я плюсую за нестандартный подход.
0
Smith Smith 10 лет назад #
не спорю, учитывая также что система сперва запросит этот файл с удаленного сервера, затем отдаст пользователю, возрастает трафик.

Было бы хорошо, если бы например яндекс отдавал прямые ссылки на файлы, тогда можно было бы загружать файлы, и не гонять через систему, а отдавать ссылки из базы прямые на облако, в таком случае можно избавиться от davfs, соответственно скорость будет лучше
+1
Александр Александр 10 лет назад #
Нужно попробовать таким способом свое китайское облако на 10тб привязать ;)
А то давно думаю как запустить проект с ~500гб фоток
+1
r2 r2 10 лет назад #
3) Сервер, VPS под управлением linux
Судя по командам, не просто какой-угодно linux, а конкретно Debian или на его базе
+1
Bubble Gumoff Bubble Gumoff 10 лет назад #
sudo в Ubuntu по умолчанию
0
Smith Smith 10 лет назад #
Особой разницы нет, в каждой системе немного по своему будут выглядеть команды
0
Bubble Gumoff Bubble Gumoff 10 лет назад #
Тоже давно посещала мысль как использовать Тб в облаке, плюс автору, единственное webdave не все поддерживают
0
Smith Smith 10 лет назад #
пришлось многих просмотреть, да, поддержка далеко не у всех,из просмотренных, яндекс диск имеет преимущество в том, что находится у нас, минус в том что не дает прямые ссылки в отличии от того же dropbox на файлы.
+1
Bubble Gumoff Bubble Gumoff 10 лет назад #
возможно ли смонитровать под каждую папку свою папку? например
sudo mount -t davfs https://webdav.yandex.ru/images /home/www/images
https://webdav.yandex.ru/video /home/www/video
0
Smith Smith 10 лет назад #
Пробовал, у меня не получилось, возможно и есть способы.
0
Smith Smith 10 лет назад #
Пришла мысль, если возможности нет в монтировании по папкам, то можно немного проще сделать, в корень диска сбрасывать контент из разных папок и уже к ним на сервере монтировать корень диска (при учете уникальности папок и файлов)
0
CozaNostra CozaNostra 10 лет назад #
+ хорошо бы так привязать облако майла, а то терабайт висит без дела. :)
+3
ivanish ivanish 10 лет назад #
Я бы не спешил. У майла такая репутация, что ждать можно чего угодно. В т.ч. и платы за продление.
+2
PolarOne PolarOne 10 лет назад #
Могут поудалять все файлы и забанить если нарушает авторские и др. права.
Предпочел бы mega. co. nz
Типа шифрование данных, они не отвечают за сами файлы.
Для каталогов файловых небольшого размера, мне кажется, подошло бы.
0
PolarOne PolarOne 10 лет назад #
Спойлер
0
artscripts artscripts 10 лет назад #
На крайняк дайте команду для размонтировки диска, чтобы вернуть все как есть.
+1
Smith Smith 10 лет назад #
umount <точка монтирования>, после чего в папку вернуть файлы.
+2
artscripts artscripts 10 лет назад #
для Centos нашел как поставить

CentOS x64 i686

Сперва вам потребуется установленный пакет libproxy:

Для CentOS x64:

# yum install libproxy.x86_64

Для CentOS i686

# yum install libproxy.i686

После этого качаем rpm davfs2 и его зависимости:

Для CentOS x64:

# wget http://pkgs.repoforge.org/davfs2/davfs2-1.4.6-1.el6.rf.x86_64.rpm
# wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/neon-0.29.3-2.el6.x86_64.rpm
# wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/pakchois-0.4-3.2.el6.x86_64.rpm

Для CentOS i686

# wget http://pkgs.repoforge.org/davfs2/davfs2-1.4.6-1.el6.rf.i686.rpm
# wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/neon-0.29.3-2.el6.686.rpm
# wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/pakchois-0.4-3.2.el6.686.rpm

Устанавливаем скачанные пакеты:

Для CentOS x64:

# rpm -i davfs2-1.4.6-1.el6.rf.x86_64.rpm neon-0.29.3-2.el6.x86_64.rpm pakchois-0.4-3.2.el6.x86_64.rpm

Для CentOS i686:

# rpm -i davfs2-1.4.6-1.el6.rf.i686.rpm neon-0.29.3-2.el6.i686.rpm pakchois-0.4-3.2.el6.i686.rpm
0
Smith Smith 10 лет назад #
а apt-get или aptitude в centOS не работает разве? можно конечно и для убунту все в ручную собирать
0
Reborn Reborn 10 лет назад #
не, там yum )
0
Smith Smith 10 лет назад #
точно, встречал в мануалах, сам использую убунту, так что пример для остальных будет аналогичен с оговоркой)
0
artscripts artscripts 10 лет назад #
поправка, код выше это только для виртуализации KVM и выделенных серверов. На виртуализациях FreeBSD Jail и OpenVZ работать не будет.На всех остальных ставится так\

# apt-get install davfs2
0
Reborn Reborn 10 лет назад #
Стараюсь всегда вместо apt-get использовать арtitude , иногда помогает разрешить зависимости )
0
Reborn Reborn 10 лет назад #
и после всех действий проверить : apt-get install -f
0
gaara gaara 10 лет назад #
как я понимаю, если сервер не выделенный то такую фишку не проделаешь ? =))) (шуткую, конечно же нет..)
было бы интересно посмотреть рабочий класс php и его интеграцию в инстант..
0
Smith Smith 10 лет назад #
Класс для работы с диском: https://github.com/DEN007/Yandex.Disk-FULL-API
0
gaara gaara 10 лет назад #
пробовал, половина не работает - загрузка файла норм, а вот список файлов не получить, сам заморочся ! там методов много, только бесполезно, не хреначит..
0
Smith Smith 10 лет назад #
Список не пробовал, загрузка, получение ссылки, lock unlock проверял, работает.
-1
gaara gaara 10 лет назад #
ну в общем, класс не дал что мне нужно, если будут вопросы, то в личку, все распишу !
-1
gaara gaara 10 лет назад #
и как я это решал отдельно от апи яндекс диска
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.