Существует много способов освежевать эту кошку. Вот некоторые, чтобы Вы рассмотрели:
htdocs
дерево почти наверняка не должно принадлежать корню. То, что имеет значение, - то, что это читаемо пользователем Apache. В зависимости от *ix рассматриваемая система, которая может быть apache
, www-data
, или что-то еще. Режим файла по умолчанию, который Вы даете выше, drwxr-xr-x (сократил 755) хорошо для этого.
Так, вопрос, кто должен владеть этим деревом, и которому группа должна он принадлежать. Это может быть достаточно:
$ sudo chown -R dan.apache /var/www
Это говорит пользователя dan
владеет /var/www
и все под ним (-R
, рекурсивный) и та группа apache
имеет некоторые полномочия к нему, также. Если httpd
работает как группа apache
, это, вероятно, получает достаточно разрешения считать файлы в дереве и каталогах изменения в нем, достаточный для большинства сайтов.
Иначе должен пойти с любыми полномочиями, которые Вы имеете и просто говорите scp
исполнять роль владельца /var/www/
дерево:
mybox$ scp ~/site-mirror/index.html www@example.com:/var/www/htdocs
Это копирует локальную копию корня index.html
файл к соответствующему местоположению на example.com
, вход в систему как пользователь www
. Можно использовать любое имя пользователя и имя хоста, в котором Вы нуждаетесь здесь. Вам просто нужна способность войти в систему как /var/www/
пользователь древовидного владельца удаленно. Если Вы не можете сделать этого, рассмотреть движение с опцией № 1, по крайней мере, разбудить вещи набор способом, который действительно позволяет Вам scp
файлы непосредственно.
При установке предварительно совместно использованных ключей для SSH Вы не должны будете даже давать пароль.
Вместо scp
, Я рекомендую использовать rsync
для разработки веб-сайта:
mybox$ rsync -ave ssh --delete ~/site-mirror www@example.com:/var/www/htdocs
Это зеркально отражает содержание ~/site-mirror
на mybox
(Ваша локальная машина работы) в /var/www/htdocs
на example.com
, вход в систему как пользователь www
. Преимущество использования rsync
по сырым данным scp
это, Вы не должны скопировать и перекопировать файлы, которые не изменились. Алгоритм Rsync вычисляет изменения и отправляет только это.
Поскольку у меня больше нет этой проблемы, я хотел бы поделиться своим решением:
Я демонизировал скрипт Python. {{ 1}} Это позволило мне открыть последовательное соединение при запуске скрипта, а затем читать данные последовательного порта каждые десять секунд.
С тех пор никаких перерасходов.
Код сценария здесь, на GitHub