{"data":{"markdownRemark":{"frontmatter":{"title":"Правильный LAMP на archlinux","date":"03 September 2016","path":"/pravilny-lamp-na-archlinux/","author":null,"excerpt":"Статья о том, как настроить LAMP на Archlinux","tags":["Apache","Lamp","Archlinux","Linux","MySQL","PHP"],"coverImage":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgX/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABiXbzpUmij//EABsQAAEEAwAAAAAAAAAAAAAAAAEAAgMRBBAi/9oACAEBAAEFAiLTIwFSk5x7Ltf/xAAVEQEBAAAAAAAAAAAAAAAAAAAQMf/aAAgBAwEBPwGH/8QAFREBAQAAAAAAAAAAAAAAAAAAEDH/2gAIAQIBAT8Bp//EABsQAQACAgMAAAAAAAAAAAAAAAEAAhAxAxEh/9oACAEBAAY/AuichfxMUsbiu8f/xAAZEAEAAwEBAAAAAAAAAAAAAAABABEhMVH/2gAIAQEAAT8hTJakuhoAfY6gMrd2DF2nWPZ//9oADAMBAAIAAwAAABD7z//EABURAQEAAAAAAAAAAAAAAAAAABAh/9oACAEDAQE/EIP/xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAgEBPxCj/8QAGxABAAICAwAAAAAAAAAAAAAAAQARMWEhQbH/2gAIAQEAAT8QraDAG2bMExDKkDDDL2ubHjyIBuk7Znn/2Q==","aspectRatio":1.8815331010452963,"src":"/static/e27ba31c3af212242e89cf8af494d2cf/b4295/photo-1516885726422-4d4bbfce5b9e.jpg","srcSet":"/static/e27ba31c3af212242e89cf8af494d2cf/127d5/photo-1516885726422-4d4bbfce5b9e.jpg 200w,\n/static/e27ba31c3af212242e89cf8af494d2cf/7ef6a/photo-1516885726422-4d4bbfce5b9e.jpg 400w,\n/static/e27ba31c3af212242e89cf8af494d2cf/b4295/photo-1516885726422-4d4bbfce5b9e.jpg 800w,\n/static/e27ba31c3af212242e89cf8af494d2cf/487eb/photo-1516885726422-4d4bbfce5b9e.jpg 1080w","sizes":"(max-width: 800px) 100vw, 800px"}}}},"id":"ece499f3-e10b-5a7b-afb6-666163c49957","html":"<p>Актуально на апрель 2016.</p>\n<p>Версия apache, php, mysql:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    $ httpd -v\n    Server version: Apache/2.4.20 <span class=\"token punctuation\">(</span>Unix<span class=\"token punctuation\">)</span>\n    Server built:   Apr 11 2016 10:04:04\n    \n    $ php -v\n    PHP 7.0.5 <span class=\"token punctuation\">(</span>cli<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>built: Apr  2 2016 23:10:23<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span> NTS <span class=\"token punctuation\">)</span>\n    Copyright <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> 1997-2016 The PHP Group\n    Zend Engine v3.0.0, Copyright <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> 1998-2016 Zend Technologies\n    \n    $ mysql -V\n    mysql  Ver 15.1 Distrib 10.1.13-MariaDB, <span class=\"token keyword\">for</span> Linux <span class=\"token punctuation\">(</span>x86_64<span class=\"token punctuation\">)</span> using readline 5.1</code></pre></div>\n<p>Я не буду подробно акцентироват внимание на конфигурировании, лишь общие настройки.</p>\n<p>Для начала следует обновить все пакеты</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> pacman -Syu</code></pre></div>\n<p>Ставим всё необходимое, а именно apache, php, mysql, openssl (если необходим доступ по https) и т.д.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> pacman -S apache php php-apache mysql openssl</code></pre></div>\n<p>Если mysql не стоял ранее:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> systemctl start mysqld\n    <span class=\"token function\">sudo</span> mysql_secure_installation</code></pre></div>\n<p>Можно попробовать проверить работоспособность сервера базы</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    mysql -u root -p</code></pre></div>\n<p>Мне нравится способ конфигурирования apache в ubuntu, поэтому переделаем настройки на убунтуподобность)</p>\n<p>Открываем httpd.conf</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /etc/httpd/conf/httpd.conf</code></pre></div>\n<p>и в конец файла добавляем:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    IncludeOptional conf/sites-enabled/*.conf\n    IncludeOptional conf/mods-enabled/*.conf</code></pre></div>\n<p>Это позволит подхватывать все конфиги из {sites, mods}-enabled директорий.</p>\n<p>Теперь создадим указанные каталоги:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">        <span class=\"token function\">sudo</span> <span class=\"token function\">mkdir</span> /etc/httpd/conf/<span class=\"token punctuation\">{</span>sites-available,sites-enabled,mods-available,mods-enabled<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Для включения/выключения сайтов создадим скрипт.</p>\n<p>Я не стал брать скрипты из ubuntu из-за их монстроузости, вместо этого в интернете нашёл вполне подходящие для наших целей.</p>\n<p>Первый скрипт. \"Включает\" выбранный конфиг сайта.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /usr/sbin/a2ensite\n    \n\n    <span class=\"token comment\">#!/bin/bash</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/sites-available <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/sites-enabled  <span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"-------------------------------\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Error!! Folders /etc/httpd/conf/sites-available &amp; etc/httpd/conf/sites-enabled not found.\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    \n    avail<span class=\"token operator\">=</span>/etc/httpd/conf/sites-available/<span class=\"token variable\">$1</span>.conf\n    enabled<span class=\"token operator\">=</span>/etc/httpd/conf/sites-enabled\n    site<span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">`</span><span class=\"token function\">ls</span> /etc/httpd/conf/sites-available/<span class=\"token variable\">`</span></span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token operator\">!=</span> <span class=\"token string\">\"1\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n            <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Use script: a2ensite site_config\"</span>\n            <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"\\nAvailable virtual hosts:\\n<span class=\"token variable\">$site</span>\"</span>\n            <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$avail</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token function\">sudo</span> <span class=\"token function\">ln</span> -s <span class=\"token variable\">$avail</span> <span class=\"token variable\">$enabled</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"<span class=\"token variable\">$avail</span> virtual host does not exist! Please create one!\\n<span class=\"token variable\">$site</span>\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$enabled</span>/<span class=\"token variable\">$1</span>.conf<span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Success!! Now restart Apache server: sudo systemctl restart httpd\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span>  -e <span class=\"token string\">\"Virtual host <span class=\"token variable\">$avail</span> does not exist!\\nPlease see avail virtual hosts:\\n<span class=\"token variable\">$site</span>\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">fi</span></code></pre></div>\n<p>Делаем скрипт выполняемым.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> +x /usr/sbin/a2ensite</code></pre></div>\n<p>Второй скрипт. \"Выключает\" выбранный конфиг сайта.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /usr/sbin/a2dissite\n    \n\n    <span class=\"token comment\">#!/bin/bash</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/sites-available <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/sites-enabled  <span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"-------------------------------\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Error!! Folders /etc/httpd/conf/sites-available &amp; etc/httpd/conf/sites-enabled not found.\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    \n    avail<span class=\"token operator\">=</span>/etc/httpd/conf/sites-enabled/<span class=\"token variable\">$1</span>.conf\n    enabled<span class=\"token operator\">=</span>/etc/httpd/conf/sites-enabled\n    site<span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">`</span><span class=\"token function\">ls</span> /etc/httpd/conf/sites-enabled<span class=\"token variable\">`</span></span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token operator\">!=</span> <span class=\"token string\">\"1\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n            <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Use script: a2dissite site_config\"</span>\n            <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"\\nEnabled virtual hosts: \\n<span class=\"token variable\">$site</span>\"</span>\n            <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$avail</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token function\">sudo</span> <span class=\"token function\">rm</span>  <span class=\"token variable\">$avail</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"<span class=\"token variable\">$avail</span> virtual host does not exist! Exiting\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$enabled</span>/<span class=\"token variable\">$1</span>.conf<span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Error!! Could not remove <span class=\"token variable\">$avail</span> virtual host!\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span>  -e <span class=\"token string\">\"Success! <span class=\"token variable\">$avail</span> has been removed!\\nsudo systemctl restart httpd\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">fi</span></code></pre></div>\n<p>Делаем скрипт выполняемым.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> +x /usr/sbin/a2dissite</code></pre></div>\n<p>Теперь создадим скрипты включения/отключения модулей</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /usr/sbin/a2enmod\n    \n\n    <span class=\"token comment\">#!/bin/bash</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/mods-available <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/mods-enabled  <span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"-------------------------------\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Error!! Folders /etc/httpd/conf/mods-available &amp; etc/httpd/conf/mods-enabled not found.\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    \n    avail<span class=\"token operator\">=</span>/etc/httpd/conf/mods-available/<span class=\"token variable\">$1</span>.conf\n    enabled<span class=\"token operator\">=</span>/etc/httpd/conf/mods-enabled\n    mods<span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">`</span><span class=\"token function\">ls</span> /etc/httpd/conf/mods-available/<span class=\"token variable\">`</span></span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token operator\">!=</span> <span class=\"token string\">\"1\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n            <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Use script: a2enmod mod_name\"</span>\n            <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"\\nAvailable mods config:\\n<span class=\"token variable\">$mods</span>\"</span>\n            <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$avail</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token function\">sudo</span> <span class=\"token function\">ln</span> -s <span class=\"token variable\">$avail</span> <span class=\"token variable\">$enabled</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"<span class=\"token variable\">$avail</span> mod not exist! Please create one!\\n<span class=\"token variable\">$mods</span>\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$enabled</span>/<span class=\"token variable\">$1</span>.conf<span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Success!! Now restart Apache server: sudo systemctl restart httpd\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span>  -e <span class=\"token string\">\"Mod <span class=\"token variable\">$avail</span> does not exist!\\nPlease see avail mods:\\n<span class=\"token variable\">$mods</span>\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">fi</span></code></pre></div>\n<p>Делаем скрипт выполняемым.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> +x /usr/sbin/a2enmod</code></pre></div>\n<p>И второй скрипт (ну или 4 =) )</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /usr/sbin/a2dismod\n    \n\n    <span class=\"token comment\">#!/bin/bash</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/mods-available <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/mods-enabled  <span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"-------------------------------\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Error!! Folders /etc/httpd/conf/mods-available &amp; etc/httpd/conf/mods-enabled not found.\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    \n    avail<span class=\"token operator\">=</span>/etc/httpd/conf/mods-enabled/<span class=\"token variable\">$1</span>.conf\n    enabled<span class=\"token operator\">=</span>/etc/httpd/conf/mods-enabled\n    mods<span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">`</span><span class=\"token function\">ls</span> /etc/httpd/conf/mods-enabled<span class=\"token variable\">`</span></span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token operator\">!=</span> <span class=\"token string\">\"1\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n            <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Use script: a2dismod mod_config\"</span>\n            <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"\\nEnabled mods: \\n<span class=\"token variable\">$mods</span>\"</span>\n            <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$avail</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token function\">sudo</span> <span class=\"token function\">rm</span>  <span class=\"token variable\">$avail</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"<span class=\"token variable\">$avail</span> mod does not exist! Exiting\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -e <span class=\"token variable\">$enabled</span>/<span class=\"token variable\">$1</span>.conf<span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"Error!! Could not remove <span class=\"token variable\">$avail</span> mod!\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span>  -e <span class=\"token string\">\"Success! <span class=\"token variable\">$avail</span> has been removed!\\nsudo systemctl restart httpd\"</span>\n    <span class=\"token keyword\">exit</span> 0\n    <span class=\"token keyword\">fi</span>\n    <span class=\"token keyword\">fi</span></code></pre></div>\n<p>Делаем скрипт выполняемым.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> +x /usr/sbin/a2dismod</code></pre></div>\n<p>Создаём виртуальный хост</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /etc/httpd/conf/sites-available/localhost.conf</code></pre></div>\n<p>Пример конфигурации</p>\n<div class=\"gatsby-highlight\" data-language=\"nginx\"><pre class=\"language-nginx\"><code class=\"language-nginx\">    <span class=\"token operator\">&lt;</span>VirtualHost <span class=\"token operator\">*</span><span class=\"token punctuation\">:</span><span class=\"token number\">80</span><span class=\"token operator\">></span>\n        DocumentRoot <span class=\"token string\">\"/mnt/srv/www/localhost/public\"</span>\n        <span class=\"token operator\">&lt;</span>Directory <span class=\"token string\">\"/mnt/srv/www/localhost/public\"</span><span class=\"token operator\">></span>\n            Options FollowSymLinks\n            AllowOverride All\n            Require all granted\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Directory<span class=\"token operator\">></span>\n        ServerName localhost\n        ErrorLog <span class=\"token string\">\"/mnt/srv/www/logs/localhost.error.log\"</span>\n        CustomLog <span class=\"token string\">\"/mnt/srv/www/logs/localhost.access.log\"</span> combined\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>VirtualHost<span class=\"token operator\">></span></code></pre></div>\n<p>Теперь его можно включить</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> a2ensite localhost\n    \n\n    $ <span class=\"token function\">sudo</span> a2ensite localhost\n    -------------------------------\n    Success<span class=\"token operator\">!</span><span class=\"token operator\">!</span> Now restart Apache server: <span class=\"token function\">sudo</span> systemctl restart httpd</code></pre></div>\n<p>и добавить в /ets/hosts адрес если это требуется, попробовать запустить/перезапустить apache (как подсказывает скрипт)</p>\n<p>Я попробовал перезапустить apache, и на данном этапе у меня всё работает.</p>\n<p>Нужно уже браться за мод ssl. Но сначала напишем скрипт создания сертификатов, и создадим их.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /usr/sbin/agenssl\n    \n\n    <span class=\"token comment\">#!/bin/bash</span>\n    <span class=\"token keyword\">if</span> <span class=\"token function\">test</span> -d /etc/httpd/conf/ssl <span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"...\"</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token string\">\"make dir...\"</span>\n    <span class=\"token function\">mkdir</span> /etc/httpd/conf/ssl\n    <span class=\"token keyword\">fi</span>\n    \n    <span class=\"token function\">cd</span> /etc/httpd/conf/ssl\n    \n    <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\"Enter your virtual host FQDN\"</span>\n    <span class=\"token function\">read</span> cert\n    \n    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out <span class=\"token variable\">$cert</span>.key\n    <span class=\"token function\">chmod</span> 600 <span class=\"token variable\">$cert</span>.key\n    openssl req -new -key <span class=\"token variable\">$cert</span>.key -out <span class=\"token variable\">$cert</span>.csr\n    openssl x509 -req -days 365 -in <span class=\"token variable\">$cert</span>.csr -signkey <span class=\"token variable\">$cert</span>.key -out <span class=\"token variable\">$cert</span>.crt\n    \n    <span class=\"token keyword\">echo</span> -e <span class=\"token string\">\" The certificate \"</span><span class=\"token variable\">$cert</span><span class=\"token string\">\" has been generated!\\nPlease link it to Apache SSL available website!\"</span>\n    \n    <span class=\"token function\">ls</span> -all /etc/httpd/conf/ssl\n    <span class=\"token keyword\">exit</span> 0</code></pre></div>\n<p>Сделаем скрипт выполняемым</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">chmod</span> +x /usr/sbin/agenssl</code></pre></div>\n<p>Можно смело запускать. Из обязательного нужно заполнить \"Common Name (e.g. server FQDN or YOUR name) []\", указав в качестве имени адрес сайта.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> agenssl\n    \n\n    $ <span class=\"token function\">sudo</span> agenssl\n    <span class=\"token punctuation\">..</span>.\n    Enter your virtual <span class=\"token function\">host</span> FQDN\n    localhost\n    <span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>.+++\n    <span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span>+++\n    You are about to be asked to enter information that will be incorporated\n    into your certificate request.\n    What you are about to enter is what is called a Distinguished Name or a DN.\n    There are quite a few fields but you can leave some blank\n    For some fields there will be a default value,\n    If you enter <span class=\"token string\">'.'</span>, the field will be left blank.\n    -----\n    Country Name <span class=\"token punctuation\">(</span>2 letter code<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span>AU<span class=\"token punctuation\">]</span>:RU\n    State or Province Name <span class=\"token punctuation\">(</span>full name<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span>Some-State<span class=\"token punctuation\">]</span>:\n    Locality Name <span class=\"token punctuation\">(</span>eg, city<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>:\n    Organization Name <span class=\"token punctuation\">(</span>eg, company<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span>Internet Widgits Pty Ltd<span class=\"token punctuation\">]</span>:\n    Organizational Unit Name <span class=\"token punctuation\">(</span>eg, section<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>:\n    Common Name <span class=\"token punctuation\">(</span>e.g. server FQDN or YOUR name<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>:localhost\n    Email Address <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>:\n    Please enter the following <span class=\"token string\">'extra'</span> attributes\n    to be sent with your certificate request\n    A challenge password <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>:\n    An optional company name <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>:\n    Signature ok\n    subject<span class=\"token operator\">=</span>/C<span class=\"token operator\">=</span>RU/ST<span class=\"token operator\">=</span>Some-State/O<span class=\"token operator\">=</span>Internet Widgits Pty Ltd/CN<span class=\"token operator\">=</span>localhost\n    Getting Private key\n    The certificate localhost has been generated<span class=\"token operator\">!</span>\n    \n    Please <span class=\"token function\">link</span> it to Apache SSL available website<span class=\"token operator\">!</span>\n    drwxr-xr-x 2 root root 4096 апр 19 23:43 <span class=\"token keyword\">.</span>\n    drwxr-xr-x 8 root root 4096 апр 19 21:27 <span class=\"token punctuation\">..</span>\n    -rw-r--r-- 1 root root 1164 апр 19 23:43 localhost.crt\n    -rw-r--r-- 1 root root  985 апр 19 23:43 localhost.csr\n    -rw------- 1 root root 1704 апр 19 23:42 localhost.key</code></pre></div>\n<p>Мод ssl</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /etc/httpd/conf/mods-enabled/ssl.conf\n    \n\n    LoadModule ssl_module modules/mod_ssl.so\n    LoadModule socache_shmcb_module modules/mod_socache_shmcb.so\n    Listen 443\n    SSLCipherSuite HIGH:MEDIUM:<span class=\"token operator\">!</span>aNULL:<span class=\"token operator\">!</span>MD5\n    SSLPassPhraseDialog  <span class=\"token function\">builtin</span>\n    SSLSessionCache        <span class=\"token string\">\"shmcb:/run/httpd/ssl_scache(512000)\"</span>\n    SSLSessionCacheTimeout  300</code></pre></div>\n<p>Включаем его</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> a2enmod ssl\n    \n\n    $ <span class=\"token function\">sudo</span> a2enmod ssl\n    -------------------------------\n    Success<span class=\"token operator\">!</span><span class=\"token operator\">!</span> Now restart Apache server: <span class=\"token function\">sudo</span> systemctl restart httpd</code></pre></div>\n<p>Попробуем добавить конфигурацию виртуального хоста с ssl</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> <span class=\"token function\">nano</span> /etc/httpd/conf/sites-available/localhost-ssl.conf\n    \n\n    <span class=\"token operator\">&lt;</span>VirtualHost *:443<span class=\"token operator\">></span>\n        ServerAdmin webmaster@localhost\n        ServerName localhost\n        DocumentRoot /mnt/srv/www/localhost/public\n    \n        LogLevel info ssl:warn\n    \n        <span class=\"token operator\">&lt;</span>Directory <span class=\"token string\">\"/mnt/srv/www/localhost/public\"</span><span class=\"token operator\">></span>\n            Options FollowSymLinks\n            AllowOverride All\n            Require all granted\n        <span class=\"token operator\">&lt;</span>/Directory<span class=\"token operator\">></span>\n    \n        ErrorLog <span class=\"token string\">\"/mnt/srv/logs//localhost.error.log\"</span>\n        CustomLog <span class=\"token string\">\"/mnt/srv/logs/localhost.access.log\"</span> combined\n    \n        SSLEngine on\n        SSLCertificateFile      /etc/httpd/conf/ssl/localhost.crt\n        SSLCertificateKeyFile   /etc/httpd/conf/ssl/localhost.key\n    \n        <span class=\"token operator\">&lt;</span>FilesMatch <span class=\"token string\">\"\\.(cgi|shtml|phtml|php)$\"</span><span class=\"token operator\">></span>\n            SSLOptions +StdEnvVars\n        <span class=\"token operator\">&lt;</span>/FilesMatch<span class=\"token operator\">></span>\n    \n        BrowserMatch <span class=\"token string\">\"MSIE [2-6]\"</span> \\\n            nokeepalive ssl-unclean-shutdown \\\n            downgrade-1.0 force-response-1.0\n    \n        BrowserMatch <span class=\"token string\">\"MSIE [17-9]\"</span> ssl-unclean-shutdown\n    <span class=\"token operator\">&lt;</span>/VirtualHost<span class=\"token operator\">></span></code></pre></div>\n<p>Перезапускаем apach и пробуем наш https</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> systemctl restart httpd</code></pre></div>","excerpt":"Актуально на апрель 2016. Версия apache, php, mysql: Я не буду подробно акцентироват внимание на конфигурировании, лишь общие настройки. Для…"}},"pageContext":{"isCreatedByStatefulCreatePages":false,"type":"posts","next":{"frontmatter":{"path":"/pierieshiol-na-fedo/","title":"Перешёл на Fedora","tags":["Linux","Fedora"]},"fileAbsolutePath":"/srv/www/softroot.ru/src/posts/pierieshiol-na-fedo.md"},"previous":null}}