Должен ли я ссылаться на мой каталог /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