Для начала нужно обновить систему:
$ sudo pacman -Syu
После обновления устанавливаем Apache Web Server:
$ sudo pacman -S apache
Запускаем и проверяем работу:
$ sudo systemctl start httpd
$ sudo systemctl status httpd
Для автоматического запуска сервера при загрузке ОС можете выполнить следующую команду:
$ sudo systemctl enable httpd
для отмены автозапуска:
$ sudo systemctl disable httpd
Устанавливаем пакет:
$ sudo pacman -S mysql
(выберите 1 - MariaDB) Выполним инициализацию
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
И произведем настройку пароля для аккаунта root, удалим анонимные пользовательские аккаунты, удалим тестовую базу данных и отключим удалённый вход для пользователя root (когда попросят ввести текущий пароль, то просто нажмите клавишу [Enter] затем введите два раза новый пароль, на все вопросы выбирайте ответы по умолчанию, т.е. Да).
$ sudo mysql_secure_installation
Запускаем и проверяем работу:
$ sudo systemctl start mysqld
$ sudo systemctl status mysqld
$ sudo pacman -S php php-apache php-imap
Отредактируем основной конфигурационный файл:
$ sudo nano /etc/httpd/conf/httpd.conf
Добавив в конец файла две строки:
IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Эти две строки сообщают Apache, что теперь ему следует загружать конфигурационные файлы *.conf
из папок /etc/httpd/conf/sites-enabled/
(виртуальные хосты) и /etc/httpd/conf/mods-enabled/
(модули сервера)
Создаем папки:
$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled
Переходим в домашнюю директорию:
$ cd
Создаем файл:
$ sudo nano a2ensite
и вставляем следующее содержимое:
#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi
avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: n2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi
Также создаем файл:
$ sudo nano a2dissite
со следующим содержимым:
#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`
if [ "$#" != "1" ]; then
echo "Use script: n2dissite virtual_site"
echo -e "\nAvailable virtual hosts: \n$site"
exit 0
else
if test -e $avail; then
sudo rm $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi
После того, как файлы были созданы, назначьте им права выполнения и скопируйте их в директорию для исполнимых файлов, чтобы они были доступны во всей системе.
$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/
Создадим файл конфигурации для localhost:
$ sudo nano /etc/httpd/conf/sites-available/localhost.conf
Со следующим содержимым:
<VirtualHost *:80>
DocumentRoot "/srv/http/localhost"
ServerName localhost
ServerAdmin you@example.com
ErrorLog "/var/log/httpd/localhost-error_log"
TransferLog "/var/log/httpd/localhost-access_log"
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order deny,allow
Allow from all
Require all granted
</Directory>
</VirtualHost>
Создадим папку с файлами для localhost:
$ sudo mkdir /srv/http/localhost
Получим права на запись
$ sudo chmod 766 /srv/http/localhost
И для проверки создадим файл:
$ nano /srv/http/localhost/index.php
Со следующим кодом:
<?php phpinfo(); ?>
Включаем виртуальный хост и перезагружаем сервер:
$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Осталось добавить запись в /etc/hosts:
$ sudo nano /etc/hosts
Добавляем localhost:
127.0.0.1 localhost
После чего можем перейти в браузере по адресу http://localhost и увидеть информацию о PHP, если все установлено и настроено правильно.
Переходим на сайт https://www.phpmyadmin.net/ и скачиваем последнюю стабильную версию.
Распаковываем скачанный архив по пути /srv/http/localhost/phpmyadmin
Заходим на http://localhost/phpmyadmin
В том случае, если у root пользователя не задан пароль при попытке входа возникнет ошибка.
Для ее исправления необходимо отредактировать настройку $cfg['Servers'][$i]['AllowNoPassword'] = false;
на $cfg['Servers'][$i]['AllowNoPassword'] = true;
в файле /srv/http/localhost/phpmyadmin/config.inc.php:33
.
#!/bin/bash
if [ -z "$1" ]; then
echo 'No parameters provided, exiting...'
exit 1
fi
PUBLIC=/srv/http/$1
CONF=/etc/httpd/conf/sites-available/$1.conf
if [ -d $PUBLIC ]; then
echo "Folder \"$PUBLIC\" already exists! Exiting..."
exit 1
fi
if [ -f $CONF ]; then
echo "Config file \"$CONF\" already exists! Exiting..."
exit 1
fi
sudo mkdir $PUBLIC && echo "\"$PUBLIC\" created"
sudo chown user:http $PUBLIC && echo "Change owner to \"user:http\""
sudo touch $CONF && echo "Create config file at \"$CONF\""
sudo chmod 666 $CONF
cat > $CONF << EOF
<VirtualHost *:80>
DocumentRoot "/srv/http/$1"
ServerName $1
ServerAdmin admin@$1
ErrorLog "/var/log/httpd/$1-error_log"
TransferLog "/var/log/httpd/$1-access_log"
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order deny,allow
Allow from all
Require all granted
</Directory>
</VirtualHost>
EOF
sudo a2ensite $1
sudo -- sh -c -e "echo '127.0.0.1 $1' >> /etc/hosts"