Како да инсталирате Linux, Apache, MariaDB, PHP (LAMP) стек на Debian 10
Вовед
Стак LAMP е група софтвер со отворен код вообичаено инсталиран заедно за да се овозможи серверот да хостира динамични веб-локации и веб-апликации. Овој термин е акроним што го претставува Linux оперативниот систем, со веб-серверот Apache. Податоците на страницата се зачувани во MariaDB база на податоци, а динамичната содржина ја обработува PHP.
Иако овој софтверски стек обично вклучува MySQL како систем за управување со базата на податоци, некои дистрибуции на Linux - вклучувајќи го и Debian - користат MariaDB како замена за MySQL.
Во ова упатство, ќе инсталирате стек LAMP на серверот Debian 10, користејќи MariaDB како систем за управување со базата на податоци.
Предуслови
За да го следите ова упатство, ќе треба да имате сервер Debian 10 со корисничка сметка безroot sudo
и основен заштитен ѕид. Ова може да се конфигурира со користење на нашиот првичен водич за поставување сервер за Debian 10.
Чекор 1 - Инсталирање на Apache и ажурирање на заштитниот ѕид
Веб-серверот Apache е меѓу најпопуларните веб-сервери во светот. Добро е документиран и е во широка употреба во поголемиот дел од историјата на веб, што го прави одличен стандарден избор за хостирање веб-страница.
Започнете со ажурирање на кешот на менаџерот на пакети. Ако ова е првпат да користите sudo
во оваа сесија, ќе биде побарано да ја наведете лозинката на вашиот корисник за да потврдите дека ги имате вистинските привилегии за управување со системските пакети со apt
:
- sudo apt update
Потоа инсталирајте го Apache со следново:
- sudo apt install apache2
Оваа команда ве поттикнува да ја потврдите инсталацијата на Apache. Потврдете со притискање на Y
, потоа ENTER
. Откако ќе заврши инсталацијата, треба да ги приспособите поставките за заштитен ѕид. Претпоставувајќи дека сте ги следеле првичните упатства за поставување на серверот за да го инсталирате и овозможите заштитниот ѕид UFW, проверете дали вашиот заштитен ѕид дозволува сообраќај HTTP и HTTPS.
На Debian 10, UFW доаѓа со профили на апликации кои можете да ги користите за да ги приспособите поставките за заштитниот ѕид. Погледнете ја целосната листа на профили на апликации со извршување:
- sudo ufw app list
Профилите WWW
се користат за управување со портите што ги користат веб-серверите:
OutputAvailable applications:
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
Ако го прегледате профилот WWW Full
, тој покажува дека овозможува сообраќај до портите 80
и 443
:
- sudo ufw app info "WWW Full"
OutputProfile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)
Ports:
80,443/tcp
Дозволете дојдовен сообраќај HTTP и HTTPS за овој профил:
- sudo ufw allow in "WWW Full"
Можете да потврдите дека сè поминало според планираното со посета на јавната IP адреса на вашиот сервер во вашиот веб-прелистувач:
http://your_server_ip
Ова ќе ја врати стандардната веб-страница на Debian 10 Apache, која е таму за информативни и тестирачки цели:
Ако вашиот прелистувач ја врати оваа страница, тогаш вашиот веб-сервер сега е правилно инсталиран и достапен преку вашиот заштитен ѕид.
Како да ја пронајдете јавната IP адреса на вашиот сервер
Ако не знаете која е јавната IP адреса на вашиот сервер, постојат неколку начини на кои можете да ја најдете. Обично, ова е адресата што ја користите за да се поврзете со вашиот сервер преку SSH.
Постојат неколку различни начини да го направите ова од командната линија. Прво, можете да ги користите алатките iproute2
за да ја добиете вашата IP адреса со извршување:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Ова ќе врати две или три линии назад. Сите тие се точни адреси, но вашиот компјутер можеби ќе може да користи само една, па слободно пробајте ја секоја од нив.
Алтернативен метод е да ја користите алатката curl
за да контактирате со надворешна страна за да ви каже како го гледа вашиот сервер. Можете да ја извршите следнава команда и да прашате одреден сервер која е вашата IP адреса:
Бидејќи Debian 10 нема curl
да биде стандардно, прво ќе треба да го инсталирате:
- sudo apt install curl
Потоа извршете ја следнава команда и прашајте одреден сервер која е вашата IP адреса:
- curl http://icanhazip.com
Без оглед на методот, напишете ја вашата IP адреса во вашиот веб-прелистувач за да потврдите дека вашиот сервер ја извршува стандардната страница на Apache.
Чекор 2 - Инсталирање на MariaDB
Сега кога имате веб-сервер и работи, треба да го инсталирате системот на база на податоци за да можете да складирате и управувате со податоците за вашата страница.
Во Debian 10, метапакетот mysql-сервер
, кој традиционално се користеше за инсталирање на серверот MySQL, беше заменет со default-mysql-server
. Овој метапакет референцира MariaDB, вилушка на заедницата на оригиналниот MySQL сервер од Oracle, и моментално е стандарден сервер за бази на податоци компатибилен со MySQL, достапен на складишта за менаџер на пакети базирани на Debian.
За подолготрајна компатибилност, сепак, се препорачува наместо да го користите метапакетот, да го инсталирате MariaDB користејќи го вистинскиот пакет на програмата, mariadb-сервер
.
За да го инсталирате софтверот MariaDB, извршете:
- sudo apt install mariadb-server
Кога ќе заврши инсталацијата, се препорачува да извршите безбедносна скрипта што е претходно инсталирана со MariaDB. Оваа скрипта ќе отстрани некои несигурни стандардни поставки и ќе го заклучи пристапот до системот на вашата база на податоци. Започнете ја интерактивната скрипта со извршување:
- sudo mysql_secure_installation
Оваа скрипта ќе ве однесе низ низа инструкции каде што можете да направите некои промени во поставувањето на MariaDB. Првото известување ќе побара од вас да ја внесете тековната лозинка за корен на базата. Ова не треба да се меша со системскиот корен. Корисникот корен на базата на податоци е административен корисник со целосни привилегии над системот на базата на податоци. Бидејќи неодамна сте ја инсталирале MariaDB и сè уште не сте направиле никакви промени во конфигурацијата, оваа лозинка ќе биде празна, па притиснете ENTER
на барањето.
Следното барање ве прашува дали сакате да поставите лозинка за корен на базата на податоци. Бидејќи MariaDB користи специјален метод за автентикација за корисникот root кој е обично побезбеден од користењето лозинка, не треба да го поставувате ова сега. Притиснете N
и потоа ENTER
.
Оттаму, можете да притиснете Y
и потоа ENTER
за да ги прифатите стандардните за сите последователни прашања. Ова ќе ги отстрани анонимните корисници и тест базата, ќе го оневозможи далечинското root најавување и ќе ги вчита овие нови правила така што MariaDB веднаш да ги почитува промените што сте ги направиле.
Кога ќе завршите, најавете се на конзолата MariaDB:
- sudo mariadb
Ова ќе се поврзе со серверот MariaDB како корисник на административна база на податоци root, што се заклучува со употребата на sudo
при извршување на оваа команда. Треба да го добиете следниот излез:
OutputWelcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.3.36-MariaDB-0+deb10u2 Debian 10
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 со следново:
- exit
Вашиот MariaDB сервер сега е инсталиран и обезбеден. Следно, ќе инсталирате PHP, последната компонента во стекот LAMP.
Чекор 3 - Инсталирање PHP
Имате инсталирано Apache за да ја опслужува вашата содржина и MariaDB инсталирано за складирање и управување со вашите податоци. PHP е компонентата на вашето поставување што ќе обработува код за прикажување на динамична содржина на крајниот корисник. Може да работи скрипти, да се поврзе со вашите бази на податоци на MariaDB за да добие информации и да ја предаде обработената содржина на вашиот веб-сервер за да се прикаже.
Покрај пакетот php
, ќе ви треба php-mysql
, PHP модул кој овозможува PHP да комуницира со базата на податоци базирана на MySQL, како што е MariaDEB. Ќе ви треба и libapache2-mod-php
за да овозможите Apache да ракува со PHP-датотеки. Основните PHP пакети автоматски ќе се инсталираат како зависности.
За да ги инсталирате овие пакети, извршете ја следнава команда:
- sudo apt install php libapache2-mod-php php-mysql
Откако ќе заврши инсталацијата, можете да ја потврдите вашата PHP верзија со следнава команда:
- php -v
OutputPHP 7.3.31-1~deb10u2 (cli) (built: Dec 15 2022 09:39:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.31, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.31-1~deb10u2, Copyright (c) 1999-2018, by Zend Technologies
Во повеќето случаи, ќе сакате да го измените начинот на кој Apache ги опслужува датотеките. Во моментов, ако корисникот побара директориум од серверот, Apache прво ќе бара датотека наречена index.html
. За да му наложите на веб-серверот да претпочита PHP-датотеки пред другите, можете да го поставите Apache-то прво да бара датотека index.php
.
За да го направите ова, извршете ја следнава команда за да ја отворите датотеката dir.conf
во претпочитаниот уредувач на текст со root привилегии. Во овој пример, ние користиме nano
:
- sudo nano /etc/apache2/mods-enabled/dir.conf
Содржината ќе биде следна:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Поместете ја датотеката со индекс на PHP на првата позиција по спецификацијата DirectoryIndex
, како што е следново:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Кога ќе завршите, зачувајте ја и затворете ја датотеката. Ако користите nano
, можете да го сторите тоа со притискање на CTRL+X
, потоа Y
и ENTER
за да потврди.
Сега повторно вчитајте ја конфигурацијата на Apache:
- sudo systemctl reload apache2
Можете да го проверите статусот на услугата apache2
со status systemctl
:
- sudo systemctl status apache2
Sample Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Active: active (running) since Fri 2023-01-20 22:21:24 UTC; 2min 12s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 13076 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCC
Process: 13097 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/
Main PID: 13080 (apache2)
Tasks: 6 (limit: 4915)
Memory: 13.7M
CGroup: /system.slice/apache2.service
├─13080 /usr/sbin/apache2 -k start
├─13101 /usr/sbin/apache2 -k start
├─13102 /usr/sbin/apache2 -k start
├─13103 /usr/sbin/apache2 -k start
├─13104 /usr/sbin/apache2 -k start
└─13105 /usr/sbin/apache2 -k start
Во овој момент, вашиот стек LAMP е целосно оперативен, но пред да можете да го тестирате поставувањето со PHP скрипта, најдобро е да поставите соодветен виртуелен хост на Apache за да ги чува датотеките и папките на вашата веб-страница. Ќе го поставите ова во следниот чекор.
Чекор 4 - Создавање виртуелен домаќин за вашата веб-страница
Кога го користите веб-серверот Apache, можете да креирате виртуелни хостови (слично на блоковите на серверот во Nginx) за да инкапсулираат детали за конфигурацијата и да хостираат повеќе од еден домен од еден сервер. Во овој дел, ќе поставите домен наречен your_domain, но треба да го замените со свое име на домен.
Забелешка: во случај да користите DigitalOcean како давател на DNS, проверете ја нашата документација за производот за детални упатства за тоа како да поставите ново име на домен и посочете го на вашиот сервер
Стандардно, Apache ја сервира својата содржина од директориумот лоциран на /var/www/html
, користејќи ја конфигурацијата содржана во /etc/apache2/sites-available/000-default.conf
. Наместо да ја менувате стандардната конфигурациска датотека на веб-локацијата, ќе креирате нов виртуелен хост за тестирање на вашата PHP околина. Виртуелните хостови ви овозможуваат да одржувате повеќе веб-страници хостирани на еден Apache-сервер. Исто така, ќе креирате структура на директориум во /var/www
за страницата your_domain, оставајќи го /var/www/html
на место како стандардно директориум што треба да се сервира ако барањето на клиентот не се совпаѓа со ниту една друга локација.
Започнете со креирање на root веб-директориум за your_domain како што следува:
- sudo mkdir /var/www/your_domain
Следно, доделете ја сопственоста на директориумот со променливата на околината $USER
, која ќе го референцира вашиот моментален корисник на системот:
- sudo chown -R $USER:$USER /var/www/your_domain
Потоа, отворете нова конфигурациска датотека во директориумот sites-available
на Apache користејќи го претпочитаниот уредувач на текст. nano
се користи во следниот пример:
- 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>
Со оваа конфигурација VirtualHost
, му кажувате на Apache да го опслужува your_domain
користејќи /var/www/your_domain
како веб root директориум. Ако сакате да го тестирате Apache без име на домен, можете да ги отстраните или коментирате опциите ServerName
и ServerAlias
со додавање знак за фунта (#
) знак во почетокот на линиите на секоја опција.
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Сега користете a2ensite
за да го овозможите овој виртуелен домаќин:
- sudo a2ensite your_domain
Можеби ќе сакате да ја оневозможите стандардната веб-страница што е инсталирана со Apache. Ова е потребно ако не користите приспособено име на домен, бидејќи во овој случај стандардната конфигурација на Apache ќе го презапише вашиот виртуелен домаќин. За да ја оневозможите стандардната веб-страница на Apache, извршете:
- sudo a2dissite 000-default
За да бидете сигурни дека вашата конфигурациска датотека не содржи синтаксни грешки, можете да извршите:
- sudo apache2ctl configtest
Конечно, повторно вчитајте го Apache за да стапат на сила овие промени:
- sudo systemctl reload apache2
Следно, ќе креирате PHP скрипта за да тестирате дали PHP е правилно инсталиран и конфигуриран на вашиот сервер.
Чекор 5 - Тестирање на обработка на PHP на вашиот веб-сервер
Сега кога имате прилагодена локација за хостирање на датотеките и папките на вашата веб-локација, креирајте скрипта за тестирање PHP за да потврдите дека Apache е способен да се справи и да обработува барања за PHP-датотеки.
Започнете со создавање нова датотека со име info.php
во вашата приспособена веб коренска папка:
- 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
за да го направите тоа:
- sudo rm /var/www/your_domain/info.php
Секогаш можете да ја рекреирате оваа страница ако треба повторно да пристапите до информациите подоцна.
Чекор 6 - Тестирање на врската со базата на податоци од PHP (опционално)
Ако сакате да тестирате дали PHP може да се поврзе со MariaDB и да изврши барања за базата на податоци, можете да креирате тест табела со тест податоци и барање за нејзината содржина од PHP скрипта. Пред да го направите тоа, треба да креирате база на податоци и нов корисник на MariaDB правилно конфигуриран за пристап до неа.
Прво, поврзете се со конзолата MariaDB користејќи ја сметката root:
- sudo mariadb
За да креирате нова база на податоци, извршете ја следнава команда од вашата конзола MariaDB:
- CREATE DATABASE example_database;
Сега креирајте нов корисник и дајте му целосни привилегии за приспособената база на податоци што сте ја создале.
Следнава команда создава нов корисник со име example_user
кој се автентицира со лозинка. Ја дефинираме лозинката на овој корисник како лозинка
, но треба да ја замените оваа вредност со безбедна лозинка по ваш избор:
- CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';
Потоа, дајте му дозвола на овој корисник преку базата на податоци example_database
:
- GRANT ALL ON example_database.* TO 'example_user'@'%';
Ова ќе му даде на корисникот example_user целосни привилегии над базата на податоци example_database, истовремено спречувајќи го овој корисник да создава или менува други бази на податоци на вашиот сервер.
Следно, исчистете ги привилегиите за да се осигурате дека тие се зачувани и достапни во тековната сесија:
- FLUSH PRIVILEGES;
По ова, излезете од школка MariaDB:
- exit
Можете да тестирате дали новиот корисник ги има соодветните дозволи со повторно најавување на конзолата MariaDB, овој пат користејќи ги приспособените кориснички акредитиви:
- mariadb -u example_user -p
Забележете го знамето -p
во оваа команда, кое ќе ве праша за лозинката што се користи при креирањето на example_user. Откако ќе се најавите на конзолата на MariaDB, потврдете дека имате пристап до example_database:
- SHOW DATABASES;
Ова ќе ви го даде следниот излез:
Output+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
Следно, креирајте тест табела со име todo_list. Од конзолата MariaDB, извршете ја следнава изјава:
- CREATE TABLE example_database.todo_list (
- item_id INT AUTO_INCREMENT,
- content VARCHAR(255),
- PRIMARY KEY(item_id)
- );
Вметнете неколку редови со содржина во табелата за тестирање. Повторете ја следната команда неколку пати, користејќи различни вредности за да ја наполните тест табелата:
- INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
За да потврдите дека податоците се успешно зачувани на вашата табела, извршете:
- 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:
- exit
Сега можете да ја креирате скриптата PHP што ќе се поврзе со MariaDB и ќе ја бара вашата содржина. Создадете нова PHP-датотека во вашиот сопствен веб root директориум користејќи го претпочитаниот уредувач. nano
се користи во овој пример:
- 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.