Налаштування LAMP сервера на Gentoo
Вітаю, дорогі друзі!
Сьогодні ми поставимо з Вами 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
Оновлюємо дерево пакетів:
З цього моменту я б порекомендував уважно переглядати результати виконання кожної команди, тому що там може міститися інформація про помилки та попередження. Мені запропонували оновити 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.
Звідти вибираємо які потрібні розширення і ставимо
# 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 і копіюємо в нього наступний текст
У браузері пишемо ip-адреса / test.php. Бачимо картнку типу цієї
Значить все ОК. Якщо бачимо незрозуміло що, перевіряємо, куди поклали 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 скрипти використовуватися не будуть, але опції нехай на всякий випадок залишаються. Створюємо папку для сайту.
Тепер настала черга заповнення її контентом. 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-сервер, але про це наступного разу.