Не так давно я писав схожу статтю, як підняти локальний сервер на Linux Mint та Ubuntu. Сьогодні поговоримо про те, як зробити те саме в Arch Linux. Будемо аналогічно налаштовувати сервер на п'ять сайтів із розміщенням файлів у домашньому каталозі.
Отож, поїхали!
1. Веб-сервер
sudo pacman -S apache
Файли налаштувань Apache лежать у теці /etc/httpd/conf, а основний файл налаштувань – /etc/httpd/conf/httpd.conf. У ньому нам потрібно буде змінити кілька нюансів.
ServerAdmin you@example.com
Тут прописуємо свою електронну пошту, яка буде виводитися, наприклад, на сторінці помилки Apache.
DocumentRoot "/srv/http"
<Directory "/srv/http">
Тут міняємо шлях на свій. Я перед тим натякав, що файли будуть розміщені у домашньому каталозі, тож, для прикладу, обізвемо теку "LocalServer", тоді записи будуть виглядати так (моє ім'я користувача ivaniura тобі теж доведеться змінити на своє):
DocumentRoot "/home/ivaniura/LocalServer"
<Directory "/home/ivaniura/LocalServer">
Та на кілька рядків нижче знаходимо запис:
AllowOverride None
Змінюємо значення None на All.
Розкоментовуємо рядок:
LoadModule rewrite_module modules/mod_rewrite.so
Тепер надаємо права доступу до заданої теки:
sudo chmod o+x ~
sudo chmod o+x ~/LocalServer
sudo chmod -R o+r ~/LocalServer
Вмикаємо та запускаємо сервер:
sudo systemctl enable httpd
sudo systemctl start httpd
Підтримка SSL/HTTPS
Встановлюємо відповідний пакет:
sudo pacman -S openssl
Створюємо самозавірені сертифікати:
sudo openssl req -x509 -nodes -days 5000 -newkey rsa:2048 -keyout /etc/httpd/conf/server.key -out /etc/httpd/conf/server.crt
У процесі створення сертифікатів указуємо двозначний код країни UA, область, місто, назву організації, філіалу, своє ім'я та електронну адресу (будь-який із цих пунктів або навіть усі можна пропустити, якщо ти робиш для себе тестовий полігон – все одно, окрім тебе, цю інформацію ніхто не побачить 😀 )
Повертаємося у файл /etc/httpd/conf/httpd.conf та розкоментовуємо рядки:
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf
Віртуальні хости
У тому ж файлі розкоментовуємо ще один рядок:
Include conf/extra/httpd-vhosts.conf
Тепер відкриваємо файл /etc/httpd/conf/extra/httpd-vhosts.conf та додаємо там налаштування своїх локальних сайтів. Зважаючи на те, що в мене ім'я користувача ivaniura та хости будуть називатися test1, test2, test3, test4 та test5, мій файл виглядає отак:
<VirtualHost test1:80>
ServerAdmin webmaster@test1
DocumentRoot "/home/ivaniura/LocalServer/test1"
ServerName test1
ServerAlias test1
ErrorLog "/var/log/httpd/test1-error_log"
CustomLog "/var/log/httpd/test1-access_log" common
<Directory "/home/ivaniura/LocalServer/test1">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost test1:443>
ServerAdmin webmaster@test1
DocumentRoot "/home/ivaniura/LocalServer/test1"
ServerName test1:443
ServerAlias test1:443
ErrorLog "/var/log/httpd/test1-error_log"
CustomLog "/var/log/httpd/test1-access_log" common
<Directory "/home/ivaniura/LocalServer/test1">
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile "/etc/httpd/conf/server.crt"
SSLCertificateKeyFile "/etc/httpd/conf/server.key"
</VirtualHost>
Це для хоста test1. Нижче у тому ж файлі потрібно продублювати той же запис, але із значенням test2, test3 і т. д. у відповідних місцях.
Тепер додаємо записи про наші локальні сайти у файл /etc/hosts:
127.0.0.1 localhost.localdomain localhost my-hostname
127.0.0.1 test1
127.0.0.1 test2
127.0.0.1 test3
127.0.0.1 test4
127.0.0.1 test5
…де my-hostname міняємо на свою назву хоста.
PHP
sudo pacman -S php php-apache php-gd
Знову повертаємось до файлу /etc/httpd/conf/httpd.conf (популярний він, правда? 😉 ). У ньому закоментовуємо рядок
LoadModule mpm_event_module modules/mod_mpm_event.so
Розкоментовуємо
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Після рядків
# Various default settings
Include conf/extra/httpd-default.conf
Додаємо:
LoadModule php_module modules/libphp.so
AddHandler php-script php
Include conf/extra/php_module.conf
У файлі /etc/php/php.ini розкоментовуємо
extension=gd
MySQL
Наперед скажу – в Arch Linux чистий MySQL за замовчуванням змінений на форк MariaDB. Не лякайся – різниці ти не відчуєш 😉
sudo pacman -S mysql
Відкриваємо файл /etc/php/php.ini і в ньому розкоментовуємо рядки:
;extension=mysqli
;extension=pdo_mysql
Встановлюємо базу даних:
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
Вмикаємо та запускаємо MySQL:
sudo systemctl enable mysqld
sudo systemctl start mysqld
Встановлюємо пароль для root-користувача MySQL:
sudo mysql_secure_installation
Вхід у MySQL буде відбуватися за допомогою наступної команди:
sudo mysql -u root -p
phpMyAdmin
sudo pacman -S phpmyadmin
У файлі /etc/php/php.ini розкоментовуємо рядки:
extension=bz2
extension=iconv
extension=zip
Створюємо конфігураційний файл /etc/httpd/conf/extra/phpmyadmin.conf і вносимо в нього наступну інформацію:
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
У файлі /etc/httpd/conf/httpd.conf вкінці додаємо рядок:
Include conf/extra/phpmyadmin.conf
Далі відкриваємо файл /etc/webapps/phpmyadmin/config.inc.php, шукаємо в ньому рядок
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
і записуємо значення між одинарними скобками. Воно повинне бути якнайдовшим, інакше у phpMyAdmin буде виводитися застереження.
Далі створюємо каталог для тимчасових файлів phpMyAdmin і надаємо їй необхідні права:
sudo mkdir /usr/share/webapps/phpMyAdmin/tmp
sudo chmod -R 777 /usr/share/webapps/phpMyAdmin/tmp
Готово.
Дивовижна стаття! Робив все крок за кроком, пункт за пунктом - результат нічого не працює. Зніс apache і все що ставив, вичистив всі файли, зробив по вікі, щось не заладилося з phpmyadmin, повернувся до цієї статті, пару описаних рухів - відвалилося і те що працювало. Питання до автора - Ви впевнені що у Вас тут все доладньо описано?
Ви мене заінтригували 🙂 Вже майже два роки статті, і я завжди по ній встановлюю сервер, жодного разу не було проблем. Хіба що розробники дистрибутиву щось встигли змінити буквально недавно, зараз спробую встановити на чисту систему. Чекайте на результат.
Щойно встановив чисту найновішу систему Arch Linux на Virtualbox із KDE Plasma на борту. Далі повторив усі кроки з цієї статті, і все працює. Що саме у Вас не виходить?
Дякую, що відгукнулися :) Вже все працює. Ставив по вікі. Остання проблема з якою був зіткнувся, це неможливість зайти у phpMyadmin через графічний інтерфейс. Вирішив створенням нового користувача і надання йому прав https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7/763359#763359 А взагалі то я ДЯКУЮ Вам за Ваші статті. Не першу я читаю. Вважаю, добре що вони такі є, особливо українською мовою.
Щиро дякую за гарний відгук! І, звичайно, я дуже радий, що у Вас усе вийшло! Заходьте ще, із задоволенням допоможу, чим зможу 😉