Лучшие практики для (php/mysql) развертывания на общем хостинге?

IEnumerable представляет серию объектов, по которым можно выполнить итерации (использующий foreach, например), тогда как IList набор, к которому можно добавить или удалить из.

Обычно Вы захотите смочь изменить Порядок путем добавления или удаления OrderLines к нему, таким образом, Вы, вероятно, захотите Порядок. Строки, чтобы быть IList.

Однако существуют некоторые проектные решения платформы, которые необходимо сделать. Например, должно быть возможно добавить тот же экземпляр OrderLine к двум различным заказам?Наверное, нет. Таким образом, учитывая, что Вы захотите смочь проверить, должен ли OrderLine быть добавлен к порядку, можно действительно хотеть появиться, свойство Lines как только IEnumerable, и обеспечить Добавляет (OrderLine) и Удаляет методы (OrderLine), которые могут обработать ту проверку.

5
задан Dipendra Gurung 4 July 2016 в 10:19
поделиться

3 ответа

У меня есть личные проекты PHP на виртуальном хостинге; вот пара мыслей из того, что я делаю на одном из этих (тот, который является наиболее активным и требует хотя бы полуавтоматического способа синхронизации) :

Несколько слов о моей настройке:

  • Некоторое время назад у меня все было на SVN; сейчас я использую базар ; но идея в точности такая же (за исключением базара, у меня есть локальная история и все такое)
  • У меня есть ssh-доступ к производственному серверу, как и у вас
  • Я работаю исключительно на Linux (так что то, что я делаю с Windows, может быть не так просто)

Итак, как я работаю:

  • Все, что есть на рабочем сервере (исходный код, изображения, ...) привязан к SVN / bazarr / всем остальным
  • Я работаю локально, с Apache / PHP / MySQL (я использую дамп производственной БД, который время от времени импортирую локально)
  • Я единственный, кто работает над этим проектом; это было бы нормально для небольшой команды из 2/3 разработчиков, но не больше.

То, что я делал раньше:

  • У меня был некоторый PHP-скрипт, который проверял сервер SVN на предмет изменений между «последней ревизией, отправленной в производство» и ГОЛОВА
    • Я предполагаю, что этот самодельный PHP-скрипт выглядит как Perl-скрипт, который вы сейчас используете ^^
  • Этот скрипт построил список каталогов / файлов для загрузки в производство
  • И загрузил их через FTP-доступ
  • Это не очень удовлетворило (я полагаю, в моем скрипте были ошибки; я никогда не тратил время на их исправление) ; и заставил меня вспомнить номер ревизии, когда я последний раз запускал его в производство (ну, скрипт автоматически сохранил его в файле, так что это не так сложно ^^)

Что я делаю сейчас:

  • При переключении на базар я не хотел переписывать этот сценарий, который все равно работал не очень хорошо
  • Я полностью отбросил сценарий
  • Поскольку у меня есть ssh-доступ к производственному серверу, я использую rsync для синхронизации с моей машины разработки на рабочий сервер,
    • выполните на нем «svn update», если вы хотите выполнить
    • , когда все в порядке, запустите команду rsync с промежуточного сервера (который будет иметь самую последнюю «стабильную» ревизию, так что ОК, чтобы production)
  • С большим проектом, с большим количеством разработчиков, я бы, вероятно, не пошел на такую ​​установку; но я считаю это вполне приемлемым для (не слишком большого) личного проекта.


Единственное, что здесь "особенное", которое может быть "ориентированным на Linux", - это использование rsync; быстрый поиск, похоже, указывает на наличие исполняемого файла rsync, который можно установить в Windows: http://www.itefix.no/i2/node/10650

Однако я никогда не пробовал его.


В качестве дополнения, вот как выглядит моя команда rsync:

rsync --checksum \
    --ignore-times \
    --human-readable \
    --progress \
    --itemize-changes \
    --archive \
    --recursive \
    --update \
    --verbose \
    --executability \
    --delay-updates \
    --compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
    --exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
    /LOCAL_PATH/ \
    USER@HOST:/REMOTE_PATH/

Я использую механизм закрытых / открытых ключей, поэтому rsync не запрашивает пароль, кстати.

И, конечно же,

10
ответ дан 13 December 2019 в 05:39
поделиться

Что касается SVN, я бы посоветовал вам использовать выделенный хост SVN, например beanstalk, или использовать один и тот же сервер для запуска сервера SVN, чтобы оба разработчика могли работать над ним.

В последнем случае В этом случае ваш сценарий развертывания просто переместит биты в промежуточную веб-папку (доступную через beta.mysite.com), а затем другой сценарий развертывания может переместить их в действующий веб-каталог. Развертывание непосредственно на действующем сайте, очевидно, не является хорошей идеей.

Если вы решите использовать выделенный хост или хотите выполнить развертывание со своей машины на сервер, используйте rsync. Это тоже моя текущая установка. RSync выполняет дифференциальную синхронизацию (через SSH), поэтому он быстрый и был создан именно для такого рода вещей.

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

Я синхронизирую данные только с удаленного -> локального и использую пакетный файл DOS, который делает это через SSH, используя mysqldump . Cygwin полезен для компьютеров с Windows, но вы можете пропустить его. Сценарий импорта SQL также запускает однострочный запрос для обновления некоторых ячеек, таких как имя хоста и веб-корень, для локального развертывания.

После того, как вы настроили эту настройку, вы можете сосредоточиться только на написании кода и удаленном развертывании или локальной синхронизации и развертывании. процесс в один клик.

1
ответ дан 13 December 2019 в 05:39
поделиться

Один из вариантов - использовать выделенную структуру для этой задачи. Capistrano очень хорошо подходит для языков сценариев, таких как php. Он основан на Ruby, но если вы выполните поиск, вы сможете найти инструкции о том, как использовать его для развертывания приложений php.

1
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: