Како да инсталирате стек 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
овде.
За наши цели, можеме да започнеме со пишување на овие команди:
- sudo apt-get update
- sudo apt-get install apache2
Бидејќи користиме команда sudo
, овие операции се извршуваат со root привилегии. Ќе побара од вас лозинката на вашиот редовен корисник за да ги потврди вашите намери.
Откако ќе ја внесете лозинката, apt
ќе ви каже кои пакети планира да ги инсталира и колку дополнителен простор на дискот ќе заземат. Притиснете y
и притиснете ENTER
за да продолжите и инсталацијата ќе продолжи.
Поставување Глобално име на сервер да ги потиснува предупредувањата за синтакса
Следно, ќе додадеме една линија во датотеката /etc/apache2/apache2.conf
за да ја потиснеме пораката за предупредување. Иако е безопасно, ако не го поставите ServerName
глобално, ќе го добиете следното предупредување кога ја проверувате конфигурацијата на Apache за синтаксички грешки:
- sudo apache2ctl configtest
OutputAH00558: 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
Отворете ја главната конфигурациска датотека со вашето уредување на текст:
- sudo nano /etc/apache2/apache2.conf
Внатре, на дното на датотеката, додајте директива ServerName
, што укажува на името на вашиот примарен домен. Ако немате име на домен поврзан со вашиот сервер, можете да ја користите јавната IP адреса на вашиот сервер:
Забелешка: Ако не ја знаете IP адресата на вашиот сервер, прескокнете на делот како да ја пронајдете јавната IP адреса на вашиот сервер за да ја пронајдете.
. . .
ServerName server_domain_or_IP
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Следно, проверете дали има синтаксички грешки со пишување:
- sudo apache2ctl configtest
Бидејќи ја додадовме глобалната директива ServerName
, сè што треба да видите е:
OutputSyntax OK
Рестартирајте го Apache за да ги имплементирате вашите промени:
- sudo systemctl restart apache2
Сега можете да започнете со прилагодување на заштитниот ѕид.
Прилагодување на заштитниот ѕид за да се дозволи веб сообраќај
Следно, под претпоставка дека сте ги следеле првичните упатства за поставување на серверот за да го овозможите заштитниот ѕид на 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
Дозволи дојдовен сообраќај за овој профил:
- sudo ufw allow in "Apache Full"
Можете веднаш да извршите проверка на самото место за да потврдите дека сè тргнало според планираното со посета на јавната IP адреса на вашиот сервер во вашиот веб-прелистувач (видете ја белешката под следниот наслов за да дознаете која е вашата јавна IP адреса ако ги немате овие информации веќе):
http://your_server_IP_address
Ќе ја видите стандардната веб-страница на Ubuntu 16.04 Apache, која е таму за информативни и тестирачки цели. Треба да изгледа вака:
Ако ја видите оваа страница, тогаш вашиот веб-сервер сега е правилно инсталиран и достапен преку вашиот заштитен ѕид.
Наоѓање на јавната IP адреса на вашиот сервер
Ако не знаете која е јавната IP адреса на вашиот сервер, постојат голем број начини на кои можете да ја најдете. Обично, ова е адресата што ја користите за да се поврзете со вашиот сервер преку SSH.
Од командната линија, можете да го најдете ова на неколку начини. Прво, можете да ги користите алатките iproute2
за да ја добиете вашата адреса со внесување на ова:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Ова ќе ви врати две или три линии. Сите тие се точни адреси, но вашиот компјутер можеби ќе може да користи само една од нив, па слободно пробајте ја секоја од нив.
Алтернативен метод е да ја користите алатката curl
за да контактирате со надворешна страна за да ви каже како го гледа вашиот сервер. Можете да го направите ова со тоа што ќе прашате одреден сервер која е вашата IP адреса:
- sudo apt-get install curl
- curl http://icanhazip.com
Без оглед на методот што го користите за да ја добиете вашата IP адреса, можете да ја напишете во лентата за адреси на вашиот веб-прелистувач за да стигнете до вашиот сервер.
Чекор 2 - Инсталирање MySQL
Сега кога го имаме нашиот веб-сервер отворен и работи, време е да инсталираме MySQL. MySQL е систем за управување со бази на податоци. Во основа, ќе организира и ќе обезбеди пристап до бази на податоци каде што нашата страница може да складира информации.
Повторно, можеме да користиме apt
за стекнување и инсталирање на нашиот софтвер. Овој пат, ќе инсталираме и некои други „помошни“ пакети кои ќе ни помогнат да ги натераме нашите компоненти да комуницираат едни со други:
- sudo apt-get install mysql-server
Забелешка: во овој случај, не мора да извршите sudo apt-get update
пред командата. Ова е затоа што неодамна го извршивме во командите погоре за да го инсталираме Apache. Индексот на пакети на нашиот компјутер веќе треба да биде ажуриран.
Повторно, ќе ви биде прикажан список на пакети што ќе се инсталираат, заедно со количината на простор на дискот што ќе заземат. Внесете Y за да продолжите.
За време на инсталацијата, вашиот сервер ќе побара од вас да изберете и потврдите лозинка за MySQL \root корисникот. Ова е административна сметка во MySQL која има зголемени привилегии. Замислете дека е слична на root сметката за самиот сервер (Онаа што ја конфигурирате сега е сметка специфична за MySQL) Проверете дали ова е силна, единствена лозинка и не оставајте ја празна.
Кога ќе заврши инсталацијата, сакаме да извршиме едноставна безбедносна скрипта која ќе отстрани некои опасни стандардни поставки и малку ќе го заклучи пристапот до системот на нашата база на податоци. Започнете ја интерактивната скрипта со извршување:
- 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:
- sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Ова треба да инсталира PHP без никакви проблеми. Ќе го тестираме ова за момент.
Во повеќето случаи, ќе сакаме да го измениме начинот на кој Apache ги опслужува датотеките кога се бара директориум. Во моментов, ако корисникот побара директориум од серверот, Apache прво ќе бара датотека наречена index.html
. Сакаме да му кажеме на нашиот веб-сервер да претпочита PHP-датотеки, така што прво ќе го натераме Apache-то да бара датотека index.php
.
За да го направите ова, напишете ја оваа команда за да ја отворите датотеката dir.conf
во текстуален уредувач со права на root:
- 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 - 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
, пејџер кој ви овозможува да се движите низ излезот на други команди :
- 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]
…
:
За да добиете повеќе информации за тоа што прави секој модул, можете или да пребарувате на интернет или да го погледнете долгиот опис на пакетот со впишување:
- apt-cache show package_name
Ќе има многу излези, со едно поле наречено Description-en
кое ќе има подолго објаснување за функционалноста што ја обезбедува модулот.
На пример, за да дознаеме што прави модулот php-cli
, би можеле да го напишеме ова:
- 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
е нешто што ни треба, би можеле да напишеме:
- sudo apt-get install php-cli
Ако сакате да инсталирате повеќе од еден модул, можете да го направите тоа со наведување на секој, разделен со празно место, следејќи ја командата apt-get install
, вака:
- sudo apt-get install package1 package2 ...
Во овој момент, вашиот стек LAMP е инсталиран и конфигуриран. Сепак, треба да го тестираме нашиот PHP.
Чекор 4 - Тестирање на обработка на PHP на вашиот веб-сервер
За да тестираме дали нашиот систем е правилно конфигуриран за PHP, можеме да создадеме многу основна PHP скрипта.
Оваа скрипта ќе ја наречеме info.php
. За да може Apache да ја пронајде датотеката и правилно да ја сервира, таа мора да биде зачувана во многу специфичен директориум, кој се нарекува web root.
Во Ubuntu 16.04, овој директориум се наоѓа на /var/www/html/
. Можеме да ја создадеме датотеката на таа локација со внесување:
- sudo nano /var/www/html/info.php
Ова ќе отвори празна датотека. Сакаме да го ставиме следниов текст, кој е валиден PHP-код, во датотеката:
<?php
phpinfo();
?>
Кога ќе завршите, зачувајте ја и затворете ја датотеката.
Сега можеме да тестираме дали нашиот веб-сервер може правилно да прикажува содржина генерирана од PHP скрипта. За да го пробаме ова, само треба да ја посетиме оваа страница во нашиот веб-прелистувач. Повторно ќе ви треба јавната IP адреса на вашиот сервер.
Адресата што сакате да ја посетите ќе биде:
http://your_server_IP_address/info.php
Страницата на која доаѓате треба да изгледа вака:
Оваа страница во основа ви дава информации за вашиот сервер од перспектива на PHP. Корисно е за дебагирање и за да се осигура дека вашите поставки се применуваат правилно.
Ако ова беше успешно, тогаш вашиот PHP работи како што се очекуваше.
Веројатно сакате да ја отстраните оваа датотека по овој тест бидејќи всушност може да даде информации за вашиот сервер на неовластени корисници. За да го направите ова, можете да го напишете ова:
- sudo rm /var/www/html/info.php
Секогаш можете да ја рекреирате оваа страница ако треба повторно да пристапите до информациите подоцна.
Заклучок
Сега кога имате инсталирано стек LAMP, имате многу избори за тоа што да правите следно. Во основа, имате инсталирано платформа која ќе ви овозможи да инсталирате повеќето видови веб-страници и веб софтвер на вашиот сервер.
Како непосреден следен чекор, треба да се осигурате дека врските со вашиот веб-сервер се обезбедени, со нивно опслужување преку HTTPS. Најлесната опција овде е да користите Let’s Encrypt за да ја обезбедите вашата страница со бесплатен TLS/SSL сертификат.
Некои други популарни опции се:
- Инсталирајте го Wordpress најпопуларниот систем за управување со содржина на интернет.
- Поставете PHPMyAdmin за да ви помогне да управувате со вашите MySQL бази на податоци од веб-прелистувач.
- Дознајте повеќе за MySQL за управување со вашите бази на податоци.
- Научете како да користите SFTP за префрлање датотеки до и од вашиот сервер.