Како да инсталирате стек Linux, Apache, MySQL, PHP (LAMP) на Ubuntu 18.04


Вовед

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

Во ова упатство, ќе инсталираме стек LAMP на серверот Ubuntu 18.04.

Предуслови

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

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

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

Прво, проверете дали вашиот apt кеш е ажуриран со:

  1. sudo apt update

Ако ова е вашиот прв пат да користите sudo во оваа сесија, ќе ви биде побарано да ја наведете лозинката на вашиот редовен корисник за да ги потврдите вашите дозволи.

Откако кешот е ажуриран, можете да инсталирате Apache со:

  1. sudo apt install apache2

Откако ќе ја внесете оваа команда, apt ќе ви каже кои пакети планира да ги инсталира и колку дополнителен простор на дискот ќе заземат. Притиснете Y и притиснете ENTER за да потврдите, и инсталацијата ќе продолжи.

Прилагодете го заштитниот ѕид за да дозволите веб сообраќај

Следно, под претпоставка дека сте ги следеле првичните упатства за поставување на серверот и сте го овозможиле заштитниот ѕид на UFW, проверете дали вашиот заштитен ѕид дозволува сообраќај HTTP и HTTPS. Можете да проверите дали UFW има профил на апликација за Apache како вака:

  1. sudo ufw app list
Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Ако ги погледнете деталите за профилот Apache Full, ќе видите дека овозможува сообраќај до портите 80 и 443:

  1. sudo ufw app info "Apache Full"
Output
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

За да дозволите дојдовен сообраќај HTTP и HTTPS за овој сервер, извршете:

  1. sudo ufw allow "Apache Full"

Можете веднаш да извршите проверка на самото место за да потврдите дека сè тргнало според планираното со посета на јавната IP адреса на вашиот сервер во вашиот веб-прелистувач (видете ја белешката под следниот наслов за да дознаете која е вашата јавна IP адреса ако ги немате овие информации веќе):

http://your_server_ip

Ќе ја видите стандардната веб-страница на Ubuntu 18.04 Apache, која е таму за информативни и тестирачки цели. Треба да изгледа вака:

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

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

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

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

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

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

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

  1. sudo apt install curl
  2. curl http://icanhazip.com

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

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

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

Повторно, користете apt за да го купите и инсталирате овој софтвер:

  1. sudo apt install mysql-server

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

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

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

  1. sudo mysql_secure_installation

Ова ќе ве праша дали сакате да го конфигурирате VALIDATE PASSWORD PLUGIN.

Забелешка: Овозможувањето на оваа функција е нешто како проценка. Ако е овозможено, лозинките што не се совпаѓаат со наведените критериуми ќе бидат отфрлени од MySQL со грешка. Ова ќе предизвика проблеми ако користите слаба лозинка во врска со софтвер кој автоматски ги конфигурира корисничките акредитиви на MySQL, како што се Ubuntu пакетите за phpMyAdmin. Безбедно е да се остави валидацијата оневозможена, но секогаш треба да користите силни, уникатни лозинки за ингеренциите на базата на податоци.

Одговорете на Y за да, или што било друго за да продолжите без да овозможите.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Ако одговорите „да“, од вас ќе биде побарано да изберете ниво на валидација на лозинката. Имајте на ум дека ако внесете 2 за најсилното ниво, ќе добиете грешки кога ќе се обидете да поставите кое било лозинка која не содржи бројки, големи и мали букви и специјални знаци или која се заснова на вообичаени речник зборови.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Без оглед на тоа дали сте избрале да го поставите VALIDATE PASSWORD PLUGIN, вашиот сервер ќе побара од вас да изберете и потврдите лозинка за MySQL root корисникот. Ова не треба да се меша со системскиот корен. Корисникот корен на базата на податоци е административен корисник со целосни привилегии над системот на базата на податоци. Иако стандардниот метод за автентикација за root корисникот на MySQL не користи лозинка, дури и кога е поставена, овде треба да дефинирате силна лозинка како дополнителна безбедносна мерка. Ќе зборуваме за ова за момент.

