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

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

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

7 ответов

Решение

Каждая установка отличается. Для меня у меня много пользователей на сервере, каждый из которых размещает веб-сайты, для вас, скорее всего, вам не нужно будет создавать более одного пользователя в системе. Однако, если вы управляете несколькими веб-сайтами на этом сервере, эта настройка поможет вам управлять, настраивать и отлаживать каждый домен более простым способом, чем стандартная настройка 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 (дополнительная информация: что такое PPA и как их использовать?). Затем, после установки, активируйте 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

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

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 и разместите там свои файлы.

Я использую webdav. Это очень легко установить на Ubuntu Server. Если у вас установлен 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.

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

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user

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

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

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

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

Вы можете использовать sshfs. https://help.ubuntu.com/community/SSHFS

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

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www
Другие вопросы по тегам