Majordomo на Arhclinux-е - установка и настройка Apache, PHP, MySQL

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Ответить
abc
Сообщения: 34
Зарегистрирован: Ср ноя 07, 2018 3:28 pm
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Majordomo на Arhclinux-е - установка и настройка Apache, PHP, MySQL

Сообщение abc » Пт ноя 09, 2018 8:30 pm

На форуме есть тема почти пятилетней давности Установка Majordomo, phpmyadmin на Archlinux. В ней некоторые моменты уже не актуальны. Поэтому я решил обновить инструкцию.
Установка ArchlinuxПоказать
Будем считать, что флешку или диск с дистрибутивом вы уже приготовили, воткнули в ноут или комп, выбрали в биосе загрузку с вашего носителя. В процессе установки не забывайте менять ip-адреса, имена пользователей и пути на свои. Установка возможна как локально, т. е. сидя за ноутбуком/компьютером, на котором будет идти установка, так и удаленно по SSH. Если хотите ставить локально, тогда первый спойлер можете пропустить и продолжить со строки "Начало установки".
Удаленная установка по SSHПоказать
Подключим вайфай

Код: Выделить всё

wifi-menu 
Запустим службу SSH

Код: Выделить всё

systemctl start sshd.service
Установим пароль для root пользователя Теперь пересаживаемся за ваш удобный ноутбук и продолжаем установку удаленно

Код: Выделить всё

ssh root@192.168.0.5
Начало установки
Настроим русский язык и шрифт с кириллицей

Код: Выделить всё

loadkeys ru
setfont cyr-sun16
синхронизируем часы

Код: Выделить всё

timedatectl set-ntp true
В файле

Код: Выделить всё

nano /etc/locale.gen
раскоментируем строку

Код: Выделить всё

ru_RU.UTF-8 UTF-8
Обновим локали

Код: Выделить всё

locale-gen
export LANG=ru_RU.UTF-8
Создаем разделы на жестком диске
swap 1 ГБ (по желанию),
boot 100 МБ,
root 15 ГБ,
home все остальное.

У меня на ноуте один диск /dev/sda. Если у вас их несколько, поменяйте букву на нужную. Ниже все команды на примере моего диска.

Сначала очистим таблицы на диске командой

Код: Выделить всё

sgdisk --zap-all /dev/sdа
Запускаем разметку диска

Код: Выделить всё

сfdisk /dev/sda
выбираем dos и создаем 4 раздела выбором кнопки New на нижней панели. В конце нажимаем Write и пишем yes для подтверждения. Нажимаем Quit и закрываем cfdisk

Теперь форматируем и создаем разделы с нужными типами файловых систем

Код: Выделить всё

mkswap /dev/sda1 -L swap
mkfs.ext2 /dev/sda2 -L boot
mkfs.ext4 /dev/sda3 -L root
mkfs.ext4 /dev/sda4 -L home
Монтируем корневой раздел

Код: Выделить всё

mount /dev/sda3 /mnt
Создаем папки для boot и home

Код: Выделить всё

mkdir /mnt/{boot,home}
Монтируем boot и home, подключаем swap

Код: Выделить всё

mount /dev/sda2 /mnt/boot
mount /dev/sda4 /mnt/home
swapon /dev/sda1
Установим базовую систему, пакеты для разработчиков и пакеты для работы сети

Код: Выделить всё

pacstrap /mnt base base-devel netctl dialog wpa_supplicant
Создаем fstab

Код: Выделить всё

genfstab -pU /mnt >> /mnt/etc/fstab
Перейдём в установленную систему

Код: Выделить всё

arch-chroot /mnt
Прописываем имя компьютера

Код: Выделить всё

echo "archlinux" > /etc/hostname
Часовой пояс

Код: Выделить всё

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Локализуемся

Код: Выделить всё

echo -e "en_US.UTF-8 UTF-8\nru_RU.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo 'LANG="ru_RU.UTF-8"' > /etc/locale.conf
Укажем консольный keymap и шрифт

Код: Выделить всё

echo 'KEYMAP=ru' >> /etc/vconsole.conf
echo 'FONT=cyr-sun16' >> /etc/vconsole.conf
Создаем загрузочный ram-диск

Код: Выделить всё

mkinitcpio -p linux
Пароль для root-а
passwd

Ставим загрузчик Граб

Код: Выделить всё

pacman -S grub
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
Перезагрузимся в установленную систему

Код: Выделить всё

exit
umount /mnt/{boot,home,}
reboot

После перезагрузки введите логин root и пароль.

Локализация системы

Код: Выделить всё