Ако сте овозможиле валидација на лозинката, ќе ви биде прикажана јачината на лозинката за root лозинката што штотуку ја внесовте и вашиот сервер ќе ве праша дали сакате да ја промените таа лозинка. Ако сте задоволни со вашата моментална лозинка, внесете N за „не“ на промптот:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

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

Кога ќе завршите, тестирајте дали можете да се најавите на конзолата MySQL со внесување:

  1. sudo mysql

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

Output
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

За да излезете од конзолата MySQL, напишете:

  1. exit

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

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

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

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

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

Уште еднаш, искористете го системот apt за да инсталирате PHP. Покрај пакетот php, ќе ви требаат и libapache2-mod-php за да го интегрирате PHP во Apache и пакетот php-mysql за да дозволите PHP да се поврзе со базите на податоци на MySQL. Извршете ја следнава команда за да ги инсталирате сите три пакети и нивните зависности:

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

Ова треба да инсталира PHP без никакви проблеми. Ќе го тестираме ова за момент.

Промена на индексот на директориумот на Apache (изборно)

Во некои случаи, ќе сакате да го измените начинот на кој Apache ги опслужува датотеките кога се бара директориум. Во моментов, ако корисникот побара директориум од серверот, Apache прво ќе бара датотека наречена index.html. Сакаме да му кажеме на веб-серверот да претпочита PHP-датотеки пред другите, за да го натера Apache-то прво да бара датотека index.php. Ако не го направите тоа, датотеката index.html сместена во коренот на документот на апликацијата секогаш ќе има предност пред датотеката index.php.

За да ја направите оваа промена, отворете ја конфигурациската датотека dir.conf во текстуален уредувач по ваш избор. Овде, ќе користиме nano:

  1. 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>

Кога ќе завршите, зачувајте ја и затворете ја датотеката со притискање на CTRL+X. Потврдете го зачувувањето со внесување Y и потоа притиснете ENTER за да ја потврдите локацијата за зачувување на датотеката.

После ова, рестартирајте го веб-серверот Apache за да се препознаат вашите промени. Можете да го направите тоа со следнава команда:

  1. sudo systemctl restart apache2

Можете исто така да го проверите статусот на услугата apache2 користејќи systemctl:

  1. sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago Main PID: 3719 (apache2) Tasks: 55 (limit: 2361) CGroup: /system.slice/apache2.service ├─3719 /usr/sbin/apache2 -k start ├─3721 /usr/sbin/apache2 -k start └─3722 /usr/sbin/apache2 -k start Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server... Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.

Притиснете Q за да излезете од овој статусен излез.

Инсталирање на PHP екстензии (опционално)

За да ја проширите функционалноста на PHP, имате можност да инсталирате некои дополнителни модули. За да ги видите достапните опции за PHP модули и библиотеки, внесете ги резултатите од apt search во less, пејџер кој ви овозможува да се движите низ излезот на другите команди:

  1. apt search php- | less

Користете ги копчињата со стрелки за скролување нагоре и надолу и притиснете Q за да излезете.

Резултатите се сите опционални компоненти што можете да ги инсталирате. Ќе ви даде краток опис за секое:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

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

  1. apt show package_name

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

На пример, за да дознаете што прави модулот php-cli, можете да го напишете ова:

  1. apt show php-cli

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

Output
… Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Ubuntu's default PHP version (currently 7.2). …

Ако, по истражувањето, одлучите дека сакате да инсталирате пакет, можете да го направите тоа со користење на командата apt install како што правевте за другиот софтвер.

Ако одлучивте дека php-cli е нешто што ви треба, можете да напишете:

  1. sudo apt install php-cli

Ако сакате да инсталирате повеќе од еден модул, можете да го направите тоа со наведување на секој, разделен со празно место, следејќи ја командата apt install, вака:

  1. sudo apt install package1 package2 ...

