Разное

Site loc: Как сделать поддомены на localhost? — Хабр Q&A

11.11.2017
Виртуальные хосты Apache2, доступные из локальной сетиБлог MerinovKV

С недавних пор пришлось озаботиться доступом к сайтам на локалхосте из локальной сети. Кому-то эго потешить, кому-то дать доступ к внутрикорпоративному порталу, кому-то просто, чтобы дома можно было работать не только за одним компьютером.
Итак, поехали.

Будем считать, что у нас есть сайт на виртуальном хосте. Например,, пусть это будет site.loc. Также даны два компьютера — один под Open SUSE (Apache2 + PHP + MySQL, IP: 192.168.0.100, например), второй — под WinXP (пусть это будет ноутбук, если кому-то интересно). Мне нужно, чтобы я мог зайти в phpMyAdmin и работать с админкой site.loc c ноутбука. Ну, или просто посмотреть из-под винды, как оно будет выглядеть 🙂

Содержание

Настроим сеть

Для начала, на компьютере, откуда хотим получить доступ (в нашем случае, с WinXP), открываем файл C:/Windows/System32/drivers/etc/hosts и добавляем строчку после

127.0.0.1:

192.168.0.100 site.loc

Сохраняем файл. что тут написано — при наборе адреса «site.loc» идти на IP «192.168.0.100«. Это вместо того, чтобы поднимать DNS ради одного-двух-пяти сайтов.

Если второй компьютер на Linux — файл будет /etc/hosts, действия — те же.

phpMyAdmin

Если с phpMyAdmin все относительно просто — пишем http://192.168.0.100/phpMyAdmin (регистр тут важен) и все открывается, то с виртуальными хостами придется расковырять пару файлов.

Виртуальные хосты

site.loc, соответственно, живет на виртуальном хосте, который прописан так:

sudo nano /etc/apache2/vhosts.d/site.loc.conf

<VirtualHost 127.0.0.1:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost>

Все прекрасно работает на локалхосте, но при попытке зайти на site.loc cо второго компьютера, нас ждет облом. Откроется страница, находящаяся в папке WWW (по умолчанию там будет написано «It worws!«). Вот тут-то мы и начинаем.

Для начала, апачу нужно сказать, какие порты слушать и на каких интерфейсах (он же не телепат, правильно?). Открываем файл /etc/apache2/listen.conf и видим там нечто следующее (исключая коммментарии, конечно):

sudo nano /etc/apache2/listen.conf

Listen 80
<IfDefine SSL>
	<IfDefine !NOSSL>
		<IfModule mod_ssl.c>
			Listen 443
		</IfModule>
	</IfDefine>
</IfDefine>

К этому всему добру надо указать апачу слушать два интерфейса — локальный (127.0.0.1), чтобы можно было смотреть сайт на локалхосте как раньше, и внешний (192.168.0.100), чтобы апач принимал запросы еще и с того интерфейса, который смотрит в локалку.

NameVirtualHost 192.168.0.100:80
NameVirtualHost 127.0.0.1:80

Можно добавить это в самый конец файла, можно в начало.

Чтобы апач слушал все интерфейсы на 80 порту — вместо того, что выше, добавляем

NameVirtualHost *:80

Этот вариант хорош именно в нашем случае, когда у нас по сути 2 интерфейса (значимых для дела) — 127.0.0.1 и 192.168.0.100

Чтобы все интерфейсы на всех портах (а надо ли?)

NameVirtualHost *

В принципе, все это описано в комментариях в этом же файле. Правда, на английском…

Теперь открываем известный нам уже файл /etc/apache2/vhosts.d/site.loc.conf и добавляем в него блок:

<VirtualHost 127.0.0.1:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost>

Таким образом, должно получиться так:

sudo nano /etc/apache2/vhosts.d/site.loc.conf

<VirtualHost 192.168.0.100:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost> 

<VirtualHost 127.0.0.1:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost>

Собственно, осталось перезапустить апач:

sudo /etc/init.d/apache2 restart

и проверять. Все должно работать на обоих компьютерах.

Правильный файл sitemap.xml или как создать карту сайта своими руками

Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!

04.06.2013

Здравствуйте уважаемые читатели блога

Site on! Сегодня я хочу продолжить тему «создания своими руками» и если в прошлый раз мы говорили о создании ЧПУ (SEF) ссылок, то сегодня речь пойдёт о составлении собственной XML карты сайта.

Что такое карта сайта?

Карта сайта – это древовидный (упорядоченный) список всех разделов и/или страниц сайта, который состоит из ссылок на эти страницы. Карты сайта бывают двух видов: для посетителей сайта (HTML версия) и для поисковых роботов (XML версия).

Зачем нужна карта сайта?

HTML карта сайта служит навигацией для ваших посетителей, благодаря ей они должны быстро сориентироваться в структуре вашего сайта и перейти в нужный им раздел.

XML карта сайта помогает найти поисковым роботам страницы вашего сайта, которые нужно проиндексировать. В случае большого количества страниц и уровней вложенности на сайте, XML карта даёт нам гарантию, что поисковые системы не пропустят страницы, которые должны быть проиндексированы. Также это показывает ваше желание помочь поисковым роботам, что повысит их доверие к вашему сайту.

Ещё одно различие обычной (HTML) карты сайта от XML версии помимо всего прочего заключается в том, что в XML нам не нужно строить упорядоченный, древовидный список (чтобы было красиво и понятно), мы можем указывать URL вразброс, так как важен сам факт их наличия, а не наглядность или последовательность.

Я считаю, что, если наличие HTML версии нужно далеко не всегда, то XML я использую даже для трёхстраничных сайтов, как минимум ради «галочки» в кабинете поисковых систем и мизерного повышения траста к своим сайтам. Делать её всего пару минут, а лишней она точно не будет.

Положительные стороны наличия XML карты сайта:

  • Более быстрая индексация новых страниц.
  • Гарантия, что робот найдёт нужные страницы.
  • Возможность распределения приоритетов при индексировании.
  • Возможность указания частоты обновления информации на каждой странице.
  • Возможность указания даты последнего обновления страницы.
  • Капля в сосуд доверия к вашему сайту.

Внимание!

Для файлов Sitemap должна использоваться кодировка UTF-8.

Размер XML карты сайта не должен превышать 10 MB и не должен содержать больше 50000 URL. Если ваша карта превышает данные показатели, вы можете разбить её на несколько файлов и создать файл индекса sitemap. Подробнее об этом дальше.

В XML версии все ссылки должны быть абсолютными! То есть начинаться с
http://имя_домена/

Как создать sitemap.xml своими руками?

Вначале вы должны создать файл с произвольным именем и расширением .xml, либо .txt или RSS канал, но XML формат даёт больше возможностей и более привычен. Также рекомендуется размещать его именно в корне вашего сайта и называть sitemap.xml

, но опять-таки повторюсь, вы можете пренебречь этими рекомендациями и назвать файл как хотите, а также положить его куда угодно. Лично я за классику, поэтому для этого блога сделал всё как рекомендуется:

http://site-on.net/sitemap.xml

Далее открываем файл на редактирование, например, с помощью редактора кода Sublime Text 2 или phpDesigner 8 и первой строчкой, без пробелов и табуляций пишем xml-пролог, в котором мы указываем кодировку:

<?xml version="1.0" encoding="UTF-8"?>

После этого идёт обязательный корневой XML-тег:

<urlset>

Он должен содержать стандарт текущего протокола:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

Затем мы перечисляем всё ссылки и их параметры, для того чтобы начать описание новой ссылки мы должны написать обязательный тег

<url></url>

В дочерних тегах которого будет адрес ссылки и её параметры. Чтобы указать URL адрес страницы мы должны записать его абсолютный путь внутри тега

<loc></loc>

Который, как я уже писал, будет вложен в тег <url>. В конце последнего <url> не забываем закрыть корневой элемент </urlset>. Итого минимальная карта сайта будет иметь вид:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://site-on.net/</loc>
   </url>
</urlset>

Ещё раз повторю, что все теги, написанные здесь обязательны — без них ваша карта сайта не будет работать вообще, так как XML не допускает ошибок! А теперь давайте поговорим о необязательных тегах, благодаря которым мы можем указывать дополнительную информацию о каждом конкретном URL, они, как и обязательный тег loc пишутся внутри тега url.

Тег lastmod

Тег

<lastmod>

Предназначен для указания даты последнего изменения страницы, дата должна быть записана по стандарту W3C Datetime. Например:

<url>
    <loc>http://site-on.net/</loc>
    <lastmod>2013-06-04T08:34:46+01:00</lastmod>
</url>

Можно опустить точное время и записывать lastmod в более привычном виде:

<lastmod>2013-06-04</lastmod>

Тег changefreq

Тег

<changefreq>

Позволяет указать приблизительную частоту изменений страницы. Его допустимые значения:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

Например:

<url>
    <loc>http://site-on.net/</loc>
    <lastmod>2013-06-04</lastmod>
    <changefreq>weekly</changefreq>
</url>

В данном примере мы указали частоту обновления главной страницы: раз в неделю. Обращаю ваше внимание, что как и в случае с директивами robots.txt – тег changefreq носит лишь рекомендательный характер, поэтому если вы укажите частоту обновления страницы раз в год, то это ещё не значит что роботы будут посещать её всего лишь 1 раз в год, они могут наведываться хоть каждую неделю, если посчитают нужным.

Тег priority

И последним тегом, которым вы можете пользоваться при составлении своего файла sitemap.xml является:

<priority></priority>

Он показывает, какие страницы нужно проиндексировать как можно скорее, а какие можно и потом, то есть данный тег расставляет приоритет важности (очередь на сканирование). Значение задаётся от 0.0 до 1.0, значение для всех URL по умолчанию равно 0.5.

Внимание!

Priority – это относительная величина, поэтому нет смысла писать для всех страниц (с целью накрутки) приоритет – 1.0, это действие бессмысленно.

Priority – не влияет на позиции страниц в поисковой выдаче! Его значение влияет только на очередь индексирования между страницами вашего сайта.

Пример:

<url>
    <loc>http://site-on.net/create</loc>
    <priority>1.0</priority>
</url>
<url>
    <loc>http://site-on.net/create/html</loc>
    <priority>0.8</priority>
</url>

В каждом URL вашей карты сайта вы можете использовать разные сочетания необязательных тегов (атрибутов):

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
<url>
    <loc>http://site-on.net/</loc>
    <lastmod>2013-06-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
</url>
<url>
    <loc>http://site-on.net/about</loc>
    <lastmod>2013-06-04T08:34:48+01:00</lastmod>
    <priority>1.0</priority>
</url>
<url>
    <loc>http://site-on.net/create</loc>
    <priority>1.0</priority>
</url> 
</urlset>

Маскирование символов

По стандарту, в sitemap.xml все нижеприведённые символы должны быть замаскированы с помощью соответствующих им значений в таблице:

Вам необязательно маскировать символы вручную, вы можете воспользоваться этим сервисом: www.accessify.com

Создание файла индекса Sitemap для использования нескольких sitemap.xml

По стандарту, если у вас несколько файлов sitemap.xml, то они должны быть перечислены в файле индекса – это, как бы парадоксально не звучало, карта ваших карт сайта. То есть в файле индекса содержится перечень всех ваших файлов sitemap, в нём вы также можете пользоваться необязательным атрибутом lastmod.

Структура файла индекса полностью идентична структуре обычной карты сайта, поэтому чтобы не растягивать статью просто приведу вам пример:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http://site-on.net/sitemap1.xml</loc>
      <lastmod>2013-06-04</lastmod>
   </sitemap>
   <sitemap>
      <loc>http://site-on.net/sitemap2.xml</loc>
   </sitemap>
</sitemapindex>

Вся вышеприведённая информация взята с официального источника: www.sitemaps.org

Как создать правильную карту сайта для Joomla

Если ваш сайт имеет пару десятков страниц и не собирается увеличивать их количество, то вы, конечно же, можете создать карту сайта вручную. Между прочим, я считаю такой способ более предпочтительным по ряду причин:

  • Вам не нужно устанавливать дополнительные компоненты и плагины;
  • Они в свою очередь могут иметь изъяны безопасности;
  • Карта сайта будет быстрее загружаться, так как не будет отрисовываться на лету.

Однако если количество страниц вашего сайта давно перевалило за 20 и постоянно растёт, то составление карты сайта своими руками теряет свою целесообразность на фоне всех неудобств и затрат времени. Поэтому ребята из Guillermo Vargas решили создать замечательный компонент для Joomla под названием XMAP, который помимо самой Джумлы имеет поддержку большинства популярных компонентов (VirtueMart, Zoo, K2 и др.).

Благодаря этому компоненту вы всего за пару минут создадите правильную карту (HTML и XML) для сайта любого объёма!

Компонент для создания карты сайта на Joomla + VirtueMart – XMAP

Актуальная версия Joomla на момент написания статьи: 2.5.11, актуальная версия XMAP: 2.3.3. Итак, скачиваем бесплатный компонент XMAP с официального сайта разработчиков, этот компонент доступен для любой версии Joomla и VirtueMart, не забудьте выбрать именно вашу версию:

Далее устанавливаем его стандартным способом с помощью «Менеджера расширений», затем заходим в административную панель Джумла: Компоненты/Xmap и сразу зайдём во вкладку «Расширения», чтобы включить нужные нам плагины:

Обычно это Content, WebLinks и VirtueMart для интернет-магазинов. После чего возвращаемся на предыдущую страницу и нажимаем красивую жёлтую кнопочку «Создать» вверху справа:

Теперь вы должны поставить галочки для меню, страницы которых будут автоматически появляться в вашей карте сайта, также здесь вы можете выставить необязательные атрибуты (приоритет и частота обновления), о которых мы уже говорили.

В остальном вам должно быть всё понятно, разве что я рекомендую отключить опцию «Украшать XML», так как она вовсе не к чему:

После всех настроек не забываем поставить состояние «опубликовано» и нажать «сохранить и закрыть»:

Теперь нам остаётся лишь нажать на ссылку «XML Sitemap» и скопировать URL карты сайта в robots.txt и кабинеты Яндекса и Гугл:

Примечание:

Чтобы в вашей карте сайта появились товары из VirtueMart, вы должны создать отдельный пункт меню для категорий VirtueMart и проследить, чтобы в настройках XMAP стояла галочка напротив этого меню.

Если что-то осталось непонятным или вы с чем-то не согласны – оставляйте свои комментарии, я обязательно отвечу.

Всем спасибо за внимание, вы можете подписаться на выход новых статей, используя форму ниже или с помощью кнопок в самом вверху (или справа) страницы. Всем удачного дня и до встречи в новых статьях!

Пожалуйста, оцените эту статью
Средняя оценка: 4.82 из 5 (проголосовало: 131)

Статья оказалась вам полезной? Подпишитесь, чтобы не пропустить новые!

Вы можете помочь развитию проекта, сделав всего 1 клик:
Спасибо!

генерация ssl ключей и настройка apache

SSL Certificate

При разработке AMP версии одного проекта, столкнулся с тем, что формы требуют наличие https для домена. Разработку веду на локальном веб-сервере, поэтому https-а там не было. В этой статье расскажу как настроить..

В этот раз я использовал локальный веб-сервер «Apache 2», поэтому далее речь пойдет именно про его настройку.

Прежде всего, создаем папку для сертификатов и переходим в неё:

sudo mkdir -p /etc/ssl/apache2 cd /etc/ssl/apache2

 

sudo mkdir -p /etc/ssl/apache2

cd /etc/ssl/apache2

 

Теперь генерируем сертификат для localhost:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout localhost.key \ -out localhost.crt

 

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \

-keyout localhost.key \

-out localhost.crt

 

Отвечаем на простые вопросы, вводимая информация особо не важна, т.е. можно ввести что угодно

Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:localhost Email Address []:no-reply@localhost

 

Country Name (2 letter code) [AU]:US

State or Province Name (full name) [Some-State]:New York

Locality Name (eg, city) []:New York

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home

Organizational Unit Name (eg, section) []:IT

Common Name (e.g. server FQDN or YOUR name) []:localhost

Email Address []:no-reply@localhost

 

На выходе, получаем два файлика: localhost.key и localhost.crt

Теперь, добавляем модуль mod_ssl в апач:

Далее открываем файл конфигурации виртуального хоста и добавляем  инструкции по подключению SSL.

Например, если для обычного http у вас была вот такая запись конфигурации

<VirtualHost *:80> ServerName mysite.loc ServerAlias www.mysite.loc ServerAdmin [email protected] DocumentRoot /work/progr/webamp/sites/mysite.loc/public_html/web <Directory «/work/progr/webamp/sites/mysite.loc/public_html/web»> AllowOverride All Options FollowSymLinks Require all granted RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php DirectoryIndex index.php index.html </Directory> <IfModule mpm_itk_module> AssignUserId vitto vitto </IfModule> php_admin_value open_basedir «/work/progr/webamp/sites/mysite.loc/public_html:/work/progr/webamp/sites/mysite.loc/tmp:/tmp» php_value upload_tmp_dir «/work/progr/webamp/sites/mysite.loc/tmp» php_value session.save_path «/work/progr/webamp/sites/mysite.loc/tmp» php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors off php_value error_reporting -1 ErrorLog /work/progr/webamp/sites/mysite.loc/logs/error.log CustomLog /work/progr/webamp/sites/mysite.loc/logs/access.log combined </VirtualHost>

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

 

<VirtualHost *:80>

 

    ServerName mysite.loc

    ServerAlias www.mysite.loc

    ServerAdmin [email protected]

    DocumentRoot /work/progr/webamp/sites/mysite.loc/public_html/web

 

    <Directory «/work/progr/webamp/sites/mysite.loc/public_html/web»>

        AllowOverride All

        Options FollowSymLinks

        Require all granted

 

        RewriteEngine on

        RewriteCond %{REQUEST_FILENAME} !-f

        RewriteCond %{REQUEST_FILENAME} !-d

        RewriteRule . index.php

 

        DirectoryIndex index.php index.html

    </Directory>

 

    <IfModule mpm_itk_module>

        AssignUserId vitto vitto

    </IfModule>

 

    php_admin_value open_basedir «/work/progr/webamp/sites/mysite.loc/public_html:/work/progr/webamp/sites/mysite.loc/tmp:/tmp»

    php_value upload_tmp_dir «/work/progr/webamp/sites/mysite.loc/tmp»

    php_value session.save_path «/work/progr/webamp/sites/mysite.loc/tmp»

 

    php_flag display_startup_errors on

    php_flag display_errors on

    php_flag html_errors on

    php_flag log_errors off

    php_value error_reporting -1

 

    ErrorLog /work/progr/webamp/sites/mysite.loc/logs/error.log

    CustomLog /work/progr/webamp/sites/mysite.loc/logs/access.log combined

 

</VirtualHost>

 

то добавляем еще одну конфигурацию, вот такую

<VirtualHost *:443> ServerName mysite.loc ServerAlias www.mysite.loc ServerAdmin [email protected] DocumentRoot /work/progr/webamp/sites/mysite.loc/public_html/web SSLEngine on SSLCertificateFile /etc/ssl/apache2/localhost.crt SSLCertificateKeyFile /etc/ssl/apache2/localhost.key <Directory «/work/progr/webamp/sites/mysite.loc/public_html/web»> AllowOverride All Options FollowSymLinks Require all granted RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php DirectoryIndex index.php index.html </Directory> <IfModule mpm_itk_module> AssignUserId vitto vitto </IfModule> php_admin_value open_basedir «/work/progr/webamp/sites/mysite.loc/public_html:/work/progr/webamp/sites/mysite.loc/tmp:/tmp» php_value upload_tmp_dir «/work/progr/webamp/sites/mysite.loc/tmp» php_value session.save_path «/work/progr/webamp/sites/mysite.loc/tmp» php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors off php_value error_reporting -1 ErrorLog /work/progr/webamp/sites/mysite.loc/logs/error.log CustomLog /work/progr/webamp/sites/mysite.loc/logs/access.log combined </VirtualHost>

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

 

