Не так давно я писав схожу статтю, як підняти локальний сервер на 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 php7_module modules/libphp7.so AddHandler php7-script php Include conf/extra/php7_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=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
Готово.
Прокоментувати