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.
Или эта модная фишка еще каких либо хостеров?
Sign up to leave a comment.

Articles