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


Вовед

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

Во овој водич, ќе добиеме стек LAMP инсталиран на серверот Ubuntu 16.04. Ubuntu ќе го исполни нашиот прв услов: оперативен систем Линукс.

Предуслови

Пред да започнете со овој водич, треба да имате посебна, не-root корисничка сметка со привилегии sudo поставени на вашиот сервер. Можете да научите како да го направите ова со завршување на чекорите 1-4 во нашето почетно поставување на серверот за Ubuntu 16.04 туторијал.

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

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

Можеме лесно да го инсталираме Apache користејќи го менаџерот на пакети на Ubuntu, apt. Управувачот со пакети ни овозможува да го инсталираме најголемиот дел од софтверот без болка од складиште што го одржува Ubuntu. Можете да дознаете повеќе за тоа како да користите apt овде.

За наши цели, можеме да започнеме со пишување на овие команди:

  1. sudo apt-get update
  2. sudo apt-get install apache2

Бидејќи користиме команда sudo, овие операции се извршуваат со root привилегии. Ќе побара од вас лозинката на вашиот редовен корисник за да ги потврди вашите намери.

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

Поставување Глобално име на сервер да ги потиснува предупредувањата за синтакса

Следно, ќе додадеме една линија во датотеката /etc/apache2/apache2.conf за да ја потиснеме пораката за предупредување. Иако е безопасно, ако не го поставите ServerName глобално, ќе го добиете следното предупредување кога ја проверувате конфигурацијата на Apache за синтаксички грешки:

  1. sudo apache2ctl configtest
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Отворете ја главната конфигурациска датотека со вашето уредување на текст:

  1. sudo nano /etc/apache2/apache2.conf

Внатре, на дното на датотеката, додајте директива ServerName, што укажува на името на вашиот примарен домен. Ако немате име на домен поврзан со вашиот сервер, можете да ја користите јавната IP адреса на вашиот сервер:

Забелешка: Ако не ја знаете IP адресата на вашиот сервер, прескокнете на делот како да ја пронајдете јавната IP адреса на вашиот сервер за да ја пронајдете.

. . .
ServerName server_domain_or_IP

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

Следно, проверете дали има синтаксички грешки со пишување:

  1. sudo apache2ctl configtest

Бидејќи ја додадовме глобалната директива ServerName, сè што треба да видите е:

Output
Syntax OK

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

  1. sudo systemctl restart apache2

Сега можете да започнете со прилагодување на заштитниот ѕид.

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

Следно, под претпоставка дека сте ги следеле првичните упатства за поставување на серверот за да го овозможите заштитниот ѕид на 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

Дозволи дојдовен сообраќај за овој профил:

  1. sudo ufw allow in "Apache Full"

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

http://your_server_IP_address

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

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

Наоѓање на јавната IP адреса на вашиот сервер

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

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

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

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

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

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

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

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

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

Повторно, можеме да користиме apt за стекнување и инсталирање на нашиот софтвер. Овој пат, ќе инсталираме и некои други „помошни“ пакети кои ќе ни помогнат да ги натераме нашите компоненти да комуницираат едни со други:

  1. sudo apt-get install mysql-server

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

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

За време на инсталацијата, вашиот сервер ќе побара од вас да изберете и потврдите лозинка за MySQL \root корисникот. Ова е административна сметка во MySQL која има зголемени привилегии. Замислете дека е слична на root сметката за самиот сервер (Онаа што ја конфигурирате сега е сметка специфична за MySQL) Проверете дали ова е силна, единствена лозинка и не оставајте ја празна.

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

  1. mysql_secure_installation

Ќе биде побарано да ја внесете лозинката што ја поставивте за root сметката на MySQL. Следно, ќе бидете прашани дали сакате да го конфигурирате 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

Ако сте овозможиле валидација на лозинката, ќе ви биде прикажана јачината на лозинката за постоечката 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 веднаш да ги почитува промените што ги направивме.

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

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

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

Можеме уште еднаш да го искористиме системот apt за да ги инсталираме нашите компоненти. Ќе вклучиме и некои помошни пакети, така што PHP-кодот може да работи под серверот Apache и да разговара со нашата база на податоци MySQL:

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

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

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

За да го направите ова, напишете ја оваа команда за да ја отворите датотеката dir.conf во текстуален уредувач со права на root:

  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 - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server. Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server... Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2 Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: * Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Инсталирајте PHP модули

За да ја подобриме функционалноста на PHP, опционално можеме да инсталираме некои дополнителни модули.

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

  1. apt-cache search php- | less

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

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

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

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

  1. apt-cache show package_name

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

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

  1. apt-cache show php-cli

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

Output
… Description-en: 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 Debian's default PHP version (currently 7.0). …

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

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

  1. sudo apt-get install php-cli

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

  1. sudo apt-get install package1 package2 ...

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

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

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

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

Во Ubuntu 16.04, овој директориум се наоѓа на /var/www/html/. Можеме да ја создадеме датотеката на таа локација со внесување:

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

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

<?php
phpinfo();
?>

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

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

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

http://your_server_IP_address/info.php

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

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

Ако ова беше успешно, тогаш вашиот PHP работи како што се очекуваше.

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

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

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

Заклучок

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

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

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

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