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

Я только что установил Сервер Ubuntu 10.04 с установкой ЛАМПЫ. Я хочу разместить веб-сайт там, но я не уверен, который является лучшим способом получать/редактировать мои файлы на сервере. Поиск с помощью Google предоставляет много возможностей, но я не уверен, который является лучшим?

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

21
задан 24 April 2014 в 15:36

7 ответов

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

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

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

Каждый пользователь имеет свою учетную запись в папке доменов (которую я добавил в /etc/skel), поэтому она создается каждый раз. Каждый домен имеет свою собственную папку в папке доменов с папкой 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

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

21
ответ дан 23 November 2019 в 01:51

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

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

11
ответ дан 23 November 2019 в 01:51

Я использую 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.

1
ответ дан 23 November 2019 в 01:51

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

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user
0
ответ дан 23 November 2019 в 01:51

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

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

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

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

-1
ответ дан 23 November 2019 в 01:51

Bạn có thể sử dụng sshfs. https://help.ubuntu.com/community/SSHFS

-1
ответ дан 23 November 2019 в 01:51

Вы хотите что-то вроде этого

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www
-2
ответ дан 23 November 2019 в 01:51

Другие вопросы по тегам:

Похожие вопросы: