{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Аникин: заметки с тегом apache2",
    "_rss_description": "Блог об администрировании Linux, BSD и не только",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/anikin.pw\/tags\/apache2\/",
    "feed_url": "https:\/\/anikin.pw\/tags\/apache2\/json\/",
    "icon": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884",
    "authors": [
        {
            "name": "Петр Аникин",
            "url": "https:\/\/anikin.pw\/",
            "avatar": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884"
        }
    ],
    "items": [
        {
            "id": "56",
            "url": "https:\/\/anikin.pw\/all\/sborka-php-7-na-debian-8-jessie\/",
            "title": "Установка php 7 на Debian 8 «jessie» из исходных кодов",
            "content_html": "<p><a href=\"https:\/\/anikin.pw\/all\/menedzher-versiy-php\/\">Можно использовать скрипт который упрощает установку разных версий php<\/a><br \/>\nСегодня дождливый и пасмурный день. И нет ничего более уютного и расслабляющего чем попивая горячий чай собирать ПО из исходников. Поэтому самое время собрать php 7 на debian 8.<br \/>\nУ нас есть тачка с debian 8, установленым с образа netinstall. Установка минимальная, кроме ssh ничего не ставилось.<br \/>\nДля установки php 7 нам нужно выполнить по ssh или в консоли тачки несколько ругательств из под рута.<br \/>\nПервым делом установим все необходимые для сборки пакеты:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># apt-get install git apache2 mysql-server make autoconf gcc bison libxml2 \\\nlibxml2-dev libcurl4-openssl-dev pkg-config libssl-dev \\\nbzip2 libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev \\\nlibgmp-dev libgmp3-dev libmcrypt-dev libmysqlclient-dev \\\nlibpspell-dev librecode-dev<\/code><\/pre><p>Также нам нужен пакет libt1-dev, который отсутствует в репах debian 8, возьмем его из репов debian 7 wheezy, для этого добавим в \/etc\/apt\/sources.list следующую строку<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">deb http:\/\/ftp.debian.org\/debian wheezy main contrib non-free<\/code><\/pre><p>Затем выполняем:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># apt-get update\n# apt-get install libt1-dev<\/code><\/pre><p>Затем убираем добавленную строку из \/etc\/apt\/sources.list и затем выполняем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># apt-get update<\/code><\/pre><p>Теперь сделаем симлинк gmp.h в \/usr\/include\/<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># ln -s \/usr\/include\/x86_64-linux-gnu\/gmp.h \/usr\/include\/gmp.h<\/code><\/pre><p>Теперь все готово для сборки. Создадим папку для исходников и скачаем их туда.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># mkdir \/root\/php7\n# cd \/root\/php7\n# git clone https:\/\/git.php.net\/repository\/php-src.git<\/code><\/pre><p>Переходим к сырцам и конфигурим<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># cd php-src\n# .\/buildconf\n# .\/configure \\\n    --prefix=\/usr \\\n    --with-config-file-path=\/etc \\\n    --enable-mbstring \\\n    --enable-zip \\\n    --enable-bcmath \\\n    --enable-pcntl \\\n    --enable-ftp \\\n    --enable-exif \\\n    --enable-calendar \\\n    --enable-sysvmsg \\\n    --enable-sysvsem \\\n    --enable-sysvshm \\\n    --enable-wddx \\\n    --with-curl \\\n    --with-mcrypt \\\n    --with-iconv \\\n    --with-gmp \\\n    --with-pspell \\\n    --with-gd \\\n    --with-jpeg-dir=\/usr \\\n    --with-png-dir=\/usr \\\n    --with-zlib-dir=\/usr \\\n    --with-xpm-dir=\/usr \\\n    --with-freetype-dir=\/usr \\\n    --with-t1lib=\/usr \\\n    --enable-gd-native-ttf \\\n    --enable-gd-jis-conv \\\n    --with-openssl \\\n    --with-mysql=\/usr \\\n    --with-pdo-mysql=\/usr \\\n    --with-gettext=\/usr \\\n    --with-zlib=\/usr \\\n    --with-bz2=\/usr \\\n    --with-recode=\/usr \\\n    --with-mysqli=\/usr\/bin\/mysql_config<\/code><\/pre><p>Если все в порядке, то результатом выполнения предыдущей команды будет что-то типа:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">+--------------------------------------------------------------------+\n| License:                                                           |\n| This software is subject to the PHP License, available in this     |\n| distribution in the file LICENSE.  By continuing this installation |\n| process, you are bound by the terms of this license agreement.     |\n| If you do not agree with the terms of this license, you must abort |\n| the installation process at this point.                            |\n+--------------------------------------------------------------------+\n\nThank you for using PHP.<\/code><\/pre><p>Далеее выполняем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># make\n# make install<\/code><\/pre><p>Проверяем, что установка прошла успешно<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">root@debian:~\/php7\/php-src# php -v\nPHP 7.0.0-dev (cli) (built: May 23 2015 15:48:27) \nCopyright (c) 1997-2015 The PHP Group\nZend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies<\/code><\/pre><p>Вобщем то php7 установлен, но если мы хотим заставить веб-сервер обрабатывать php, то надо ещё настроить apache2.<br \/>\nЗаставим apache2 обрабатывать php, с помощью php-cgi.<br \/>\nУ меня в системе есть пользователь user, и я решил сделать для него виртуальный хост.<br \/>\nСоздаем каталог cgi-bin у пользователя<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># mkdir \/home\/user\/cgi-bin\/<\/code><\/pre><p>Создаем файл \/home\/user\/cgi-bin\/php со следующим содержимым<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">#!\/usr\/bin\/php-cgi<\/code><\/pre><p>И выставляем права 555 на него<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># chmod 555 \/home\/user\/cgi-bin\/php<\/code><\/pre><p>Создаем файл \/home\/user\/cgi-bin\/php.ini со следующим содержимым<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">max_execution_time=600\nmemory_limit=128M\nerror_reporting=0\ndisplay_errors=0\nlog_errors=0\nuser_ini.filename=\nrealpath_cache_size=2M\ncgi.check_shebang_line=0\n \nzend_extension=opcache.so\nopcache.enable_cli=1\nopcache.save_comments=0\nopcache.fast_shutdown=1\nopcache.validate_timestamps=1\nopcache.revalidate_freq=60\nopcache.use_cwd=1\nopcache.max_accelerated_files=100000\nopcache.max_wasted_percentage=5\nopcache.memory_consumption=128\nopcache.consistency_checks=0<\/code><\/pre><p>Создаем каталог для виртуалхоста<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># mkdir \/home\/user\/www<\/code><\/pre><p>И кладем в него index.php со следующим содержимым<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;?php\nphpinfo();\n?&gt;<\/code><\/pre><p>И т.к мы все делали из под рута, то меняем владельца всех этих созданных файлов и каталогов на user<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># chown -R user:user \/home\/user\/<\/code><\/pre><p>Теперь нужно настроить apache2. Добавим необходимые модули в apache2<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># a2enmod actions\n# a2enmod cgi<\/code><\/pre><p>Заменим конфиг \/etc\/apache2\/sites-enabled\/000-default.conf на такой<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;Directory \/home\/&gt;\n        Options Indexes FollowSymLinks\n        AllowOverride None\n        Require all granted\n&lt;\/Directory&gt;\n&lt;VirtualHost *:80&gt;\nDocumentRoot \/home\/user\/www\nScriptAlias \/cgi-bin\/ &quot;\/home\/user\/cgi-bin\/&quot;\nAddType application\/x-httpd-php .php .php3\nAction  application\/x-httpd-php \/cgi-bin\/php\nDirectoryIndex index.php\n&lt;\/VirtualHost&gt;<\/code><\/pre><p>И перезапустим apache2<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># service apache2 restart<\/code><\/pre><p>Теперь мы можем зайти браузером на ip тачки и увидеть страницу php info.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/anikin.pw\/pictures\/---2015-05-23-16:21:02.png\" width=\"1916\" height=\"1015\" alt=\"\" \/>\n<\/div>\n<p>Аналогично можно настроить другие виртуальные хосты.<\/p>\n<p><b>Про настройку разных версий php для каждого сайта на одном сервере можно прочитать в <a href=\"http:\/\/anikin.pw\/all\/multiversionnost-php-na-servere-s-vestacp\/\">статье про мультиверсионность php<\/a>.<\/b><\/p>\n",
            "date_published": "2015-05-23T16:32:06+03:00",
            "date_modified": "2017-03-22T11:33:16+03:00",
            "tags": [
                "apache2",
                "debian",
                "php",
                "php7"
            ],
            "_date_published_rfc2822": "Sat, 23 May 2015 16:32:06 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "56",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "43",
            "url": "https:\/\/anikin.pw\/all\/modul-remoteip-v-ubuntu-14-04\/",
            "title": "Модуль remoteip в ubuntu 14.04",
            "content_html": "<p>Почему-то с модулем mod_rpaf для apache2 в ubuntu 14.04 у меня не срослось. Не хотел он нормально работать и все. Поэтому было решено использовать модуль remoteip, который, собственно, выполняет те же функции.<br \/>\nПодключаем модуль.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># a2enmod remoteip<\/code><\/pre><p>Создаем конфигурационный файл<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># nano \/etc\/apache2\/conf-available\/remoteip.conf<\/code><\/pre><pre class=\"e2-text-code\"><code class=\"\">RemoteIPHeader X-Forwarded-For\nRemoteIPTrustedProxy 127.0.0.1 ip_сервера<\/code><\/pre><p>Применяем конфиг<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># a2enconf remoteip<\/code><\/pre><p>Перезапускаем apache2<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># service apache2 restart<\/code><\/pre>",
            "date_published": "2015-01-14T11:04:41+03:00",
            "date_modified": "2015-01-14T11:04:23+03:00",
            "tags": [
                "apache2",
                "mod_rpaf",
                "remoteip",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Wed, 14 Jan 2015 11:04:41 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "43",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "40",
            "url": "https:\/\/anikin.pw\/all\/kak-sozdat-virtualny-host-zaglushku-v-apache2\/",
            "title": "Как создать виртуальный хост «заглушку» в apache2.",
            "content_html": "<p>Многие пользователи жалуются что их сайты открываются по «левым доменам», к которым они не имеют отношения. Происходит это потому что сайт на сервере доступен не только по доменному имени, но и по ip. И кто угодно может направить свой домен на ip сервера. Чтобы это исправить нужно создать заглушку при обращениях к вебсерверу по ip. Т.к проблема частая, пилю мануал.<\/p>\n<h2>Создание заглушки для сервера с панелью ispmanager 4.<\/h2>\n<ol start=\"1\">\n<li>В разделе www-домены создаем домен с любым именем, например default.domain<\/li>\n<li>В разделе ip-адреса выделяем ip сервера и кликаем «Изменить»<\/li>\n<li>В качестве «домен по умолчанию» выбираем наш домен default.domain<\/li>\n<\/ol>\n<p>Теперь по ip адресу будет открываться заглушка ispmanager.<\/p>\n<h2>Создание заглушки для сервера без панели управления.<\/h2>\n<p>Создадим каталог для виртуального хоста заглушки, например \/var\/www\/default\/<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># mkdir \/var\/www\/default<\/code><\/pre><p>Создадим пустой файл index.php<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># touch \/var\/www\/default\/index.php<\/code><\/pre><p>Теперь в конфигурационном файле apache2(в дебианоподобных ОС это \/etc\/apache2\/apache2.conf) пропишем виртуальный хост.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;VirtualHost *:80 &gt;\n        ServerName default\n        DocumentRoot \/var\/www\/default\n&lt;\/VirtualHost&gt;<\/code><\/pre><p>Затем перезапускаем apache2<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># service apache2 restart<\/code><\/pre><p>Теперь по ip адресу будет открываться пустая страница.<\/p>\n",
            "date_published": "2014-11-13T15:33:45+03:00",
            "date_modified": "2014-11-13T15:32:58+03:00",
            "tags": [
                "apache2",
                "default",
                "isp",
                "ispmanager",
                "заглушка"
            ],
            "_date_published_rfc2822": "Thu, 13 Nov 2014 15:33:45 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "40",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "29",
            "url": "https:\/\/anikin.pw\/all\/server-status-na-apache2-httpd\/",
            "title": "Включение server-status на apache2\/httpd в ubuntu и centos",
            "content_html": "<p>server-status это модуль веб-сервера, который может помочь установить какой из сайтов на сервере создает нагрузку или даже покажет на какой именно скрипт на сайте идет больше всего обращений. В общем это модуль который помогает в мониторинге состояния веб-сервера. Разберёмся как его установить.<\/p>\n<p>В centos он обычно уже установлен. В ubuntu смотрим:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># ls \/etc\/apache2\/mods-enabled<\/code><\/pre><p><\/br><br \/>\nЕсли в выводе есть status.load и status.conf, то значит он тоже установлен. Если же нет, то выполняем:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># \/usr\/sbin\/a2enmod status<\/code><\/pre><p><\/br><\/p>\n<p>Затем открываем конфигурационный файл веб-сервера, в centos — \/etc\/httpd\/conf\/httpd.conf, в ubuntu — \/etc\/apache2\/apache2.conf. Добавляем туда:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ExtendedStatus On\n&lt;Location \/server-status&gt;\n    SetHandler server-status\n    Order deny,allow\n    Deny from all\n    Allow from 127.0.0.1\n&lt;\/Location&gt;<\/code><\/pre><p>Затем перезапускаем апач.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># service apache2 restart<\/code><\/pre><ul>\n<li>в ubuntu<\/li>\n<\/ul>\n<pre class=\"e2-text-code\"><code class=\"\"># service httpd restart<\/code><\/pre><ul>\n<li>в centos<\/li>\n<\/ul>\n<p>Устанавливаем:<br \/>\nВ centos:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># yum install links elinks<\/code><\/pre><p><\/br><br \/>\nВ ubuntu:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># apt-get install links elinks<\/code><\/pre><p><\/br><\/p>\n<p>Теперь мы можем посмотреть server-status. Для этого выполняем:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># elinks http:\/\/localhost\/server-status<\/code><\/pre><p><\/br><br \/>\nЕсли апач у нас висит не на 80 порту, например когда фронтэндом установлен nginx, то в эту команду нужно добавить порт апача. Например так, для порта 81:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># elinks http:\/\/localhost:81\/server-status<\/code><\/pre>",
            "date_published": "2014-08-04T13:08:03+03:00",
            "date_modified": "2014-08-29T11:40:50+03:00",
            "tags": [
                "apache2",
                "centos",
                "httpd",
                "mod_status",
                "server-status",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Mon, 04 Aug 2014 13:08:03 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "29",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "17",
            "url": "https:\/\/anikin.pw\/all\/ustanovka-mpm-itk-na-apache2-rabota-virtualnyh-hostov-pod-raznym\/",
            "title": "Установка mpm-itk на apache2. Работа виртуальных хостов под разными пользователями.",
            "content_html": "По умолчанию apache работает под пользователем www-data. При использовании isp-manager под пользователем apache, если я не ошибаюсь. И получается, что все сайты работают под одним пользователем. Иногда требуется чтобы каждый сайт работал под своим пользователем. Сделать это можно с помощью модуля mpm-itk. Модуль доступен во всех основных дистрибутивах линукс. Мы рассмотрим как установить и настроить его под ubuntu и centos, а так же рассмотрим настройку для серверов с isp-панелью.<p>\r\n\r\n<strong>Установка и настройка в ubuntu<\/strong><p>\r\n\r\nДля начала установим сам модуль<p>\r\n\r\n<code># apt-get install apache2-mpm-itk<\/code><p>\r\n\r\nДопустим, что сайты у нас уже есть и находятся в пользовательских каталогах. Сообтветственно нам не нужно создавать пользователей. Если это не так то можно создать пользователей для каждого сайта с помощью useradd с аргументом -d, в котором укажем каталог сайта в качестве домашнего каталога.<p>\r\n\r\nЗатем правим конфигурационный файл apache.<p>\r\n\r\n<code># nano \/etc\/apache2\/apache2.conf<\/code><p>\r\n\r\nВнутрь каждого виртуального хоста добавляем такие строки:<p>\r\n\r\n<code>&lt;IfModule mpm_itk_module&gt;<p>\r\nAssignUserId user1 user1<p>\r\n&lt;\/IfModule&gt;<\/code><p>\r\n\r\nГде user1 user1 - пользователь и группа соответственно.<p>\r\n\r\nПерезапускаем apache2<p>\r\n\r\n<code># service apache2 restart<\/code><p>\r\n\r\n<strong>Установка в CentOS<\/strong><p>\r\n\r\nУстановим модуль<p>\r\n\r\n<code># yum install httpd-itk<\/code><p>\r\n\r\nПравим конфигурационные файлы<p>\r\n\r\n<code># nano \/etc\/sysconfig\/httpd<\/code><p>\r\n\r\nРаскомментируем и изменяем строку на такую:<p>\r\n\r\n<code>HTTPD=\/usr\/sbin\/httpd.itk<\/code><p>\r\n\r\n<code># nano \/etc\/httpd\/conf.d\/php.conf<\/code><p>\r\n\r\nДобавляем:<p>\r\n\r\n<code>&lt;IfModule itk.c&gt;<p>\r\nLoadModule php5_module modules\/libphp5.so<p>\r\n&lt;\/IfModule&gt;<p><\/code>\r\n\r\nМеняем диррективу SuexecUserGroup на AssignUserID для существующих доменов.<p>\r\n\r\n<code># sed -i -e 's\/SuexecUserGroup\/AssignUserID\/g' \/etc\/httpd\/conf\/httpd.conf<\/code><p>\r\n\r\nДля вновь созданных доменов в виртуальном хосте нужно указывать<p>\r\n\r\n<code>AssignUserID user1 user1<\/code><p>\r\n\r\nГде user1 user1 - пользователь и группа соответственно.<p>\r\n\r\n<code># nano \/etc\/httpd\/conf\/httpd.conf<\/code><p>\r\n\r\nВставляем настройки модуля перед виртуальными хостами<p>\r\n\r\n<code>&lt;IfModule itk.c&gt;<p>\r\nStartServers 1<p>\r\nMinSpareServers 1<p>\r\nMaxSpareServers 25<p>\r\nServerLimit 25<p>\r\nMaxClients 25<p>\r\nMaxRequestsPerChild 4000<p>\r\n&lt;\/IfModule&gt;<p><\/code>\r\n\r\nПерезапускаем apache<p>\r\n\r\n<code># service httpd restart<\/code><p>\r\n\r\n<strong>Настройка для сервера с панелью isp.<\/strong><p>\r\n\r\nОткроем конфигурационный файл isp<p>\r\n\r\n<code># nano \/usr\/local\/ispmgr\/etc\/ispmgr.conf<\/code><p>\r\n\r\nИ в самом начале добавим строку:<p>\r\n\r\n<code>Option ApacheMPM<\/code><p>\r\n\r\nИ рестартим панель<p>\r\n\r\n<code># killall -9 ispmgr<\/code><p>\r\n\r\n<strong>Как проверить что все работает правильно?<\/strong><p>\r\n\r\nВ папке виртуального хоста создаем файл с расширением .php и примерно таким содержанием:<p>\r\n\r\n<code>&lt;?php<p>\r\n$userinfo = posix_getpwuid(posix_getuid());<p>\r\necho $userinfo['name'];<p>\r\n?&gt;<p><\/code>\r\n\r\nИли таким:<p>\r\n\r\n<code>&lt;?php echo exec('whoami'); ?&gt;<\/code><p>\r\n\r\nОткрываем этот файл в браузере и выводом этого файла должно быть имя пользователя под которым работает этот скрипт. Так же не забываем что если сервер функционирует давно то в подкаталогах куча фалов принадлежащих пользователю www-data. Неплохо бы сделать chown -R username на каталоги сайтов.",
            "date_published": "2013-11-08T18:05:50+03:00",
            "date_modified": "2014-04-04T13:47:25+03:00",
            "tags": [
                "apache2",
                "centos",
                "httpd",
                "httpd-itk",
                "isp-manager",
                "Linux",
                "mpm-itk",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Fri, 08 Nov 2013 18:05:50 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "17",
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}