Bjornsen
@Bjornsen
Happy coder

Как автоматически загружать измененные файлы на vps?

Имеется vps на ubuntu 18.04 с apache, имеется локально созданный php проект, проблема заключается в том, что я не знаю как лучше организовать отправку локально редактируемых файлов на удаленный сервер в процессе разработки. Знаю, что можно сделать деплой с помощью гита, например, но мне это кажется неудобным, так как если мне надо будет отредактировать буквально одно слово и проверить как отработает приложение, то на это будет создаваться отдельный коммит, что знатно засрет историю коммитов. Другой вариант - фтп, в phpstorm даже есть настройка деплоя с помощью фтп, но тут я столкнулся с другой проблемой. Во первых, после установки фтп на сервере, у меня появился отдельный юзер - ftpuser, то есть файлы созданные локально будут отправленны на сервер с владельцем ftpuser, и все директории так же должны принадлежать ему, отсюда следует, что мне нужно добавить основного юзера сервера, от которого запущены процессы apache и прочие и www-data в группу ftpuser, плюс выставить директориям права 775, а файлам 664, хотя по рекомендациям в интернете лучше ставить 755 и 644 соответственно, из-за чего мне и кажется, что весь этот подход костыльный. Короче подскажите как правильнее всего организовать эту пересылку файлов.

P. S. И да, локальная разработка на локальном сервере мне не подходит из-за специфики приложения.
  • Вопрос задан
  • 238 просмотров
Решения вопроса 2
Lobotomist
@Lobotomist
Software Developer
Есть множество вариантов. На мой взгляд в качестве протокола наиболее удобно использовать ssh (sftp).

Вы не написали, в какой ОС вы работаете, но я просто упомяну, что чтобы не привязываться к IDE можно использовать, например, winscp(Windows) или lsyncd(linux) для live синхронизации кода.

В phpstorm, насколько я понимаю, наряду с ftp можно выбрать и sftp. Но нужно понимать, что переключении между ветками, когда код изменяется не через сохранение файла, а извне редактора он не будет синхронизирован с сервером. В таком случае для синхронизации всего кода удобно использовать rsync (что на linux, что на windows).

Насчет пользователя и прав - на мой взгляд, веб-сервер не должен иметь прав на запись к исходному коду. То есть нужно при создании инстанса на сервере создать структуру папок, где веб-сервер имеет права на запись только к runtime директориям. А синхронизируемый код - он должен быть доступен серверу только на чтение.
Отмечу, что я говорю именно об "девелоперском" инстансе, который нужен исключительно для текущей работы. Для инстансов, которые деплоятся автоматически из git ситуация с правами может быть иной и это отдельный вопрос.

> Знаю, что можно сделать деплой с помощью гита ...

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

Если есть вопросы - спрашивайте в комментариях, я дополню ответ.
Ответ написан
@sidni
Php Developer
Ну во-вопервых не бойтесь множества коммитов какая разница (если Вы не из тех которые устанавливают громкость телевизора величине кратное 5) это очень удобно когда шторм подсвечивает изменения и вы в один клик можете вернуть старую версию того или иного куска кода или быстро посмотреть что было до ваших правок и не злоупотреблять комбинацией ctrl+z которая имеет свой лимит или же после выхода из шторма очищаться.
А во-вторых по поводу ФТП включите фтп-пользователя в группу или наооборот админа в одну группу с фтп-пользователем и настраивайте папки на группу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ynblpb_spb
дятел php
Работаю аналогично, использую NFS (network file system)
nfs на сервере работает от пользователя www-data
все файлы правлю и в режиме онлайн они в браузере доступны, очень удобно
Когда надо git - захожу на сервер по ssh и делаю коммит.
в качестве IDE использую sublime который умеет подсвечивать все изменения в гите
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы