Установка LAMP в ArchLinux

Установка Apache

Для начала нужно обновить систему:

$ 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

Установка и настройка MySQL (MariaDB)

Устанавливаем пакет:

$ 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

Установка PHP 7

$ sudo pacman -S php php-apache php-imap

Настройка Apache

Отредактируем основной конфигурационный файл:

$ 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

Команды a2ensite и a2dissite для включения и отключения конфигурационных файлов виртуальных хостов

Переходим в домашнюю директорию:

$ 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, если все установлено и настроено правильно. phpinfo

Установка phpMyAdmin

Переходим на сайт https://www.phpmyadmin.net/ и скачиваем последнюю стабильную версию. Распаковываем скачанный архив по пути /srv/http/localhost/phpmyadmin Заходим на http://localhost/phpmyadmin В том случае, если у root пользователя не задан пароль при попытке входа возникнет ошибка. phpmyadmin Для ее исправления необходимо отредактировать настройку $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"

На главную