[РЕШЕНО] Права доступа, LAMP

Аватар пользователя xSPiRiTx xSPiRiTx 23 июня 2014 в 1:08

Ubuntu + LAMP
файлы всяких CMS должны скидываться в /var/www/html. но просто так ничего туда не кинешь. либо от рута либо...я сделал sudo chown -R spirit /var/www/html...после чего свободно владею директорией и кидаю туда что хочу.
Однако, при установки Drupal 7 он выдал мне сообщение, что не может создать директорию files и файл настроек settings.php. А я помню где-то был видос как друпал в убунте ставили...так вот оттуда я урвал команду sudo chown -R www-data:www-data /var/www/html. Все ок, установка движка прошла успешно и круто. Но! Теперь то я не владею этой директорией. И что? чтобы закинуть туда модулей друпалу мне нужно заходить от root? или как быть?

Комментарии

Аватар пользователя bsyomov bsyomov 23 июня 2014 в 1:31

Скорее в /var/www/domain.name/, особенно, если майтов более одного.

Владельцем может быть какой-то пользователь. Веб сервер можно запустить от пользователя www-data и группы пользователя, под которым заливались файлы. Например, это можно сделать с помощью apache-mpm-itk(при этом разные сайты, могут принадлежать разным пользователям). И на папку /sites/*/files надо дать права на запись группе. Да, папку эту надо бы заранее создать, как впрочем, и файл с настройками.

Почитайте про права, группы, владельца и.т.п. в Linux. В принципе, как всё это работает, должен знать каждый приличный веб разработчик.

Аватар пользователя Stan.Ezersky Stan.Ezersky 23 июня 2014 в 1:53

Ох, давно это было, когда делал мануал по домашнему серверу для работы с сайтами.
Ситуация: полностью «ручная« сборка сервера

Сделаем так, чтобы виртуальные хосты запускались не от www-data, а от пользователя. Начнём с того, что нам надо заменить apache2 на модифицированный apache2-mpm-itk.
Откроем терминал и выполним:

sudo apt-get install apache2-mpm-itk

Пакет при установке предложит удалить apache2, смело жмите «Y», все ранее сделанные изменения в настройках останутся неизменными.
Пользователь stan у нас есть, группа stan тоже есть. От этого имени и группы будут работать виртуальные хосты нашего web-сервера.
Владельца и группу директории с нашими сайтами мы уже меняли выше

sudo chown -R stan:stan /var/www

Остаётся добавить следующую команду. Для этого перейдём в /var/www/:

cd /var/www/

и выполним:

find ./ -type d -exec chmod 4770 {} \;

Затем отредактируем конфигурационные файлы виртуальных хостов. Откроем файл нашего виртуального хоста:

sudo gedit /etc/apache2/sites-available/drupal

и добавим

<IfModule mpm_itk_module>
        AssignUserId stan stan
</IfModule>

Где stan stan это владелец и группа. Именно в таком порядке. Файл drupal в директории /etc/apache2/sites-available/ должны выглядеть так:

<VirtualHost *:80>
 
ServerAdmin webmaster@drupal.loc
!>
ServerName drupal.loc
ServerAlias drupal.homeip.net
 
DocumentRoot /var/www/drupal
 
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
 
        <Directory '/var/www/drupal/'>
                AllowOverride All
        </Directory>
 
        <IfModule mpm_itk_module>
                AssignUserId stan stan
        </IfModule>
 
</VirtualHost>

Перезагрузим web-сервер:

sudo /etc/init.d/apache2 restart

Я не знаю, как у вас установлен сервер на Ubuntu, надеюсь эта выдержка из мануала чем-то поможет.
Было актуально для Debian Lenny, проверено неоднократно.

Аватар пользователя xSPiRiTx xSPiRiTx 23 июня 2014 в 12:34

А если я сделаю вот как...начну запускать apache от своего имени, а не от www-data пользователя, и так же присвою себя владельцем директории /var/www?

sudo nano /etc/apache2/envvars
и там в этих строчках заменить www-data на себя

export APACHE_RUN_USER=spirit
export APACHE_RUN_GROUP=spirit

присваиваем права на директории
sudo chown spirit.spirit /var/lock/apache2
sudo chown spirit.spirit -R /var/log/apache2
sudo chown -R spirit.spirit /var/www
перезагружаем сервер
sudo service apache2 restart

по желанию можно слинковать себе в хомяка для удобства
ln -s /home/spirit/html /var/www/html
и ту да же до кучи конфигу виртуальных хостов
ln -s /home/spirit/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

Аватар пользователя ihappy ihappy 23 июня 2014 в 13:49

Mогу порекомендовать Vesta CP.
Ставишь ее и имеешь настроенный www/ftp/php/mysql и тп и тд. В общем полностью рабочий сервер будет.
Конечно для полного счастья, надо напильником подработать.
Но к довесок всему, получаешь настроенную систему с адекватной веб-мордой. Где почти полностью можно управлять системой. И подобные проблемы там решены уже сразу.
Ставится легко.

Аватар пользователя drupby drupby 23 июня 2014 в 19:12

"xSPiRiTx" wrote:
гамно! друпал все равно при установке ругается на то, что не может создать settings.php и директорию под файлы. заебал уже.

Stan.Ezersky описал вполне себе рабочее решение используя mpm-itk реализуемое за 5-10 минут

Аватар пользователя drupby drupby 23 июня 2014 в 22:52

"xSPiRiTx" wrote:
у меня не предлагает удалить apache2...походу ставит рядом

ну так mpm-itk модуль апача

Аватар пользователя xSPiRiTx xSPiRiTx 24 июня 2014 в 0:17

действительно, инструкция Stan.Ezersky то, что нужно!!!
запищу щас даже весь процесс установки и конфигурации с нуля (писал для себя)

1) обновляем список пакетов
sudo apt-get update

2) устанавливаем lamp сервер
sudo apt-get install lamp-server^
*во время установки попросят задать пароль для баз MySQL

3) устанавливаем php
sudo apt-get install php5 php5-gd php5-mysql php5-curl php5-cli php5-cgi php5-dev

4) устанавливаем phpMyAdmin (если нужно) для работы с БД
sudo apt-get install phpmyadmin
*во время установки в качестве веб-сервера выбрать apache2
*настроить базу данных для phpmyadmin в с помощью dbconfig-common - ДА
*ввести пароль MySQL, который мы задавали до этого

5) в файле /etc/apache2/apache2.conf добавить это:
ServerName localhost
Include /etc/phpmyadmin/apache.conf

6) линкуем phpmyadmin, если не открывается
sudo ln -s /usr/share/phpmyadmin/ /var/www

7) правим файл /etc/php5/apache2/php.ini
max_execution_time = 120
max_input_time = 90
memory_limit = 128M
post_max_size = 150M
upload_max_filesize = 150M
session.gc_maxlifetime = 14400

раскомментируем в этом же файле строчку
extension=msql.so

Dirol далее устанавливаем пакетapache2-mpm-itk (для запуска виртуальных хостов от своего пользователя)
sudo apt-get install apache2-mpm-itk

9) выставим права
sudo chown -R username:username /var/www
cd /var/www/
find ./ -type d -exec chmod 4770 {} \;

10) добавляем виртуальный хост.
в /var/www создаем директорию с именем будущего хоста (например, drupal.my)

11) в /etc/apache2/sites-available/ создаем файл.conf хоста, например /etc/apache2/sites-available/drupal.my.conf

12) содержимое должно выглядеть таким образом:

ServerAdmin admin@drupal.my
ServerName drupal.my
ServerAlias www.drupal.my
DocumentRoot /var/www/drupal.my
ErrorLog ${APACHE_LOG_DIR}/drupal.my-error.log
CustomLog ${APACHE_LOG_DIR}/drupal.my-access.log combined

AssignUserId username username

*вместо drupal.my везде вписываете имя своего хоста, а вместо username своё имя пользователя в системе

13) активируем наш хост
sudo a2ensite drupal.my.conf

14) в /etc/hosts записываем наш хост таким образом
127.0.0.1 drupal.my

Полное удаление lamp из системы:
1) sudo apt-get purge libapache2-mod-auth-mysql phpmyadmin

2) dpkg -l | grep ^ii | grep mysql-server | awk -F' ' '{ print $2 }'
*команда выведет на экран список пакетов....их все нужно удалить (sudo apt-get purge пакет1 пакет2 пакет3 ...)

3) dpkg -l | grep ^ii | grep apache2 | awk -F' ' '{ print $2 }'
*тоже самое, что и в п.2

4) sudo apt-get autoremove