Настройка LAMP сервера на Gentoo | NetConfig

Установка LAMP-сервера на Linux Gentoo

linux-distro-lampЗдравствуйте, дорогие друзья!

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

Итак LAMP – Linux, Apache, MySQL, PHP. Вроде как-то так расшифровывается…

Что касается самой операционки, установил чистую, свежую виртуальную машину в VirtualBox. Выполним минимальную настройку системы для работы нашего сервера.

Для начала настройки своей сетевой платы, нужно рассказать о ней системе Gentoo. Это делается путем создания символической ссылки с net.lo на net. enp0s3 (или что-либо другое, в зависимости от названия вашего сетевого интерфейса, например eth0) в /etc/init.d.

# ln -s net.lo /etc/init.d/net.enp0s3

В данном случае по умолчанию IP адрес будет получаться от DHCP сервера. Такая настройка нас вполне устроит, однако в локальной сети нам будет не всегда удобно искать http сервер, у которого адрес постоянно меняется. Поэтому либо прописываем на DHCP сервере конкретный айпишник для него, либо редактируем файлик etc/conf.d/net.

# использование DHCP (для очистки совести)
config_eth0="dhcp"
 
# статический IP-адрес, используется запись CIDR
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
 
# статический IP-адрес, запись с маской подсети
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

Здесь я думаю комментарии не нужны. Далее настраиваем запуск сетевого интерфейса при загрузке

rc-update add net.enp0s3 default

В случае успеха получаем сообщение

* service net.enp0s3 added to runlevel default

Если необходим доступ по ssh, добавляем в автозагрузку и его

rc-update add sshd default

Чтоб в будущем при запуске не ругался Apache (хотя это не критично), устанавливаем значение hostname в файле /etc/conf.d/hostname

Я обозвал свой сервер lampsrv
Перезапускаем hostname

/etc/init.d/hostname restart

Обновляем дерево пакетов:

emerge –sync

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

# USE="ssl apache2" emerge apache

Во флагах USE мы указали то, с поддержкой чего будет наш Apache. Если интересно здесь достаточно доступно все это описано.

Редактируем файл /etc/apache2/httpd.conf добавив туда директиву
ServerName имя_сервера

Просто, через пробел, без кавычек. Я написал тоже, что и в hostname. Запускаем Apache. Не забываем добавить его в автозапуск.

# rc-update add apache2 default
# /etc/init.d/apache2 start

Сообщения

* Caching service dependencies ...                                       [ ok ]
* Starting apache2 ...                                                   [ ok ]

говорят о том, что запуск прошел успешно. Проверяем работу веб-сервера. В строке адреса на любом компе из нашей подсети пишем айпишник сервера с апачем. В окошке в верхнем левом углу появится надпись «It works!». Все ок, апач работает. На следующем этапе ставим PHP.

# emerge -pv php

Оттуда выбираем какие нужны расширения и ставим

# USE="apache2 mysql pdo mysqli zip unicode cgi curl gd" emerge php

Установка занимает 30-50 минут. Можно идти пить чай, курить…

Однажды на этапе установке PHP у меня не поставился пакет libtasn1-3.6. Установка была прервана. Однако, как я и говорил, нужно читать результаты выполнения команд. А там было сказано, что всему виной неправильно работающий perl. Немного погуглил. Все рекомендации сводились к выполнению команды perl-cleaner –all. Однако и это у меня выкидывало ошибки. Здесь я нашел то, что меня спасло. Долго не буду останавливаться на данной проблеме, лишь приведу команды, которые советовали выполнить ребята на форуме. После этого PHP был установлен.

# emerge --deselect --ask $(qlist -IC 'perl-core/*')
# emerge -uD1a $(qlist -IC 'virtual/perl-*')
# perl-cleaner –all
# emerge dev-libs/libtasn1

Смотрим, что нам советует умный Linux. А советует он нам немного поправить файл /etc/conf.d/apache2. Там необходимо добавить в строке с APACHE2_OPTS опцию поддержки PHP5. Дописываем -D PHP5. Рестартуем Apache.

Теперь для дальнейшей работы необходимо проверить работоспособность PHP.