<VirtualHost *:443>

 

    ServerName mysite.loc

    ServerAlias www.mysite.loc

    ServerAdmin [email protected]

    DocumentRoot /work/progr/webamp/sites/mysite.loc/public_html/web

 

    SSLEngine on

    SSLCertificateFile /etc/ssl/apache2/localhost.crt

    SSLCertificateKeyFile /etc/ssl/apache2/localhost.key

 

    <Directory «/work/progr/webamp/sites/mysite.loc/public_html/web»>

        AllowOverride All

        Options FollowSymLinks

        Require all granted

 

        RewriteEngine on

        RewriteCond %{REQUEST_FILENAME} !-f

        RewriteCond %{REQUEST_FILENAME} !-d

        RewriteRule . index.php

 

        DirectoryIndex index.php index.html

    </Directory>

 

    <IfModule mpm_itk_module>

        AssignUserId vitto vitto

    </IfModule>

 

    php_admin_value open_basedir «/work/progr/webamp/sites/mysite.loc/public_html:/work/progr/webamp/sites/mysite.loc/tmp:/tmp»

    php_value upload_tmp_dir «/work/progr/webamp/sites/mysite.loc/tmp»

    php_value session.save_path «/work/progr/webamp/sites/mysite.loc/tmp»

 

    php_flag display_startup_errors on

    php_flag display_errors on

    php_flag html_errors on

    php_flag log_errors off

    php_value error_reporting -1

 

    ErrorLog /work/progr/webamp/sites/mysite.loc/logs/error.log

    CustomLog /work/progr/webamp/sites/mysite.loc/logs/access.log combined

 

</VirtualHost>

 

В ней мы поменяли порт с 80 на 443 в теге VirtualHost и добавили подключение SSL сертификатов, вот этими командами:

… SSLEngine on SSLCertificateFile /etc/ssl/apache2/localhost.crt SSLCertificateKeyFile /etc/ssl/apache2/localhost.key …

 

    SSLEngine on

    SSLCertificateFile /etc/ssl/apache2/localhost.crt

    SSLCertificateKeyFile /etc/ssl/apache2/localhost.key

 

Теперь перезапускаем apache:

sudo systemctl restart apache2

 

sudo systemctl restart apache2

 

И можно переходить на https версию сайта.

Т.к. это самоподписанный сертификат, то мы получим предупреждение от браузера типа такого:

HTTPS: Your connection is not secure

Сообщение «HTTPS: Your connection is not secure»

Нажимаем кнопку [Advanced] и в открывшейся панельке [Add Exception..]

HTTPS: Your connection is not secure, Advanced panel

Панель «Advanced panel»

В появившемся окне, нажимаем [Get certificate] и затем [Confirm Security Exception]

Add security exception

Добавление исключения безопасности

После этих манипуляций, сайт заработает через https протокол.

—[добавлено 30.08.2018]—

Так же можно добавить автоматический редирект всех запросов с http на https. Для этого в файл .htaccess в корне сайта, добавляем (желательно сразу после RewriteEngine on)

RewriteEngine on … # Если не https, редиректим на https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] …

 

RewriteEngine on

# Если не https, редиректим на https

RewriteCond %{HTTPS} off

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

Теперь если зайти по адресу http://domain.tld/param, вас автоматически перенаправит на https://domain.tld/param

Настройка виртуальных хостов в Apache под Mac OS X 

По умолчанию настройки виртуальных хостов Apache на Mac OS X находятся в файле /etc/apache2/extra/httpd-vhosts.conf

Для начала открываем терминал и переходим в root режим:

Далее редактируем файл конфигураций Apache:

vi /etc/apache2/httpd.conf

Найдите в нем следующую строчку:

#Include /private/etc/apache2/extra/httpd-vhosts.conf

И замените ее на:

