LAMP сервер своими руками

15-04-2021

(UPD) Статья обновлена.

Очень вольный перевод howtoforge.

Прежде чем установить LAMP обновляем систему.

sudo apt-get update && apt-get upgrade -y

Далее устанавливаем Apache.

sudo apt-get install apache2 apache2-utils -y

Устанавливаем браузер и проверяем.

sudo apt-get install elinks
sudo apache2ctl fullstatus

Установка сервера MariaDB и проверка.

sudo apt-get install mariadb-server -y
sudo systemctl status mariadb

Также рекомендуется защитить установку MariaDB и установить пароль администратора. Запускаем скрипт mysql_secure_installation для защиты установки MariaDB.

sudo mysql_secure_installation

Отвечаем на следующие вопросы:

Enter current password for root (enter for none): 
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Проверяем:

mysql -u root -p

Вывод:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 56
Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Выполняем следующую команду, чтобы проверить версию MariaDB:

MariaDB [(none)]> SELECT VERSION();

Вывод:

+---------------------------+
| VERSION()                 |
+---------------------------+
| 10.5.12-MariaDB-0+deb11u1 |
+---------------------------+
1 row in set (0.000 sec)

Устанавливаем PHP:

sudo apt-get install php libapache2-mod-php php-gd php-cli php-mysql php-zip php-curl php-xml php-mbstring -y

Проверяем версию:

php -v
PHP 7.4.25 (cli) (built: Oct 23 2021 21:53:50) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.25, Copyright (c), by Zend Technologies

Создадим Virtual Host для Apache.

Создадим директорию example.com для размещения PHP страницы, следующей командой:

sudo mkdir /var/www/html/example.com

Сменим группу и владельца директории:

sudo chown -R www-data:www-data /var/www/html/example.com

Создадим конфигурационный файл виртуального хоста командой:

sudo nano /etc/apache2/sites-available/example.com.conf

Добавим в него:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html/example.com
	ServerName example.com
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/html/example.com/>
		Options FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
		Require all granted
	</Directory>
	ErrorLog ${APACHE_LOG_DIR}/example_error.log
	LogLevel notice
	CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>

Сохраним и закроем файл, затем активируем виртуальный хост example.com и отключим виртуальный хост по умолчанию с помощью следующих команд:

sudo a2ensite example.com.conf
sudo a2dissite 000-default

Затем проверяем файл виртуального хоста на наличие синтаксических ошибок:

sudo apache2ctl configtest
Syntax OK

При появлении ошибки AH00558, открываем файл:

sudo nano /etc/apache2/apache2.conf

И в конец файла дописываем:

ServerName 127.0.0.1

Перезагружаем и проверяем Apache.

sudo systemctl reload apache2
sudo systemctl status apache2

Также не помешает скрыть версию сервера:

sudo nano /etc/apache2/apache2.conf

Добавить в конец файла:

ServerTokens Prod
ServerSignature Off

Проверим установку PHP. Создадим файл:

sudo nano /var/www/html/example.com/phpinfo.php

Вставим следующие строки:

<?php phpinfo(); ?>

Проверим по адресу в браузере http://example.com/phpinfo.php:

phpinfo.php

 Дополнительно включить мод rewrite:

sudo a2enmod rewrite
sudo systemctl restart apache2