Како да инсталирате стек Linux, Apache, MariaDB, PHP (LAMP) на Debian 11


Вовед

Стак \LAMP е група софтвер со отворен код што обично се инсталира заедно за да овозможи серверот да хостира динамични веб-локации и веб-апликации. Овој термин е кратенка што го претставува оперативниот систем Linux , со веб-серверот Apache. Податоците на страницата се зачувуваат во MariaDB база на податоци, а динамичната содржина ја обработува PHP.

Иако овој софтверски стек обично вклучува MySQL како систем за управување со базата на податоци, некои дистрибуции на Linux - вклучувајќи го и Debian - користат MariaDB како замена за MySQL.

Во ова упатство, ќе инсталирате стек LAMP на серверот Debian 11, користејќи MariaDB како систем за управување со базата на податоци.

Предуслови

За да го следите ова упатство, ќе ви треба сервер Debian 11 со корисничка сметка безroot sudo и основен заштитен ѕид. Ова може да се конфигурира со помош на нашиот првичен водич за поставување сервер за Debian 11.

Чекор 1 - Инсталирање на Apache и ажурирање на заштитниот ѕид

Веб-серверот Apache е меѓу најпопуларните веб-сервери во светот. Добро е документиран, има активна заедница на корисници и е во широка употреба во поголемиот дел од историјата на веб, што го прави одличен избор за хостирање веб-страница.

Започнете со ажурирање на кешот на менаџерот на пакети. Ако ова е првпат да користите sudo во оваа сесија, ќе биде побарано да ја наведете лозинката на вашиот корисник за да потврдите дека ги имате вистинските привилегии за управување со системските пакети со apt:

  1. sudo apt update

Потоа, инсталирајте го Apache со следново:

  1. sudo apt install apache2

Оваа команда ќе ве поттикне да ја потврдите инсталацијата на Apache. Потврдете со пишување Y, потоа ENTER.

На Debian 11, UFW доаѓа со профили на апликации што можете да ги користите за да ги приспособите поставките за заштитниот ѕид. Погледнете ја целосната листа на профили на апликации со извршување:

  1. sudo ufw app list

Наведените профили WWW се користат за управување со портите што ги користат веб-серверите:

Output
Available applications: . . . WWW WWW Cache WWW Full WWW Secure . . .

Ако го прегледате профилот WWW Full со info за апликацијата ufw, вашиот излез ќе покаже дека овозможува сообраќај до портите 80 и 443:

  1. sudo ufw app info "WWW Full"
Output
Profile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS) Ports: 80,443/tcp

Следно, дозволете дојдовен сообраќај HTTP и HTTPS за овој профил:

  1. sudo ufw allow in "WWW Full"

Можете да потврдите дека сè поминало според планираното со посета на јавната IP адреса на вашиот сервер во вашиот веб-прелистувач:

http://your_server_ip

Ова ќе ја врати стандардната веб-страница на Debian 11 Apache, која е таму за информативни и тестирачки цели:

Ако вашиот прелистувач ја врати оваа страница, тогаш вашиот веб-сервер сега е правилно инсталиран и достапен преку вашиот заштитен ѕид.

Како да ја пронајдете јавната IP адреса на вашиот сервер

Ако не знаете која е јавната IP адреса на вашиот сервер, постојат голем број начини на кои можете да ја најдете. Обично, ова е адресата што ја користите за да се поврзете со вашиот сервер преку SSH.

Постојат неколку различни начини да го направите ова од командната линија. Прво, можете да ги користите алатките iproute2 за да ја добиете вашата IP адреса со извршување на::

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Ова ќе врати две или три линии назад. Сите тие се точни адреси, но вашиот компјутер можеби ќе може да користи само една од нив, па слободно пробајте ја секоја од нив.

Алтернативен метод е да ја користите алатката curl за да контактирате со надворешна страна за да ви каже како го гледа вашиот сервер. Можете да ја извршите следнава команда и да прашате одреден сервер која е вашата IP адреса:

  1. curl http://icanhazip.com

Без разлика кој метод го претпочитате, напишете ја вашата IP адреса во веб-прелистувачот за да потврдите дека вашиот сервер ја извршува стандардната страница на Apache.

Чекор 2 - Инсталирање на MariaDB

Сега кога имате веб-сервер и работи, треба да го инсталирате системот на база на податоци за да можете да складирате и управувате со податоците за вашата страница.

Во Debian 11, метапакетот mysql-сервер, кој традиционално се користеше за инсталирање на серверот MySQL, беше заменет со default-mysql-server. Овој метапакет референцира MariaDB, вилушка на заедницата на оригиналниот MySQL сервер од Oracle, и моментално е стандарден сервер за бази на податоци компатибилен со MySQL, достапен на складишта за менаџер на пакети базирани на Debian.

За подолготрајна компатибилност, сепак, се препорачува наместо да го користите метапакетот, да инсталирате MariaDB користејќи го вистинскиот пакет на програмата, mariadb-сервер.

За да го инсталирате софтверот MariaDB, извршете:

  1. sudo apt install mariadb-server

Кога ќе заврши инсталацијата, се препорачува да извршите безбедносна скрипта што е претходно инсталирана со MariaDB. Оваа скрипта ќе отстрани некои несигурни стандардни поставки и ќе го заклучи пристапот до системот на вашата база на податоци. Започнете ја интерактивната скрипта со извршување:

  1. sudo mysql_secure_installation

Оваа скрипта ќе ве однесе низ низа инструкции каде што можете да направите некои промени во поставувањето на MariaDB. Првото известување ќе побара од вас да ја внесете тековната лозинка за корен на базата. Ова не треба да се меша со системскиот корен. Корисникот корен на базата на податоци е административен корисник со целосни привилегии над системот на базата на податоци. Бидејќи штотуку ја инсталиравте MariaDB и сè уште не сте направиле никакви промени во конфигурацијата, оваа лозинка ќе биде празна, па притиснете ENTER на барањето.

Следното барање ве прашува дали сакате да поставите лозинка за корен на базата на податоци. Бидејќи MariaDB користи специјален метод за автентикација за корисникот root кој е обично побезбеден од користењето лозинка, не треба да го поставувате ова сега. Притиснете N и потоа ENTER.

Оттаму, можете да притиснете Y и потоа ENTER за да ги прифатите стандардните за сите последователни прашања. Ова ќе ги отстрани анонимните корисници и тест базата, ќе го оневозможи далечинското root најавување и ќе ги вчита овие нови правила така што MariaDB веднаш да ги почитува промените што сте ги направиле.

Кога ќе завршите, најавете се на конзолата MariaDB:

  1. sudo mariadb

Ова ќе се поврзе со серверот MariaDB како корисник на административна база на податоци root, што се заклучува со употребата на sudo при извршување на оваа команда. Треба да добиете излез како што следува:

Output
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 41 Server version: 10.5.15-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 [(none)]>

Забележете дека не требаше да давате лозинка за да се поврзете како root корисник. Тоа е затоа што стандардниот метод за автентикација за административниот корисник на MariaDB е unix_socket наместо лозинка. Иако ова може да изгледа како безбедносна грижа на почетокот, тоа го прави серверот на базата на податоци побезбеден бидејќи единствените корисници на кои им е дозволено да се логираат како root корисник на MariaDB се корисниците на системот со sudo привилегии кои се поврзуваат од конзолата или преку апликација која работи со истите привилегии. Во практична смисла, тоа значи дека нема да можете да ја користите административната база на податоци root корисник за да се поврзете од вашата PHP апликација.

За зголемена безбедност, најдобро е да имате посветени кориснички сметки со помалку експанзивни привилегии поставени за секоја база на податоци, особено ако планирате да имате повеќе бази на податоци хостирани на вашиот сервер.

Можете да излезете од конзолата MariaDB со следново:

  1. exit

Вашиот MariaDB сервер сега е инсталиран и обезбеден. Следно, ќе инсталирате PHP, последната компонента во стекот LAMP.

Чекор 3 - Инсталирање PHP

Имате инсталирано Apache за да ја опслужува вашата содржина и MariaDB инсталирано за складирање и управување со вашите податоци. PHP е компонентата на вашето поставување што ќе обработува код за прикажување на динамична содржина на крајниот корисник. Може да работи скрипти, да се поврзе со вашите бази на податоци на MariaDB за да добие информации и да ја предаде обработената содржина на вашиот веб-сервер за да се прикаже.

Покрај пакетот php, ќе ви треба php-mysql, PHP модул кој овозможува PHP да комуницира со базата на податоци базирана на MySQL, како што е MariaDB. Ќе ви треба и libapache2-mod-php за да овозможите Apache да ракува со PHP-датотеки. Основните PHP пакети автоматски ќе се инсталираат како зависности.

За да ги инсталирате овие пакети, извршете ја следнава команда:

  1. sudo apt install php libapache2-mod-php php-mysql

Откако ќе заврши инсталацијата, можете да ја потврдите вашата PHP верзија со следнава команда:

  1. php -v
Output
PHP 7.4.30 (cli) (built: Jul 7 2022 15:51:43) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies

Во овој момент, вашиот стек LAMP е целосно оперативен, но пред да го тестирате поставувањето со PHP скрипта, најдобро е да поставите соодветен виртуелен хост на Apache за да ги чувате датотеките и папките на вашата веб-локација.

Чекор 4 - Создавање виртуелен домаќин за вашата веб-страница

Кога го користите веб-серверот Apache, можете да креирате виртуелни хостови (слично на блоковите на серверот во Nginx) за да инкапсулираат детали за конфигурацијата и да хостираат повеќе од еден домен од еден сервер. Во ова упатство, ќе поставиме домен наречен your_domain, но треба да го замените ова со сопствено име на домен.

Забелешка: Во случај да користите DigitalOcean како давател на хостинг DNS, проверете ја нашата документација за производот за детални упатства за тоа како да поставите ново име на домен и насочете го на вашиот сервер.

Стандардно, Apache ја сервира својата содржина од директориумот лоциран на /var/www/html, користејќи ја конфигурацијата содржана во /etc/apache2/sites-available/000-default.conf. Наместо да ја менувате стандардната конфигурациска датотека на веб-локацијата /var/www/html, ќе креирате нов виртуелен хост за тестирање на вашата PHP околина. Виртуелните хостови ви овозможуваат да одржувате повеќе веб-страници хостирани на еден Apache-сервер. Исто така, ќе креирате структура на директориум во /var/www за страницата your_domain, оставајќи го /var/www/html на место како стандардно директориум што треба да се сервира ако барањето на клиентот не се совпаѓа со ниту една друга локација.

Започнете со креирање на root веб-директориум за your_domain како што следува:

  1. sudo mkdir /var/www/your_domain

Следно, доделете ја сопственоста на директориумот со променливата на околината $USER, која ќе го референцира вашиот моментален корисник на системот:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Потоа, отворете нова конфигурациска датотека во директориумот sites-available на Apache користејќи го претпочитаниот уредник на командната линија. Овде, ќе користиме nano:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Ова ќе создаде нова празна датотека. Додадете ја следнава конфигурација со ваше име на домен:

<VirtualHost *:80>
    ServerName your_domain
    ServerAlias www.your_domain 
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Зачувајте ја и затворете ја датотеката кога ќе завршите. Ако користите nano, можете да го направите ова со притискање на CTRL + X, потоа Y и ENTER.

Со оваа конфигурација VirtualHost, му кажувате на Apache да го опслужува your_domain користејќи /var/www/your_domain како веб root директориум. Ако сакате да го тестирате Apache без име на домен, можете да ги отстраните или коментирате опциите ServerName и ServerAlias со додавање знак за фунта (#) до почетокот на линиите на секоја опција.

Сега, користете a2ensite за да го овозможите овој виртуелен домаќин:

  1. sudo a2ensite your_domain

Можеби ќе сакате да ја оневозможите стандардната веб-локација што доаѓа инсталирана со Apache. Ова е потребно ако не користите приспособено име на домен, бидејќи во овој случај стандардната конфигурација на Apache ќе го надмине вашиот виртуелен домаќин. За да ја оневозможите стандардната веб-страница на Apache, извршете:

  1. sudo a2dissite 000-default

За да бидете сигурни дека вашата конфигурациска датотека не содржи синтаксни грешки, извршете ја следнава команда:

  1. sudo apache2ctl configtest

Конечно, повторно вчитајте го Apache за да стапат на сила овие промени:

  1. sudo systemctl reload apache2

Следно, ќе креирате PHP скрипта за да тестирате дали PHP е правилно инсталиран и конфигуриран на вашиот сервер.

Чекор 5 - Тестирање на обработка на PHP на вашиот веб-сервер

Сега кога имате прилагодена локација за хостирање на датотеките и папките на вашата веб-локација, креирајте скрипта за тестирање PHP за да потврдите дека Apache е во состојба да се справи и да обработува барања за PHP-датотеки.

Започнете со креирање на нова датотека со име info.php во вашата сопствена веб коренска папка:

  1. nano /var/www/your_domain/info.php

Ова ќе отвори празна датотека. Додадете го следниов текст, кој е валиден PHP-код, во датотеката:

<?php
phpinfo();

Кога ќе завршите, зачувајте ја и затворете ја датотеката.

За да ја тестирате скриптата, одете до вашиот веб-прелистувач и пристапете до името на доменот или IP адресата на вашиот сервер, проследено со името на скриптата, што во овој случај е info.php:

http://your_domain/info.php

Еве пример за стандардната веб-страница на PHP:

Оваа страница дава информации за вашиот сервер од перспектива на PHP. Корисно е за дебагирање и обезбедување дека вашите поставки се применуваат правилно.

Ако можете да ја видите оваа страница во вашиот прелистувач, тогаш инсталацијата на PHP работи како што се очекуваше.

Откако ќе ги проверите релевантните информации за вашиот PHP сервер преку таа страница, најдобро е да ја отстраните датотеката што сте ја создале бидејќи содржи чувствителни информации за вашата PHP околина и вашиот Debian сервер. Користете rm за да го направите тоа:

  1. sudo rm /var/www/your_domain/info.php

Секогаш можете да ја рекреирате оваа страница ако треба повторно да пристапите до информациите подоцна.

Чекор 6 - Тестирање на врската со базата на податоци од PHP (опционално)

Ако сакате да тестирате дали PHP може да се поврзе со MariaDB и да изврши барања за базата на податоци, можете да креирате тест табела со тест податоци и барање за нејзината содржина од PHP скрипта. Пред да го направите тоа, треба да креирате тест база на податоци и нов корисник на MariaDB правилно конфигуриран за пристап до неа.

Направете база на податоци со име example_database и корисник со име example_user. Можете да ги замените овие имиња со различни вредности.

Прво, поврзете се со конзолата MariaDB користејќи ја сметката root:

  1. sudo mariadb

За да креирате нова база на податоци, извршете ја следнава команда од вашата конзола MariaDB:

  1. CREATE DATABASE example_database;

Сега креирајте нов корисник и дајте му целосни привилегии за приспособената база на податоци што сте ја создале.

Следнава команда создава нов корисник со име example_user кој се автентицира со лозинка. Ја дефинираме лозинката на овој корисник како лозинка, но треба да ја замените оваа вредност со безбедна лозинка по ваш избор:

  1. CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';

Следно, дајте му дозвола на овој корисник за базата на податоци example_database:

  1. GRANT ALL ON example_database.* TO 'example_user'@'%';

Ова ќе му даде на корисникот example_user целосни привилегии над базата на податоци example_database, истовремено спречувајќи го овој корисник да создава или менува други бази на податоци на вашиот сервер.

Следно, исчистете ги привилегиите за да се осигурате дека тие се зачувани и достапни во тековната сесија:

  1. FLUSH PRIVILEGES;

По ова, излезете од школка MariaDB:

  1. exit

Можете да тестирате дали новиот корисник ги има соодветните дозволи со повторно најавување на конзолата MariaDB, овој пат користејќи ги приспособените кориснички акредитиви:

  1. mariadb -u example_user -p

Забележете го знамето -p во оваа команда, кое ќе ве праша за лозинката што се користи при креирањето на корисникот example_user. Откако ќе се најавите на конзолата на MariaDB, потврдете дека имате пристап до базата на податоци example_database:

  1. SHOW DATABASES;

Ова ќе ви го даде следниот излез:

Output
+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

Следно, креирајте тест табела со име todo_list. Од конзолата MariaDB, извршете ја следнава изјава:

  1. CREATE TABLE example_database.todo_list (
  2. item_id INT AUTO_INCREMENT,
  3. content VARCHAR(255),
  4. PRIMARY KEY(item_id)
  5. );

Вметнете неколку редови на содржина во табелата за тестирање. Повторете ја следната команда неколку пати, користејќи различни вредности, за да ја наполните вашата тест табела:

  1. INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

За да потврдите дека податоците се успешно зачувани на вашата табела, извршете:

  1. SELECT * FROM example_database.todo_list;

Ќе го добиете следниот излез:

Output
+---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

Откако ќе потврдите дека имате валидни податоци во вашата тест табела, можете да излезете од конзолата MariaDB:

  1. exit

Сега можете да ја креирате скриптата PHP што ќе се поврзе со MariaDB и ќе ја бара вашата содржина. Создадете нова PHP-датотека во вашиот сопствен веб root директориум користејќи го претпочитаниот уредувач:

  1. nano /var/www/your_domain/todo_list.php

Следната PHP скрипта се поврзува со базата на податоци на MariaDB и ја бара содржината на табелата todo_list, прикажувајќи ги резултатите во листа. Ако има проблем со врската со базата на податоци, тоа ќе направи исклучок.

Додајте ја оваа содржина во вашата скрипта todo_list.php, не заборавајте да ги замените example_user и лозинките вредности со свои:

<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Зачувајте ја и затворете ја датотеката кога ќе завршите со уредувањето.

Сега можете да пристапите на оваа страница во вашиот веб-прелистувач со посета на името на доменот или јавната IP адреса за вашата веб-локација, проследено со /todo_list.php:

http://your_domain/todo_list.php

Оваа веб-страница ќе му ја открие содржината што сте ја внеле во вашата тест табела на вашиот посетител:

Тоа значи дека вашата PHP околина е подготвена да се поврзе и да комуницира со вашиот MariaDB сервер.

Заклучок

Во овој водич, изградивте флексибилна основа за опслужување на веб-локациите и апликациите на PHP на вашите посетители, користејќи го Apache како веб-сервер и MariaDB како систем на база на податоци.

Како непосреден следен чекор, треба да се осигурате дека врските со вашиот веб-сервер се обезбедени, со нивно опслужување преку HTTPS. За да го постигнете тоа, можете да го користите How to Install and Use Composer за управување со зависности и пакети во PHP.