Include /private/etc/apache2/vhosts/*.conf

Теперь нам необходимо создать эту папку:

mkdir /etc/apache2/vhosts
cd /etc/apache2/vhosts

Создайте конфигурационный файл виртуального хоста по умолчанию:

И добавляем в него:


     DocumentRoot "/Library/WebServer/Documents"

Этот файл служит в качестве виртуального хоста по умолчанию. Когда Apache не может найти соответствующий виртуальный хост, он будет использовать первую конфигурацию. Технически этот файл не нужен, поскольку он просто повторяет конфигурации из http.conf. Тем не менее, он обеспечивает локальную настройку сервера.

Создайте файл конфигурации виртуального хоста:

И добавьте в него следующее:


        DocumentRoot "/your/path/"
        ServerName site.loc
        ErrorLog "/your/path/local-error_log"
        CustomLog "/your/path/local-access_log" common

        
            AllowOverride All
            Require all granted
        

Перезагрузим веб — сервер Apache:

Если у вас возникли какие-нибудь проблемы, попробуйте выполнить команду, которая проверит настройки:

Настройка виртуальных хостов

Для того, чтобы у вас заработал сайт в браузере, по пути site.loc необходимо отредактировать файл hosts:

Добавьте строчку в конце файла. Имя хоста должно соответствовать ServerName в настройках Apache: 

Чтобы очистить локальный кеш DNS, выполните следующую команду:

Теперь можно запрашивать наш сайт по http://site.loc

Проверить ошибки в настройках сервера можно с помощью команды:

И немного о правах

При запросе вашего сайта, вы можете получить в ответ 403 Forbidden, вероятно, это проблема с правами на чтение. Проще говоря, пользователь Apache не имеет на это прав.

Выполните следующую команду, чтобы это исправить:

Локальный веб-сервер под Linux, с автоматическим поднятием хостов и переключением версий PHPСкорее всего какие-то части этой статьи уже знакомы многим хаброжителям, но в связи с покупкой нового рабочего ноутбука я решил собрать все крупинки воедино и организовать удобное средство для разработки. Мне часто приходится работать со множеством маленьких проектов, с разными версиями PHP, часто переводить старые проекты на новые версии. В далёком прошлом, когда я был пользователем Windows то использовал OpenServer. Но с переходом на Linux мне нехватало той простоты создания хостов и переключений версий которые были в нём. Поэтому пришлось сделать еще более удобное решение на Linux =)
Цели

  1. Использовать текущий на момент написания статьи софт
  2. Чтоб разграничить локальные домены, будем использовать специальный домен .loc
  3. Переключения версий PHP реализуем через поддомен c помощью fast-cgi
  4. Автоматическое создание хоста с помощью vhost_alias и dnsmasq

Что имеем в итоге. При переходе на
56.test.loc
Apache запустит c версией PHP 5.6.36
/var/www/test.loc/public_html/index.php
Поменяв поддомен на
72.test.loc
будет запущен тот же файл но уже с версией PHP 7.2.7

Другие версии доставляются аналогичным описанным ниже способом.

Для создания еще одного сайта просто создаем в /var/www/ папку имеющую окончание .loc, внутри которой должна быть папка public_html являющаяся корнем сайта

Вот собственно и все. Как без дополнительных мучений, перезапусков, и редактирований конфигов имеем автоматическую систему для работы с сайтами.

Всё это я проверну на LinuxMint19, он на базе Ubuntu18.04, так что с ним все будет аналогично.

Для начала поставим необходимые пакеты

sudo apt update
sudo apt install build-essential pkg-config libxml2-dev libfcgi-dev apache2 libapache2-mod-fcgid postfix

Postfix ставим в качестве плюшки, как простое решение(в мастере установки, всё по умолчанию выбираем) для отправки почты с локальной машины.

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

Скопируем папку созданную апачем в домашний каталог, создадим на ее месте ссылку, не забыв поменять пользователя на себя и обменяться группами с апачем.

sudo mv /var/www/ ~/www
sudo ln -s ~/www /var/www
sudo chown $USER:$USER -R ~/www
sudo usermod -a -G www-data $USER
sudo usermod -a -G $USER www-data

Создадим папку в которой будем собирать исходники PHP для разных версий
sudo mkdir /usr/local/src/php-build

Также нам понадобится папки для CGI скриптов
sudo mkdir /var/www/cgi-bin

И runtime папка для этих же скриптов, с правами
sudo mkdir /var/run/mod_fcgid
sudo chmod 777 /var/run/mod_fcgid

И так как каталог у нас находится в оперативной памяти, добавим его создание при старте системы, для этого добавим в /etc/tmpfiles.d/fcgid.conf

 #Type Path                Mode UID      GID       Age Argument
 d     /var/run/mod_fcgid  0755 www-data www-data  -   -

У меня dnsmasq-base идет с коробки, если нет то его всегда можно доставить.

sudo apt install dnsmasq

Добавим правило в его конфигурацию. Найти файл конфигурации dnsmasq.conf можно так
sudo updatedb
locate dnsmasq.conf

Либо если он как и у меня является частью NetworkManager то создать новый файл конфигурации в /etc/NetworkManager/dnsmasq.d/local.conf
Добавим в него строчку для перенаправление нашего локального домена на локальную машину.
address=/loc/127.0.0.1

Также нужно включить необходимые модули апача
sudo a2enmod fcgid vhost_alias actions rewrite

Предварительная подготовка завершена, приступаем к сборке различных локальных версий PHP. Для каждой версии PHP проделываем следующие 4 шага. На примере 5.6.36

1. Скачиваем исходники нужной версии и распаковываем их

cd /usr/local/src/php-build
sudo wget http://pl1.php.net/get/php-5.6.36.tar.bz2/from/this/mirror -O php-5.6.36.tar.bz2
sudo tar jxf php-5.6.36.tar.bz2

2. Cобираем из исходников нужную версию PHP, и помещаем ее в /opt/php-5.6.36
sudo mkdir /opt/php-5.6.36
cd php-5.6.36
sudo ./configure --prefix=/opt/php-5.6.36 --with-config-file-path=/opt/php-5.6.36 --enable-cgi
sudo make
sudo make install
sudo make clean

3. Создаем CGI для обработки этой версии в /var/www/cgi-bin/php-5.6.36.fcgi
#!/bin/bash
PHPRC=/opt/php-5.6.36/php.ini
PHP_CGI=/opt/php-5.6.36/bin/php-cgi
PHP_FCGI_CHILDREN=8
PHP_FCGI_MAX_REQUESTS=3000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /opt/php-5.6.36/bin/php-cgi

4. Делаем файл исполняемым
sudo chmod +x /var/www/cgi-bin/php-5.6.36.fcgi

5. Добавляем экшен для обработки каждой версии в /etc/apache2/mods-available/fcgid.conf
<IfModule mod_fcgid.c>
  AddHandler fcgid-script fcg fcgi fpl

  Action application/x-httpd-php-5.6.36 /cgi-bin/php-5.6.36.fcgi
  AddType application/x-httpd-php-5.6.36 .php

  #Action application/x-httpd-php-7.2.7 /cgi-bin/php-7.2.7.fcgi
  #AddType application/x-httpd-php-7.2.7 .php

  FcgidIPCDir /var/run/mod_fcgid
  FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm

  FcgidConnectTimeout 20

  <IfModule mod_mime.c>
    AddHandler fcgid-script .fcgi
  </IfModule>
</IfModule>

6. Добавляем правило для обработки каждой версии в /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
        #Универсальный ServerNamе
        ServerAlias *.loc
        #Алиас для CGI скриптов
        ScriptAlias /cgi-bin /var/www/cgi-bin
        #Универсальный DocumentRoot
        VirtualDocumentRoot /var/www/%2+/public_html

        #Директория тоже должна быть универсальной
        <Directory /var/www/*.loc/>
            Options +ExecCGI -Indexes
            AllowOverride All
            Order allow,deny
            Allow from all
            <FilesMatch \.php$>
                #Ниже все условия для каждой из версий
                <If "%{SERVER_NAME} =~ /56\..*?\.loc/">
                    SetHandler application/x-httpd-php-5.6.36
                </If>
                <Else>
                    #По умолчанию, если версия не указанна, запускаем на последней
                    SetHandler application/x-httpd-php-7.2.7
                </Else>
            </FilesMatch>
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Ну вот и всё. Осталось только перезапустить apache и dnsmasq и пользоваться
sudo service apache2 restart
sudo service network-manager restart

Поместим в index.php нового тестового сайта phpinfo() и проверим что все работает.

GitHub — alexandrSS / site.loc

перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
    • События
    • Общественный форум
    • GitHub Education
.

GitHub — RomanBayt / site.loc: VCS для site.loc

перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
    • События
    • Общественный форум
    • GitHub Education
.

GitHub — SashaPeople / site.loc

перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
    • События
    • Общественный форум
    • GitHub Education
.

GitHub — Prots1987 / site.loc

перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
    • События
    • Общественный форум
    • GitHub Education

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *