Како да инсталирате стек 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
кеш е ажуриран со:
- sudo apt update
Ако ова е вашиот прв пат да користите sudo
во оваа сесија, ќе ви биде побарано да ја наведете лозинката на вашиот редовен корисник за да ги потврдите вашите дозволи.
Откако кешот е ажуриран, можете да инсталирате Apache со:
- sudo apt install apache2
Откако ќе ја внесете оваа команда, apt
ќе ви каже кои пакети планира да ги инсталира и колку дополнителен простор на дискот ќе заземат. Притиснете Y
и притиснете ENTER
за да потврдите, и инсталацијата ќе продолжи.
Прилагодете го заштитниот ѕид за да дозволите веб сообраќај
Следно, под претпоставка дека сте ги следеле првичните упатства за поставување на серверот и сте го овозможиле заштитниот ѕид на UFW, проверете дали вашиот заштитен ѕид дозволува сообраќај HTTP и HTTPS. Можете да проверите дали UFW има профил на апликација за Apache како вака:
- sudo ufw app list
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Ако ги погледнете деталите за профилот Apache Full
, ќе видите дека овозможува сообраќај до портите 80
и 443
:
- sudo ufw app info "Apache Full"
OutputProfile: 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 за овој сервер, извршете:
- sudo ufw allow "Apache Full"
Можете веднаш да извршите проверка на самото место за да потврдите дека сè тргнало според планираното со посета на јавната IP адреса на вашиот сервер во вашиот веб-прелистувач (видете ја белешката под следниот наслов за да дознаете која е вашата јавна IP адреса ако ги немате овие информации веќе):
http://your_server_ip
Ќе ја видите стандардната веб-страница на Ubuntu 18.04 Apache, која е таму за информативни и тестирачки цели. Треба да изгледа вака:
Ако ја видите оваа страница, тогаш вашиот веб-сервер сега е правилно инсталиран и достапен преку вашиот заштитен ѕид.
Како да ја пронајдете јавната IP адреса на вашиот сервер
Ако не знаете која е јавната IP адреса на вашиот сервер, постојат голем број начини на кои можете да ја најдете. Обично, ова е адресата што ја користите за да се поврзете со вашиот сервер преку SSH.
Постојат неколку различни начини да го направите ова од командната линија. Прво, можете да ги користите алатките iproute2
за да ја добиете вашата IP адреса со внесување на ова:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Ова ќе ви врати две или три линии. Сите тие се точни адреси, но вашиот компјутер можеби ќе може да користи само една од нив, па слободно пробајте ја секоја од нив.
Алтернативен метод е да ја користите алатката curl
за да контактирате со надворешна страна за да ви каже како тоа го гледа вашиот сервер. Ова се прави со барање на одреден сервер која е вашата IP адреса:
- sudo apt install curl
- curl http://icanhazip.com
Без оглед на методот што го користите за да ја добиете вашата IP адреса, напишете ја во лентата за адреси на вашиот веб-прелистувач за да ја видите стандардната страница на Apache.
Чекор 2 - Инсталирање MySQL
Сега кога го имате отворено и работи вашиот веб-сервер, време е да инсталирате MySQL. MySQL е систем за управување со бази на податоци. Во основа, тој ќе организира и ќе обезбеди пристап до бази на податоци каде што вашата страница може да складира информации.
Повторно, користете apt
за да го купите и инсталирате овој софтвер:
- sudo apt install mysql-server
Забелешка: во овој случај, не мора да извршите sudo apt update
пред командата. Ова е затоа што неодамна сте го извршиле во командите погоре за да го инсталирате Apache. Индексот на пакетот на вашиот компјутер веќе треба да биде ажуриран.
Оваа команда, исто така, ќе ви покаже листа на пакети што ќе се инсталираат, заедно со количината на простор на дискот што ќе ја заземат. Внесете Y
за да продолжите.
Кога ќе заврши инсталацијата, извршете едноставна безбедносна скрипта што доаѓа претходно инсталирана со MySQL која ќе отстрани некои опасни стандардни поставки и ќе го заклучи пристапот до системот на вашата база на податоци. Започнете ја интерактивната скрипта со извршување:
- 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 со внесување:
- sudo mysql
Ова ќе се поврзе со серверот MySQL како корисник на административна база на податоци root, што се заклучува со употребата на sudo
при извршување на оваа команда. Треба да го видите излезот вака:
OutputWelcome 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, напишете:
- 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. Извршете ја следнава команда за да ги инсталирате сите три пакети и нивните зависности:
- 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
:
- 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 за да се препознаат вашите промени. Можете да го направите тоа со следнава команда:
- sudo systemctl restart apache2
Можете исто така да го проверите статусот на услугата apache2
користејќи systemctl
:
- 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
, пејџер кој ви овозможува да се движите низ излезот на другите команди:
- 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
…
:
За да дознаете повеќе за тоа што прави секој модул, можете да пребарувате на интернет за повеќе информации за нив. Алтернативно, погледнете го долгиот опис на пакетот со впишување:
- apt show package_name
Ќе има многу излези, со едно поле наречено Опис
кое ќе има подолго објаснување за функционалноста што ја обезбедува модулот.
На пример, за да дознаете што прави модулот php-cli
, можете да го напишете ова:
- 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
е нешто што ви треба, можете да напишете:
- sudo apt install php-cli
Ако сакате да инсталирате повеќе од еден модул, можете да го направите тоа со наведување на секој, разделен со празно место, следејќи ја командата apt install
, вака:
- 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
е поставен како стандарден директориум што треба да се опслужува доколку барањето на клиентот не се совпаѓа со ниту една друга локација.
Креирајте го директориумот за вашиот_домен на следниов начин:
- sudo mkdir /var/www/your_domain
Следно, доделете ја сопственоста на директориумот со променливата на околината $USER
, која упатува на тековниот најавен корисник:
- sudo chown -R $USER:$USER /var/www/your_domain
Дозволите на вашиот веб-корен директориум треба да бидат точни ако не сте ја измениле неговата вредност за умаск, но можете да се уверите со внесување:
- sudo chmod -R 755 /var/www/your_domain
Следно, креирајте примерок index.html
страница користејќи nano
или вашиот омилен уредувач:
- 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
:
- 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
:
- sudo a2ensite your_domain.conf
Оневозможете ја стандардната локација дефинирана во 000-default.conf
:
- sudo a2dissite 000-default.conf
Следно, ајде да тестираме за грешки во конфигурацијата:
- sudo apache2ctl configtest
Треба да го видите следниов излез:
OutputSyntax OK
Рестартирајте го Apache за да ги имплементирате вашите промени:
- sudo systemctl restart apache2
Апачи сега треба да го опслужува вашето име на домен. Можете да го тестирате ова со навигација до http://your_domain
, каде што треба да видите нешто како ова:
Со тоа, вашиот виртуелен домаќин е целосно поставен. Сепак, пред да направите повеќе промени или да распоредите апликација, би било корисно проактивно да ја тестирате вашата PHP конфигурација во случај да има какви било проблеми што треба да се решат.
Чекор 5 - Тестирање на обработка на PHP на вашиот веб-сервер
За да проверите дали вашиот систем е правилно конфигуриран за PHP, креирајте PHP скрипта наречена info.php
. За да може Apache да ја пронајде оваа датотека и правилно да ја сервира, таа мора да биде зачувана во вашиот веб root директориум.
Направете ја датотеката на веб-корот што го создадовте во претходниот чекор со извршување:
- sudo nano /var/www/your_domain/info.php
Ова ќе отвори празна датотека. Додадете го следниов текст, кој е валиден PHP-код, во датотеката:
<?php
phpinfo();
Кога ќе завршите, зачувајте ја и затворете ја датотеката.
Сега можете да тестирате дали вашиот веб-сервер може правилно да прикажува содржина генерирана од оваа PHP скрипта. За да го пробате ова, посетете ја оваа страница во вашиот веб-прелистувач. Повторно ќе ви треба јавната IP адреса или името на доменот на вашиот сервер.
Адресата што сакате да ја посетите е:
http://your_domain/info.php
Страницата на која доаѓате треба да изгледа вака:
Оваа страница дава некои основни информации за вашиот сервер од перспектива на PHP. Корисно е за дебагирање и за да се осигура дека вашите поставки се применуваат правилно.
Ако можете да ја видите оваа страница во вашиот прелистувач, тогаш вашиот PHP работи како што се очекуваше.
Веројатно сакате да ја отстраните оваа датотека по овој тест бидејќи всушност може да даде информации за вашиот сервер на неовластени корисници. За да го направите ова, извршете ја следнава команда:
- sudo rm /var/www/your_domain/info.php
Секогаш можете да ја рекреирате оваа страница ако треба повторно да пристапите до информациите подоцна.
Заклучок
Сега кога имате инсталирано стек LAMP, имате многу избори што да правите следно. Инсталиравте платформа која ќе ви овозможи да инсталирате повеќето видови веб-локации и веб софтвер на вашиот сервер.
Како непосреден следен чекор, треба да се осигурате дека врските со вашиот веб-сервер се обезбедени, со нивно опслужување преку HTTPS. Следете го нашиот водич за тоа како да го обезбедите Apache со Let’s Encrypt за да ја обезбедите вашата страница со бесплатен TLS/SSL сертификат.
Некои други популарни опции се:
- Инсталирајте го Wordpress најпопуларниот систем за управување со содржина на интернет.
- Поставете PHPMyAdmin за да ви помогне да управувате со вашите MySQL бази на податоци од веб-прелистувач.
- Научете како да користите SFTP за префрлање датотеки до и од вашиот сервер.