2012-05-31 5 views
0

В настоящее время установлен стек LAMP с использованием tasksel, но у меня возникла проблема. Место, где находится папка веб-сайта, не легко записывается. Это боль в keister, чтобы что-то сделать.Настройка Apache. Папка var не может быть записана в

/var/www 

Поскольку я новичок в LAMP на Linux, возможно, я делаю что-то неправильно. Это только для моей dev-машины - не для производства.

Что такое рабочий процесс, если я хочу разработать приложение PHP и запустить его локально на Apache? Я даже не могу редактировать файлы по пути по умолчанию из-за разрешений от Linux.

Любые предложения? Может быть, я могу создать папку в моем домашнем каталоге и сказать Apache, чтобы использовать это вместо этого?

Что делают штатные?

+0

Почему он не «легко» доступен для записи? –

+0

Мне нужно будет «судо» за каждое изменение, которое мне нужно сделать. Это огромная трата времени. –

+0

Это не вопрос программирования. Принадлежит к серверу. – jordanm

ответ

1

Для меня«самый хороший»способ сделать это, чтобы изменить значение DocumentRoot внутри Apache в директории, доступной для записи, или создать псевдоним:

открытый файл conf (или сайт по умолчанию), в debian/ubuntu это находится в/etc/apache2/sites-enabled/000-default и редактировать DocumentRoot и другие ссылки на этот каталог (/ var/www):

DocumentRoot /home/user/Projects 
<Directory /home/user/Projects> 

После этого перезапустите apache (sudo services apache2 restart), а затем вы заработаете его в записываемом вами месте. Существует только одно неудобство: вам нужно будет добавить apache в свою группу пользователей, чтобы предоставить разрешения на запись apache для загрузки/создания файлов.

Надеюсь, это поможет! Гонсало G.

+0

Я говорю, что самое приятное, просто потому, что я воображаю, что это ваша «среда разработки» :-). В любом другом случае я обязательно попробую, чтобы вы пошли с чем-то вроде @sarnold – ggarcia24

+0

Это то, о чем я просил, я думаю, мой вопрос был не таким ясным, как я думал. –

+0

Я не могу сохранить изменения, которые я пишу в этот файл. Кнопка сохранения отключена. :/ –

0

Вы можете изменить права доступа в linux через терминал, например, chmod 777 = w r x write read execute для всех пользователей chmod 775 w r x для текущего пользователя. У вас есть su acess на сервере, если вы можете использовать это, если вы не можете изменять разрешения.

Это пример

Добавить чтение, запись, выполнение для пользователя и группы

Допустим, мы хотим taps.sh иметь все разрешения для тех, кто достаточно удачлив, чтобы быть в нашей группе, или будь мы. Для этого:

`

enter code here`$ chmod +rwx taps.sh 
$ ls -l taps.sh 
-rwxrwxr-x 1 erik erik 1014 2010-10-28 13:30 taps.sh 

Успехов

+0

Поскольку группа 'taps.sh'' 'erik', это довольно безобидно, но в целом вы не делаете _not_ хотите, чтобы исполняемый контент также был доступен для записи. Это зияющий недостаток безопасности, ожидающий случиться ... – sarnold

+0

Создание любой директории rwx для всего, как правило, плохая идея. Было бы лучше, если бы добавить группу к Пользователю, а затем разрешить Групповые разрешения всем необходимым. – Drizzt321

1

Unix разрешений файловой системы существуют, чтобы обеспечить безопасный и безопасный опыт вычислений. Лучше всего работать с разрешениями для моделирования рабочего потока и только иногда повышать привилегии, потому что повышенные привилегии - это когда проблемы могут возникать слишком легко. После principle of least privilege предотвратит серьезные нарушения безопасности.

У вас есть каталог, в котором хранится ваш статический веб-контент, исполняемый веб-контент (и, возможно, журналы в Интернете?) В /var/www/. Он не должен принадлежать пользователю Apache и не должен принадлежать вашей учетной записи пользователя. root (или что-то более конкретное, например www-content).

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

Возможно, вы также не хотите, чтобы каталог /var/www или любой из его дочерних элементов принадлежал вашей учетной записи пользователя - либо вы не хотите, чтобы недостаток Firefox, Evolution, Pidgin или Spotify имел доступ на запись к ваш контент веб-сервера.

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

Распределение часто делаются с помощью инструмента, как git - вы git push вашей работы разработки в хранилище, а затем, когда вы хотите, чтобы развернуть новую версию, необходимо войти в учетную запись, которой принадлежит каталогу /var/www и использовать git pull для загрузите новую версию. Это немного сложно, но наличие реальной системы управления версиями стоит того, чтобы приложить дополнительные усилия.

Если вы хотите что-то более простое, вы можете просто использовать sudo(1), чтобы поднять до www-content привилегии и скопировать содержимое; это может выглядеть примерно так:

cd ~/projects/website 
sudo -u www-content tar cf - . | (cd /var/www/ && tar xvf -) 

Таким образом, живого производства файлы принадлежат www-content и не могут быть записаны с помощью веб-сервера. У вашей учетной записи пользователя нет разрешения на их изменение, кроме случаев, когда вы выполняете команду sudo явно. (Настройка sudo(8) правильно может быть какой-то работой, если вы являетесь разработчиком одного человека, возможно, выполните следующие шаги: root будет работать нормально.)

Если у вас есть несколько пользователей, которые хотят работать с веб-контентом live, и вы доверяете им и программному обеспечению, которое они запускают полностью, тогда вы можете использовать групповое владение, чтобы пропустить некоторые из этапов. (Это может быть хорошо для использования любителями, но я бы не хотел использовать это для ведения бизнеса.) Добавьте учетную запись пользователя каждого пользователя в определенную группу, скажем www-editors, и сделайте /var/www, а дочерние группы принадлежат www-editors, используйте Поведение групп BSD (man 8 mount, ищите bsdgroups, для получения полной информации, для этого необходимо изменить параметры монтирования в /etc/fstab и установить бит setgid в каталогах). Это дает вам и всем пользователям группы возможность редактировать файлы без каких-либо промежуточных шагов. Это удобно и опасно. Использовать его мудро.

Смежные вопросы