В папке /var/www/localhost хранится наш сайт. Тот, что создался в демонстрационных целях при установке апача. Файлы, которые относятся непосредственно к веб контенту хранятся в папке /var/www/localhost/htdocs. Добавляем туда файлик с именем test.php и копируем в него следующий текст

<?php
phpinfo();
?>

В браузере пишем ip-адрес/test.php. Видим картнку типа этой

 

phpinfo

 

Значит все ОК. Если видим непонятно что, проверяем, куда положили test.php. Если видим тупо содержимое этого файла, значит Apache не поддерживает PHP. Проверяем опцию “–D PHP” (выглядеть должно примерно так APACHE2_OPTS=”-D PHP5 -D DEFAULT_VHOST -D INFO -D SSL….), перезапускаем Apache (/etc/init.d/apache2 restart). Проверяем.

Ставим MySQL.

# emerge -pv mysql
# emerge mysql

После установки MySQL читаем:

* Messages for package dev-db/mysql-5.5.40:
* MySQL MY_DATADIR is /var/lib/mysql
* You might want to run: "emerge --config =dev-db/mysql-5.5.40"
* if this is a new install.
* If you are upgrading major versions, you should run the
* mysql_upgrade tool.

Выполняем (5.5.40 – как вы понимаете версия MySQL)

# emerge --config =dev-db/mysql-5.5.40

Вам нужно будет только задать пароль, остальное система сделает за Вас. Добавляем в автостарт и запускаем.

# rc-update add mysql default
# /etc/init.d/mysql start

Для более простого управления MySQL-сервером вероятно нам потребуется phpMyAdmin. Ставим.

# USE="setup vhosts" emerge phpmyadmin

Опция vhosts нам необходима для возможности работы нескольких сайтов на нашем сервере. В сообщении установщика сказано:

* The 'vhosts' USE flag is switched ON
* This means that Portage will not automatically run webapp-config to
* complete the installation.
*
* To install phpmyadmin-4.1.14.3 into a virtual host, run the following command:
*
*     webapp-config -I -h &lt;host&gt; -d phpmyadmin phpmyadmin 4.1.14.3
*
* For more details, see the webapp-config(8) man page

Т.е. при установке, была включена опция поддержки нескольких сайтов, также дается рекомендация как залить phpMyAdmin на виртуальный хост. Опции подключения vhosts находятся в /etc/apache2/httpd.conf. В секции #Virtual-host support раскомментирована строчка Include /etc/apache2/vhosts.d/*.conf это значит, что конфигурации всех виртуальных хостов будут находится в папке /etc/apache2/vhosts.d

Теперь перейдем к настройке виртуальных хостов. Все, что для этого нужно лежит в папке /etc/apache2/vhosts.d/. По умолчанию там лежит 3 файла

00_default_ssl_vhost.conf 00_default_vhost.conf default_vhost.include

Для понимания процесса нам необходимо лишь 2 последних. Для настройки полноценного веб-сервера с несколькими сайтами предлагаю сделать дополнительно 2 сайта: с phpMyAdmin и тестовый с WordPress. Пусть папки с контентом называтся pma и wptest, а домены pma.my и wptest.my соответственно.

Для этого делаем по 2 копиии файлов 00_default_vhost.conf и default_vhost.include. Имена копий значение имеют только для нас, чтобы не запутаться.

# cd /etc/apache2/vhosts.d/
# cp 00_default_vhost.conf pma.conf
# cp default_vhost.include pma.include
# nano pma.conf

Правим. Оставляем только такое. Для удобства: чтобы удалить текущую строку в редакторе nano нажмите Ctrl+K.

<IfDefine DEFAULT_VHOST>
<VirtualHost *:80>
        ServerName pma.my
        Include /etc/apache2/vhosts.d/pma.include
 
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
</VirtualHost>
</IfDefine>

Теперь переходим к pma.include

# nano pma.include
ServerAdmin [email protected]
DocumentRoot "/var/www/pma/htdocs"
<Directory "/var/www/pma/htdocs">
        DirectoryIndex index.php
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>
 
<IfModule alias_module>
        ScriptAlias /cgi-bin/ "/var/www/pma/cgi-bin/"
</IfModule>
<Directory "/var/www/pma/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
</Directory>

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

# mkdir /var/www/pma

Теперь настал черед заполнения ее контентом. 4.1.14.3 версия phpMyAdmin.

