Должен ли я символизировать каталог my / var / www в моем доме?

20

Я только что установил Ubuntu Server 10.04 с настройкой LAMP. Я хочу разместить там сайт, но я не уверен, что это лучший способ получить / отредактировать мои файлы на сервере. Googling предоставляет множество опций, но я не уверен, что лучше всего?

Если нет лучшего варианта, я бы хотел создать страницы на другом ПК (Windows или Linux) и использовать SFTP для синхронизации изменений с сервером, но я делаю это в символической папке в ~ / или путем изменения прав в папке / var / www /

    
задан Craig 27.05.2011 в 14:36
источник

7 ответов

21

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

Во-первых, это структура документа, которую я использую:

/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs

У каждого пользователя есть своя учетная запись с папкой доменов (которую я добавил в /etc/skel , поэтому она создается каждый раз. У каждого домена есть собственная папка в папке domains с папкой html (у меня есть мой причины для этого, в первую очередь, поэтому домены могут иметь веб-файлы за пределами публичной сферы). Не стесняйтесь изменять эту структуру по своему усмотрению, просто не забудьте переносить эти изменения на протяжении всего сообщения.

Во-вторых, у меня есть много сайтов PHP, поэтому я использую suPHP в своей конфигурации. По умолчанию стандартный пакет архивов не имеет соответствующего флага компиляции, что приводит к менее безопасной версии suPHP. Я сделал свой собственный пакет suPHP, который я использую на своих серверах, инструкции по установке ниже. suPHP позволяет определить, какие сценарии пользователя PHP должны быть выполнены (среди прочего, в том числе: пользовательский php.ini для каждого сайта и т. д.). Я также разрешаю suExec для Apache - дальнейшее устранение необходимости владения пользователем www-data (пользователя, которого я презираю).

Сначала убедитесь, что у вас есть Apache и все другие службы, установленные на вашем сервере. Убедитесь, что они, по крайней мере, работают. После этого я рекомендую установить suphp-common и необходимый модуль libapache2-mod-suphp (Дополнительная информация: Что такое PPAs и как их использовать? . Затем, после установки, активируйте suPHP и suexec, используя a2enmod

sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5

sudo /etc/init.d/apache restart

Далее появится файл конфигурации. Я создал различные инструменты, которые автоматически генерируют файлы конфигурации каждый раз, когда я добавляю новый сайт; однако, вот основной шаблон, который я использую:

<VirtualHost *:80>
    ServerAdmin [EMAIL]
    ServerName [DOMAIN]
    ServerAlias www.[DOMAIN] [DOMAIN]
    DocumentRoot /home/[USER]/domains/[DOMAIN]/html

    <Directory /home/[USER]/domains/[DOMAIN]>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
    </Directory>

    ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined

    SuexecUserGroup [USER] [USER]

    suPHP_UserGroup [USER] [USER]
    suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>

Это устанавливает ведение журнала для этого домена, корня документа и всех других основных потребностей для работы домена. Я помещаю эти файлы в /etc/apache2/sites-available/ , обычно называемый [USER]-[DOMAIN] , и включает / отключает их с a2ensite , например:

sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]

После каждой модификации файлов конфигурации Apache необходимо перезагрузить с помощью

sudo /etc/init.d/apache reload

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

    
ответ дан Marco Ceppi 01.06.2011 в 22:34
источник
11

Sftp очень прост в установке. Просто установите пакет openssh-server , и у вас будет sftp. Убедитесь, что у вашего пользователя есть хороший пароль, если вы можете добраться до него из Интернета. (8 + символов, а не слова словаря, имеет символы и цифры).

Для разрешений я обычно делаю это
sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rw /var/www
Затем вы можете отправлять страницы, подключившись к sftp (используя свое имя пользователя и пароль), а затем перейдите в папку / var / www и разместите там свои файлы.

    
ответ дан Azendale 27.05.2011 в 15:57
1

Я использую webdav. Его очень легко установить на сервере Ubuntu. Если вы установили apache, вы почти закончили. Просто sudo a2enmod dav; service apache2 restart . Вам нужно будет немного настроить свой виртуальный сайт. Вот пример, который я использую в производстве:

<VirtualHost *>
    ServerName webdav.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite
    DAVLockDB /var/lock/apache2/DAVLock
    <Directory /srv/mysite>
        Order allow,deny
        Allow from all
    Dav On
    DAVMinTimeout 600
    DAVDepthInfinity On
AuthName "mysite login"
AuthType Basic
AuthUserFile /srv/mysite/.htpassword
Require valid-user

    </Directory>
php_admin_value engine off
</VirtualHost>

<VirtualHost *>

    ServerName mysite.com
    ServerAlias *.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite/www
    <Directory /srv/mysite/www>
        Order allow,deny
        Allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /srv/mysite/cgi-bin/
</VirtualHost>

Вы можете поместить это в / srv / etc / apache2 / sites-available / mysite, а затем сделать sudo a2ensite mysite; sudo service apache2 reload .

Что здесь происходит, вы создали два виртуальных сайта. Один из них - www.mysite.com, а другой - webdav.mysite.com. PHP был отключен на webdav.mysite.com, что важно.

Теперь вы можете получить доступ к своему сайту через http на Ubuntu, Windows и MacOS. Все три встроены в поддержку webdav. Ниже приведены инструкции по добавлению сетевого местоположения webdav в Ubuntu .

    
ответ дан newz2000 01.06.2011 в 22:03
0

Я бы предоставил права на запись в / var / www для www-данных и добавил пользователя в эту группу. Таким образом, было бы легко контролировать, какие пользователи могут писать в этот каталог.

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user
    
ответ дан santiagozky 27.05.2011 в 15:55
-1

Используете ли вы какие-либо рамки для своего сайта? Drupal, Wordpress и т. Д.? Drupal, например, имеет инструменты для загрузки через взаимодействие с браузером.

Вы заглянули в Samba? Вы можете настроить общий ресурс Samba (а для них есть много ресурсов в Интернете) и просто использовать проводник Windows для открытия / редактирования / сохранения / удаления. Setup / var / www для совместного использования, а затем сопоставьте «сетевой диск» с окнами.

Это работа или домашняя среда? Это звучит как дома, но если вы находитесь в рабочей среде ... вы можете подключить Samba с Active Directory с помощью таких инструментов, как Likewise-Open. У меня есть настройка сервера / веб-сайта, так что те, кто в ИТ-магазине, могут войти в любую сторону сервера (linux или веб-сайт) через свои учетные данные AD.

Я также предлагаю взглянуть на нечто вроде Mercurial. Создайте репозиторий на сервере и синхронизируйте с окнами через нечто вроде TortiseHG. Я предполагаю, что это похоже на rsync, но у вас были бы версии, резервные копии, возможность распространения и т. Д. (SVN, Mercurial, Git и т. Д. Все параметры)

    
ответ дан WernerCD 01.06.2011 в 22:16
-1

Вы можете использовать sshfs. Ссылка

    
ответ дан Mihai 13.07.2011 в 14:10
-2

Вы после чего-то вроде этого

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www
    
ответ дан kim0 01.06.2011 в 21:58