Pull to refresh

Comments 14

  1. Для аудитории хабры слабовато.
  2. Данный гайд очень специфичен для вашего случая и не покроет большинство кейсов установки.
Так ведь я и описывал специфичный случай моего опыта настройки с указанием тех подводных камней, с которыми столкнулся. Чтобы был гайд для тех, кто столкнется с теми же проблемами, и чтобы не искать ответы по нескольким страницам, а получить решение в 1 статье.
Несколько дополнений:

Папку web можно переименовать. Ее название нигде не используется, путь к webroot определяется по местоположению index.php.

Можно напрямую переместить файлы из папки "backend/web" в папку "frontend/web/admin" и скорректировать пути в "frontend/web/admin/index.php".

Можно разнести движок и webroot по разным папкам. Например, index.php в папке "mysite/public_html/", а движок в папке "mysite-engine/". Тоже нужно только скорректировать пути в индексных файлах.

Можно даже таким образом запустить несколько сайтов на одном хостинге. Например, web-папки в "mysite/public_html/demo/[sitename]", а движки в "mysite-engine/[sitename]". Только при этом лучше хранение сессий сделать в БД, потому что иначе логин будет работать на всех сайтах сразу (и на самом mysite тоже, если он на Yii). При хранении в БД логин на одном сайте будет "выбивать" логин на другом.

Один раз столкнулся с тем, что апач ругается на отсутствие файла index.php, если создана символьная ссылка на web. Особо не разбирался почему, исправилось добавлением слеша в .htaccess: "RewriteRule . /index.php".

Еще столкнулся с тем, что консольные версии php запускаются как CGI. В нем отсутствуют константы STDIN, STDOUT, STDERR, и скрипт init не работает. Исправляется добавлением в init кода для открытия потоков:

if (!defined('STDIN')) {
    define('STDIN', fopen('php://stdin', 'r'));
    define('STDOUT', fopen('php://stdout', 'w'));
    define('STDERR', fopen('php://stderr', 'w'));
}
На некоторых виртуальных хостингах консоль вообще ни в каком виде не доступна, только ftp. И тогда не то, что composer, даже git непонятно, как использовать. Кто-нибудь пробовал на таком развернуться. Понятно, что это жесть, и лучше использовать vps, но все же…
  1. Разворачиваем локально.
  2. Заливаем по FTP как есть. То есть вместе с vendor.
Спасибо. Ну, да это понятно, что если просто скопироватьвесь проект, то будет все прекрасно работать. Это не к yii вопрос, а по развертыванию в целом.

Обычно я подключаюсь к серверу по ssh, пробрасываю порт для mysq, подключаюсь через workbench или что-нибудь в этом роде. Клонирую проект в web директорию + ещё несколько дополнительных действий. Ну, или использую какое-нибудь деплой решение — capistrano, phing, самописный скрипт и т.д. Устанавливаю зависимости через composer, frontend зависимости через bower…
Потом для обновления достаточно выполнить команду git pull.

Но вдруг внезапно попадается виртуальный хостинг без ssh и имеющийся уже на нем проект, и понимаешь, что ничего из вышеперечисленного не работает. И добро пожаловать, filezilla, notepad++, phpmyadmin, редактирование по одному файлу.
И ещё php 5.2, не дай бог(с этим проблем меньше, чаще всего можно выбрать версию поновее).

И тут я понимаю, что некоторые до сих пор так и работают. Сам лично таких людей знаю. Ну, в общем, это конечно их дело, но даже непонятно, что им можно предложить. Фактически, сайт разрабатывается на production. Локально его запустить никто и никогда не пробовал. И даже с последней версией любимого фреймворка не особенно приятно в таких условиях работать. + Миграции работать не будут, т.к. их из консоли обычно запускают… Ftp медленный, файлов много мелких. При каждом изменении качать туда сюда весь проект — та ещё радость...

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

Такого же типа скрипт для туннелирования — вот тут не загвоздка, не понимаю как это сделать, и можно ли вообще. Но, кажется, где-то мне что-то подобное попадалось, не могу сейчас найти.

Не знаю, можно ли подобным образом composer запустить… Для yii migrate и др. — просто веб версия, которая делает то же самое.

Наверняка что-то подобное уже сделано.
Правда, не уверен, что это вообще пригодится кому-то. Все-таки проще VPS купить, это уж точно. Да и я не то, чтобы очень часто в такие ситуации попадаю...
Есть библиотека pclzip. Можно написать 2 скрипта для запаковки и распаковки папки с проектом, которые запускаются из браузера, и качать через ftp один архив.
некоторые IDE в том или ином виде поддерживают синхронизацию по ftp. так что все же можно избежать редактирования по 1 файлу с заливкой filezilla. Желаю чтобы таких проектов было поменьше :)
> php -r «readfile('https://getcomposer.org/installer');» | php5.6

А хостинг не Таймвеб часом?
Очень похоже на их костылинг с разными версиями php, где версия cli древнее чем cgi.
Или эта модная фишка еще каких либо хостеров?
Only those users with full accounts are able to leave comments. Log in, please.