Я только что установил Сервер Ubuntu 10.04 с установкой ЛАМПЫ. Я хочу разместить веб-сайт там, но я не уверен, который является лучшим способом получать/редактировать мои файлы на сервере. Поиск с помощью Google предоставляет много возможностей, но я не уверен, который является лучшим?
Если нет более оптимальный вариант, я хотел бы быть, создают страницы на другом ПК (Windows или Linux) и используют SFTP для синхронизации изменений в сервере - но я делаю это к symlinked папке в ~ / или путем изменения прав на/var/www/папке?
Каждая установка отличается. Для меня на сервере, на котором расположен каждый из сайтов, много пользователей, поэтому, скорее всего, вам не понадобится создавать более одного пользователя в системе. Однако, если вы управляете несколькими сайтами на этом сервере, то эта настройка поможет вам управлять, настраивать и отлаживать каждый домен легче, чем стандартная настройка 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
Хотя может показаться, что много возможностей по настройке, на мой взгляд, намного перевешивает время настройки. Хотя вам нужен только один пользовательский веб-сервер, в будущем, если вам когда-нибудь понадобится что-нибудь кроме одного пользовательского веб-сервера, вам нужно будет выполнить дальнейшие действия (или просто сбросить безопасность все вместе), чтобы сделать это.
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 и поместив туда свои файлы.
Я использую 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.
Я бы дал разрешение на запись в /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
Вы используете какой-либо фреймворк для вашего сайта? Drupal, Wordpress и т.д.? Drupal, например, имеет инструменты для загрузки через взаимодействие с браузером.
Вы изучали Samba? Вы можете настроить общий доступ к Samba (а в Интернете для них много ресурсов) и просто использовать Проводник Windows для открытия/редактирования/сохранения/удаления. Настройте /var/www для общего доступа, а затем сопоставьте "сетевой диск" с Windows.
Это рабочая или домашняя среда? Похоже на дом, но если вы находитесь в рабочем окружении... вы можете подключить Samba к Active Directory с помощью таких инструментов, как Likewise-Open. У меня есть сервер/веб-сайт, настроенный таким образом, что сотрудники IT-магазина могут войти на любую сторону сервера (linux или вебсайт) через свои AD мандаты.
Я бы также посоветовал поискать что-нибудь вроде Mercurial. Создайте репозиторий на сервере и синхронизируйтесь с окнами через что-то вроде TortiseHG. Я предполагаю, что это что-то вроде rsync, но у вас будет поддержка версий, резервное копирование, возможность распространения и т.д. (все опции SVN, Mercurial, Git и т.д.)
Bạn có thể sử dụng sshfs. https://help.ubuntu.com/community/SSHFS
Вы хотите что-то вроде этого
rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www