localectl set-keymap ru
setfont cyr-sun16
localectl set-locale LANG="ru_RU.UTF-8"
export LANG=ru_RU.UTF-8
Обновим загрузочный ram-диск

Код: Выделить всё

mkinitcpio -p linux
Создаем себя

Код: Выделить всё

useradd -m -g users -G wheel -s /bin/bash ваше_имя
passwd ваше_имя
Настроим sudo в файле

Код: Выделить всё

nano /etc/sudoers
раскомментируем строку

Код: Выделить всё

%wheel ALL=(ALL) ALL
Установим пару пакетов для дальнейшей удобной работы

Код: Выделить всё

sudo pacman -S openssh wget unzip git mc
Для верности еще раз можно ребутнуться и на этом установка Archlinux-а завершена.

Иксы на сервер ставим по желанию. Я в этом смысла не вижу, все равно вся работа будет идти либо через веб-интерфейс, либо по SSH.
Если тема интересна, могу написать как делать бекап системы и файлов, про настройку сетевого экрана и что-нибудь еще.
Установка ApacheПоказать
Установка сервера Apache:
sudo pacman -S apache

Добавляем своего пользователя в группу http

Код: Выделить всё

sudo gpasswd -a username http
Запускаем веб-сервер

Код: Выделить всё

sudo systemctl start httpd.service
В браузере открываем сервер по его ip-адресу. Если установка и запуск сервера прошли успешно, должны увидеть такую страницу:
localhost.png
localhost.png (8.95 КБ) 2225 просмотров
localhost.png

Далее займемся настройкой Apache. Открываем главный файл с настройками:

Код: Выделить всё

sudo nano /etc/httpd/conf/httpd.conf
Если хотите, чтобы доступ к серверу был только локально измените строку:

Код: Выделить всё

Listen 80
на строку

Код: Выделить всё

Listen 127.0.0.1:80
Если оставите как было, тогда доступ будет возможен из вне.

Ниже строки

Код: Выделить всё

User http
Group http
Если оставить как есть сервер будет запускаться от пользователя и группы http. Меняйте только если уверены, что делаете. Если поменяете пользователя здесь, то не забудьте делать это везде ниже в инструкции. Я оставляю как есть.

Впишем имя сервера в строку

Код: Выделить всё

ServerName localhost
Строки

Код: Выделить всё

DocumentRoot "/srv/http"
<Directory "/srv/http">
Здесь указана корневая папка Apach-а. Можете изменить на свои. Если поменяете пути здесь, то не забудьте делать это везде ниже в инструкции. Я оставляю по умолчанию.

В этом же блоке ниже меняем строку

Код: Выделить всё

AllowOverride None
меняем на

Код: Выделить всё

AllowOverride All
Еще ниже

Код: Выделить всё

Require all denied
на строку

Код: Выделить всё

Require all granted
Закомментируем строку

Код: Выделить всё

LoadModule mpm_event_module modules/mod_mpm_event.so
Раскомментируем строки

Код: Выделить всё

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule rewrite_module modules/mod_rewrite.so
В конец блока LoadModule добавляем строчку

Код: Выделить всё

LoadModule php7_module modules/libphp7.so
И почти в самом конце файла в конец блока Include добавляем строчку

Код: Выделить всё

Include conf/extra/php7_module.conf
Сохраняем изменения и закрываем файл.


В файле

Код: Выделить всё

sudo nano /etc/httpd/conf/mime.types 
Добавим строчку

Код: Выделить всё

application/x-httpd-php php
Проверяем нет ли ошибок в настройках апача

Код: Выделить всё

apachectl configtest
Может появится ошибка, что нет модуля PHP. Это нормально, так как сам PHP мы поставим чуть ниже.

Изменим права доступа к корневой папке сервера

Код: Выделить всё

cd /srv
sudo chown -R root:http http/
sudo chmod -R 775 http/
Логи апача при необходимости смотрите в этих файлах

Код: Выделить всё

/var/log/httpd/access_log
/var/log/httpd/error_log
Установка PHPПоказать
Ставим PHP

Код: Выделить всё

sudo pacman -S php php-apache php-gd libmcrypt
Настроем PHP в файле:

Код: Выделить всё

sudo nano /etc/php/php.ini
Расскоментируем и допишем строку в соответствии со своей временной зоной

Код: Выделить всё

date.timezone = Europe/Moscow
Поменяем значение в следующих строках

Код: Выделить всё

max_execution_time = 90
max_input_time = 180
post_max_size = 200M
upload_max_filesize = 50M
В блоке Dynamic Extensions раскомментируем следующие расширения:

Код: Выделить всё

