Виртуальные хосты на apache2 под Ubuntu 16.04lts
Редакция автор: stainUbuntu 16.04 Lts +Apache2 +Несколько доменов на одном IP + сайты в каталоге пользователя
Добавить в /etc/apache2/apache2.conf после других аналогичных записей:
sudo nano /etc/apache2/apache2.conf
AllowOverride All
Require all granted
Добавить в самом низу файла /etc/apache2/apache2.conf
ServerName localhost
Меняем очередность файлов индекса, переставляем index.php в начало списка в файле /etc/apache2/mods-available/dir.conf.
sudo nano /etc/apache2/mods-available/dir.conf
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
===Цикл===
//Добавляем виртуальные хосты
sudo nano /etc/hosts
127.0.0.1 localhost вашсайт
//Копируем базовый конфиг /etc/apache2/sites-available/000-default.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/вашсайт.conf
//Правим /etc/apache2/sites-available/вашсайт.conf
sudo nano /etc/apache2/sites-available/вашсайт.conf
ServerName ВашСайт
DocumentRoot /home/YourUserName/public_html/вашсайт
//Включаем сайт в apache2
sudo a2ensite вашсайт
//Перезапускаем apache2
sudo service apache2 reload
===/Цикл===
Права на каталог ~/public_html
sudo adduser USERNAME www-data
sudo chown USERNAME:www-data -R ~/public_html
chmod -R 775 ~/public_html
Мы добавили себя в группу www-data (поскольку от пользователя www-data группы www-data работает Apache) Сделали группу www-data группой владельца корневой папки наших сайтов. Присвоили для этой папки права чтения и записи для владельца и его группы. Это нужно для того, чтобы пользователи YourUserName (от имени которого мы заливаем файлы на сервер) и пользователя www-data (от имени которого работает веб-сервер) имели одинаковые права.
При добавлении каждого сайта над его папкой нужно будет производить эту процедуру (кроме первой команды; только не ко всей public_html, а лишь к папке нового сайта). Также нужно это делать для новых файлов, требующих изменения со стороны сервера.
===частьЦикла===
sudo chown USERNAME:www-data -R ~/public_html/вашсайт
chmod -R 775 ~/public_html/вашсайт
===/частьЦикла===
!!!Чтобы получить доступ с другого компьютера, на удаленном компьютере прописываем в файл C:\Windows\System32\drivers\etc\hosts IP-adress-servera вашсайт
P.S: При привязке git, а вернее во время передачи данных, происходит запрос в каталог ~/.config , по умолчанию у него права root (хотя может быть я что то лишнее запустил в режиме sudo) решение:
Идем на сервер через ssh в папку в домашний директорий пользователя ~/
Смотрим права:
sudo ls -la
Меняем владельца если нужно:
sudo chown USERNAME:www-data -R ~/.config
Скрипт цикла создания виртуального хоста
Скрипт создает виртуальный хост/каталог/запись в файле hosts/конфигурационный файл, изменяет в конфигурационном файле параметр ServerName и DocumentRoot перезапускает apache.
Пример запуска sudo bash createhost.sh sitename username
#!/bin/bash
#sudo bash snc.sh site user
if [ -z $1 ] ; then
echo «Do not set your domain name.»
exit 1 ; fi
if [ -z $2 ] ; then
username='im'
echo «Do not set your user name.» ; fi
mkdir -p /home/$username/public_html/$1/public_html
echo "127.0.0.1 "$1 | sudo tee -a /etc/hosts
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/$1.tmp.conf
sed -e "s!\#ServerName www.example.com!ServerName ${1}!; s!DocumentRoot /var/www/html!DocumentRoot /home/${username}/public_html/${1}/public_html!" /etc/apache2/sites-available/$1.tmp.conf > /etc/apache2/sites-available/$1.conf
rm /etc/apache2/sites-available/$1.tmp.conf
a2ensite $1
chown $username:www-data -R /home/$username/public_html/$1
chmod -R 775 /home/$username/public_html/$1
Источник из 2014
Комментариев: 0