# webapp-config -I -h pma phpmyadmin 4.1.14.3

На локальном компе в файле hosts добавляем запись

Pma.my        ip-адрес

Ну или делаем соответствующие изменения на DNS-сервере Вашей подсети.

Теперь pma.my доступен из браузера. Заходим под пользователем root и с паролем придуманным Вами в процессе конфигурации MySQL. Интерфейс интуитивно понятен. Трудностей возникнуть не должно.

Пользуясь случаем создадим БД для будущего сайта на wordpress. Назовем ее wp-test. Создавать таблицы, пользователей нет нужды, движок вордпреса сделает все сам.

Установка wordpress очень похожа на установку phpMyAdmin, поэтому сильно в подробности вдаваться не будем.

# echo "www-apps/wordpress" &gt;&gt; /etc/portage/package.accept_keywords
# emerge --ask wordpress
# mkdir /var/www/wptest
# webapp-config -I -h wptest wordpress 4.0

Создаем wptest.conf и wptest.include. Правим их. Перезапускаем Apache, проверяем. Добавляем на локальном компьютере в hosts наш новый сайт.

# cp /etc/apache2/vhosts.d/pma.include /etc/apache2/vhosts.d/wptest.include
# cp /etc/apache2/vhosts.d/pma.conf /etc/apache2/vhosts.d/wptest.conf
# nano /etc/apache2/vhosts.d/wptest.conf
# nano /etc/apache2/vhosts.d/wptest.include

При входе на wptest.my вероятнее всего вы увидите такую надпись:

Error establishing a database connection

Не пугайтесь. Все нормально. Нужно немного поднастроить wordpress. Редактируем конфиг wordpress

# nano /var/www/wptest/htdocs/wp-config.php

Меняем

define('DB_NAME', 'wp-test');
define('DB_USER', 'root');
define('DB_PASSWORD', 'ваш пароль для mysql');

Теперь заходим на wptest.my и заполняем параметры по нашему сайту. Название сайта, пользователь с доступом к админке. Жмакаем «InstallWordpress».

Вот как бы и все. Мы настроили 2 виртуальных сайта. Тему можно считать рассмотренной. Для удобства работы нам может пригодиться ftp-сервер, но об этом в следующий раз.




Тэги: , , , , , , ,



One Response to “Установка LAMP-сервера на Linux Gentoo”

  1. vzx 28. Jun, 2016 at 12:54 #

    Конфиг локалхостов: если apache 2.4 то вместо

    Order allow,deny
    Allow from all

    Следует писать

    Require all granted

    Иначе сервер вернет ошибку и ляжет (см https://httpd.apache.org/docs/current/upgrading.html).

    # webapp-config -I -h pma phpmyadmin 4.5.5.1
    usage: webapp-config [-ICU] [-dghus]
    webapp-config: error: argument -I/–install: expected 2 arguments

    Аргументы должны стоять в другом порядке
    # webapp-config -h pma -I phpmyadmin 4.5.5.1

    Далее корневой папкой после конфигурации pma будет не /var/www/pma/htdocs а /var/www/pma/htdocs/phpmyadmin, соответственно нужно поправить pma.include

    Кроме того необходимо внести правку в
    # nano /etc/conf.d/apache2
    добавить в APACHE2_OPTS подстроку “-D PHP5”

    Привести содержимое конфига
    # nano /etc/apache2/modules.d/70_mod_php5.conf
    к виду

    # Load the module first

    LoadModule php5_module modules/libphp5.so

    # Set it to handle the files

    AddHandler application/x-httpd-php .php .php5 .phtml
    AddHandler application/x-httpd-php-source .phps

    DirectoryIndex index.php index.phtml

    и только тогда
    # /etc/init.d/apache2 restart

    Возможно не будет найдена библиотека libphp5.so
    тогда ее нужно найти
    # find / -name “libphp5.so”

    Делаем символическую ссылку на нее в нужное место
    ln -s /usr/lib64/php5.6/apache2/libphp5.so /usr/lib64/apache2/modules/libphp5.so

    И снова
    /etc/init.d/apache2 restart

    И будет ок 🙂

    Собирал по этому мануалу, но пришлось вот так вот допилить.

Оставить комментарий


iTuts dakulov Free CDN NetConfig