Во овој момент, вашиот стек LAMP е инсталиран и конфигуриран. Пред да направите нешто друго, ви препорачуваме да поставите виртуелен хост на Apache каде што можете да ги зачувате деталите за конфигурацијата на вашиот сервер.

Чекор 4 - Поставување виртуелен домаќин (препорачано)

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

Apache на Ubuntu 18.04 има стандардно овозможен еден блок сервер кој е конфигуриран да опслужува документи од директориумот /var/www/html. Иако ова функционира добро за една локација, може да стане неумешливо ако хостирате повеќе страници. Наместо да менуваме /var/www/html, ајде да создадеме структура на директориум во /var/www за страницата your_domain, оставајќи го / var/www/html е поставен како стандарден директориум што треба да се опслужува доколку барањето на клиентот не се совпаѓа со ниту една друга локација.

Креирајте го директориумот за вашиот_домен на следниов начин:

  1. sudo mkdir /var/www/your_domain

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

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

Дозволите на вашиот веб-корен директориум треба да бидат точни ако не сте ја измениле неговата вредност за умаск, но можете да се уверите со внесување:

  1. sudo chmod -R 755 /var/www/your_domain

Следно, креирајте примерок index.html страница користејќи nano или вашиот омилен уредувач:

  1. nano /var/www/your_domain/index.html

Внатре, додадете го следниов примерок HTML:

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

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

За да може Apache да ја опслужува оваа содржина, неопходно е да се создаде виртуелна датотека домаќин со точни директиви. Наместо директно да ја менуваме стандардната конфигурациска датотека лоцирана на /etc/apache2/sites-available/000-default.conf, ајде да направиме нова на /etc/apache2/sites-available/ your_domain.conf:

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

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

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

Забележете дека го ажуриравме DocumentRoot во нашиот нов директориум и ServerAdmin на е-пошта до која може да пристапи администраторот на страницата your_domain. Исто така, додадовме две директиви: ServerName, кој го воспоставува основниот домен што треба да одговара за оваа дефиниција на виртуелен домаќин и ServerAlias, кој дефинира понатамошни имиња што треба да се совпаѓаат како да тие беа основното име.

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

Ајде да ја овозможиме датотеката со алатката a2ensite:

  1. sudo a2ensite your_domain.conf

Оневозможете ја стандардната локација дефинирана во 000-default.conf:

  1. sudo a2dissite 000-default.conf

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

  1. sudo apache2ctl configtest

Треба да го видите следниов излез:

Output
Syntax OK

Рестартирајте го Apache за да ги имплементирате вашите промени:

  1. sudo systemctl restart apache2

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

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

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

За да проверите дали вашиот систем е правилно конфигуриран за PHP, креирајте PHP скрипта наречена info.php. За да може Apache да ја пронајде оваа датотека и правилно да ја сервира, таа мора да биде зачувана во вашиот веб root директориум.

Направете ја датотеката на веб-корот што го создадовте во претходниот чекор со извршување:

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

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

<?php
phpinfo();

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

Сега можете да тестирате дали вашиот веб-сервер може правилно да прикажува содржина генерирана од оваа PHP скрипта. За да го пробате ова, посетете ја оваа страница во вашиот веб-прелистувач. Повторно ќе ви треба јавната IP адреса или името на доменот на вашиот сервер.

Адресата што сакате да ја посетите е:

http://your_domain/info.php

Страницата на која доаѓате треба да изгледа вака:

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

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

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

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

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

Заклучок

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

Како непосреден следен чекор, треба да се осигурате дека врските со вашиот веб-сервер се обезбедени, со нивно опслужување преку HTTPS. Следете го нашиот водич за тоа како да го обезбедите Apache со Let’s Encrypt за да ја обезбедите вашата страница со бесплатен TLS/SSL сертификат.

Некои други популарни опции се:

  • Инсталирајте го Wordpress најпопуларниот систем за управување со содржина на интернет.
  • Поставете PHPMyAdmin за да ви помогне да управувате со вашите MySQL бази на податоци од веб-прелистувач.
  • Научете како да користите SFTP за префрлање датотеки до и од вашиот сервер.