extension=gd
extension=curl
extension=iconv
extension=zip
extension=mysqli
extension=pdo_mysql
extension=mcrypt
extension=sockets.so
Если меняли корневую папку сервера, тогда в строке open_basedir добавляем путь к ней в конец строки. Если не меняли оставьте пустую

Код: Выделить всё

open_basedir = 
В строке short_open_tag меняем Off на On

Код: Выделить всё

short_open_tag = On
Строку

Код: Выделить всё

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
приведем к виду:

Код: Выделить всё

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
Сохраняем и закрываем файл.

Перезапускаем веб-сервер

Код: Выделить всё

sudo systemctl restart httpd.service
И проверим работу php. Для этого в корневой папке сервера создаем .php-файл

Код: Выделить всё

sudo touch /srv/http/test.php
И впишем в него вывод php-info:

Код: Выделить всё

<?php phpinfo();?>
В браузере открываем http://ip-сервера/test.php
Если появится информация о php, значит вы все сделали правильно.
Установка MySQLПоказать
Сейчас MySQL называется MariaDB, не путайтесь. Кроме названия, все осталось так же

Код: Выделить всё

sudo pacman -S mariadb
sudo systemctl start mariadb.service
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo mysql_secure_installation
спросит пароль, но мы его еще не ставили, поэтому пропускаем нажатием энтер.
На что будет предложено установить его для рут-пользователя, соглашаемся и вводим новый пароль, потом повторяем его.
На все дальнейшие вопросы отвечаем утвердительно (жмем энтер).

Запрещаем доступ к БД из вне. В файле

Код: Выделить всё

sudo nano /etc/mysql/my.cnf

раскомментируем строчку

Код: Выделить всё

skip-networking
Установка MajordomoПоказать
Поставим git и скачаем свежую версию Majordomo с гитхаба

Код: Выделить всё

cd /usr/src
sudo pacman -S git
sudo git clone https://github.com/sergejey/majordomo.git
Копируем все в папку /srv/http

Код: Выделить всё

sudo cp -rp /usr/src/majordomo/* /srv/http/
sudo cp -rp /usr/src/majordomo/.htaccess /srv/http/
Создаем конфиг-файл из примера

Код: Выделить всё

sudo cp /srv/http/config.php.sample /srv/http/config.php
Открываем его для редактирования

Код: Выделить всё

sudo nano /srv/http/config.php
Вписываем пользователя и пароль для доступа к БД в соответствующих строках

Код: Выделить всё

Define('DB_USER', 'root');
Define('DB_PASSWORD', qwerty123);
Ниже в этом же файле меняем путь в строке
Define('SERVER_ROOT', '/srv/http');

Подключаемся к БД

Код: Выделить всё

mysql -u root -p
тут вводим пароль, который задавали выше для пользователя root
должно появиться приглашение

Код: Выделить всё

MariaDB [(none)]> 
создаем базу данных с именем db_terminal

Код: Выделить всё

CREATE DATABASE db_terminal;
USE db_terminal;
quit
Импортируем в него необходимые данные

Код: Выделить всё

sudo mysql -u root -p db_terminal < /srv/http/db_terminal.sql
Снова меняем права доступа для новых файлов

Код: Выделить всё

cd /srv
sudo chown -R root:http http/
sudo chmod -R 775 http/
ЗапускПоказать
Создаем файл для сервиса для Majordomo, который будет запускать основной цикл

Код: Выделить всё

sudo nano /etc/systemd/system/majordomo.service
Впишем в него следующее:

Код: Выделить всё

[Unit]
Description=Majordomo

[Service]
Requires=mariadb.service
Requires=apache.service
Type=simple
WorkingDirectory=/srv/http
ExecStart=/usr/bin/php /srv/http/cycle.php
Restart=always
User=http    
Group=http    

[Install]
WantedBy=multi-user.target
Запускаем сервис

Код: Выделить всё

sudo systemctl start majordomo.service
Заходим в браузере на http://ip-сервера/
Должен открыться наш сайт Majordomo. В левом верхнет углу должно быть три зеленые иконки. Если они не зеленые, значит у вас не работаю какие-либо циклы, о чем будет написано там же.


Для убодства все нужные нам сервисы можно сделать автозапускаемыми
sudo systemctl enable httpd.service
sudo systemctl enable mariadb.service
sudo systemctl enable majordomo.service


На этом установка завершена. Можете настроить систему по своему усмотрению.
За это сообщение автора abc поблагодарили (всего 2):
skysilver (Пт ноя 09, 2018 10:09 pm) • Yashalta (Вт ноя 20, 2018 11:35 am)
Рейтинг: 2.33%
Ответить