FEMP stog, koji je usporediv s LEMP stogom na Linuxu, zbirka je softvera otvorenog koda koji se obično instalira zajedno kako bi se omogućilo FreeBSD poslužitelju da ugošćuje dinamičke web stranice i web aplikacije. FEMP je akronim koji označava FreeBSD, Nginx, MySQL i PHP.
U ovom vodiču ćemo implementirati elemente FEMP stoga na instancu FreeBSD 12.0 Vultr koristeći pkg, FreeBSD upravitelj paketa.
Zahtjevi
Prije nego što započnete ovaj vodič, trebat će vam sljedeće:
- FreeBSD 12.0 VPS.
- Korisnik s korijenskim privilegijama ili
sudokorisnik za promjenu konfiguracije.
- Preporuča se osnovno poznavanje sustava FreeBSD i sučelja naredbenog retka.
Prije nego što počneš
Provjerite verziju FreeBSD-a.
uname -ro # FreeBSD 12.0-RELEASE-p6
Provjerite je li vaš FreeBSD sustav ažuriran.
freebsd-update fetch install pkg update && pkg upgrade -y
Instalirajte potrebne pakete.
pkg install -y sudo vim bash curl
Izradite novi korisnički račun sa svojim željenim korisničkim imenom. Koristimo johndoe.
adduser # Username: johndoe # Full name: John Doe # Uid (Leave empty for default): <Enter> # Login group [johndoe]: <Enter> # Login group is johndoe. Invite johndoe into other groups? []: wheel # Login class [default]: <Enter> # Shell (sh csh tcsh nologin) [sh]: bash # Home directory [/home/johndoe]: <Enter> # Home directory permissions (Leave empty for default): <Enter> # Use password-based authentication? [yes]: <Enter> # Use an empty password? (yes/no) [no]: <Enter> # Use a random password? (yes/no) [no]: <Enter> # Enter password: your_secure_password # Enter password again: your_secure_password # Lock out the account after creation? [no]: <Enter> # OK? (yes/no): yes # Add another user? (yes/no): no # Goodbye!
Pokrenite visudonaredbu i dekomentirajte %wheel ALL=(ALL) ALLredak kako biste omogućili članovima wheelgrupe da izvrše bilo koju naredbu.
visudo # Uncomment by removing hash (#) sign # %wheel ALL=(ALL) ALL
Sada se prebacite na svog novostvorenog korisnika pomoću su:
su - johndoe
NAPOMENA: Zamijenite johndoesvojim korisničkim imenom.
Postavite vremensku zonu:
sudo tzsetup
Instalacija glavnog Nginxa
Možete instalirati Nginx koristeći FreeBSD-ov upravitelj paketa, pkg. Upravitelj paketa omogućuje vam da instalirate većinu softvera bez napora iz spremišta koje održava FreeBSD. Više o tome kako koristitipkg možete saznati ovdje .
Da biste instalirali najnoviji mainline Nginx, izdajte sljedeću naredbu:
sudo pkg install -y nginx-devel
Provjerite verziju:
nginx -v # nginx version: nginx/1.17.1
Ova naredba će instalirati najnoviju glavnu verziju, koja se može pouzdano koristiti na proizvodnom poslužitelju. Ako želite instalirati najnovije stabilno izdanje, samo upotrijebite nginxpaket umjesto nginx-devel.
Sada omogućite i pokrenite Nginx:
sudo sysrc nginx_enable=yes sudo service nginx start
Da biste provjerili je li Nginx pokrenut, možete pokrenuti sljedeću naredbu:
sudo service nginx status
Kao rezultat, vidjet ćete nešto slično sljedećem:
# Output nginx is running as pid 17607.
Možete provjeriti da je Nginx instaliran i da radi bez grešaka posjetom javne IP adrese vašeg poslužitelja u vašem web pregledniku. Idite na your_server_IP. Vidjet ćete zadani "Dobrodošli u nginx!" stranica.
Instalacija MySQL-a
Opet, možete koristiti pkgza nabavu i instalaciju svog softvera.
Instalirajte MySQL koristeći pkg:
sudo pkg install -y mysql80-client mysql80-server
Provjerite verziju:
mysql --version # mysql Ver 8.0.16 for FreeBSD12.0 on amd64 (Source distribution)
Sada omogućite i pokrenite MySQL:
sudo sysrc mysql_enable=yes sudo service mysql-server start
Da biste provjerili je li MySQL pokrenut, možete pokrenuti sljedeću naredbu:
sudo service mysql-server status
Vidjet ćete nešto slično sljedećem:
# Output mysql is running as pid 19066.
Kao dobra praksa, trebali biste pokrenuti mysql_secure_installationsigurnosnu skriptu koja će ukloniti neke nesigurne zadane postavke i malo ograničiti pristup vašem sustavu baze podataka.
sudo mysql_secure_installation
Od vas će se tražiti da postavite lozinku, nakon čega slijede neka druga pitanja. Unesite jaku lozinku, a zatim za ostala pitanja pritisnite ENTERza odabir zadanih postavki.
Instalacija PHP-a 7.3
Da biste instalirali PHP 7.3s pkg, pokrenite ovu naredbu:
sudo pkg install -y php73
Provjerite verziju.
php --version # PHP 7.3.7 (cli) (built: Jul 18 2019 01:14:37) ( NTS ) # Copyright (c) 1997-2018 The PHP Group # Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
Soft-link php.ini-productionna php.ini.
sudo ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Sada omogućite i pokrenite PHP-FPM:
sudo sysrc php_fpm_enable=yes sudo service php-fpm start
Da biste provjerili je li PHP-FPM pokrenut, možete pokrenuti sljedeću naredbu:
sudo service php-fpm status
Kao rezultat, vidjet ćete nešto slično:
# Output php_fpm is running as pid 23005.
Instaliranje PHP modula (izborno)
Kako biste poboljšali funkcionalnost PHP-a, po želji možete instalirati neke dodatne module.
Da biste vidjeli trenutno sastavljene u PHP modulima, možete pokrenuti ovo:
php -m # [PHP Modules] # Core # date # libxml # mysqlnd # pcre # Reflection # SPL # standard # [Zend Modules]
Za traženje dostupnih PHP modula, možete koristiti ovu naredbu:
pkg search ^php73-*
Rezultati će uglavnom biti PHP 7.3 moduli koje možete instalirati:
# Output # php73-7.3.7 PHP Scripting Language # php73-Ice37-3.7.2 Modern alternative to object middleware such as CORBA/COM/DCOM/COM+ # php73-aphpbreakdown-2.2.2 Code-Analyzer for PHP for Compatibility Check-UP # php73-aphpunit-1.8 Testing framework for unit tests # php73-bcmath-7.3.7 The bcmath shared extension for php # php73-brotli-0.7.0 Brotli extension for PHP # php73-bsdconv-11.5.0 PHP wrapper for bsdconv # php73-bz2-7.3.7 The bz2 shared extension for php # php73-calendar-7.3.7 The calendar shared extension for php # php73-composer-1.8.6 Dependency Manager for PHP # php73-ctype-7.3.7 The ctype shared extension for php # php73-curl-7.3.7 The curl shared extension for php # . . .
Ako nakon istraživanja odlučite da trebate instalirati paket, to možete učiniti pomoću pkg installnaredbe. Većina PHP web aplikacija zahtijevat će dodatne module, pa je dobro znati kako ih tražiti.
Konfiguriranje Nginxa za korištenje PHP modula
Prije korištenja PHP-a, morate ga konfigurirati za rad s Nginxom.
Pokrenite sudo vim /usr/local/etc/nginx/test.confi popunite datoteku sljedećim sadržajem:
server { listen 80; server_name SERVER_IP; # Replace with your IP or hostname root /usr/local/www/nginx-dist; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Spremite datoteku i izađite s :+ W+Q
Sada moramo uključiti test.confu glavnu nginx.confdatoteku. Glavna konfiguracijska datoteka za Nginx živi pod /usr/local/etc/nginximenom nginx.conf.
Pokrenite sudo vim /usr/local/etc/nginx/nginx.confda otvorite glavnu konfiguracijsku datoteku u Vimu i dodajte sljedeći redak u http {}blok.
include test.conf;
Testirajte Nginx konfiguraciju:
sudo nginx -t
Budući da ste napravili promjene konfiguracije u Nginxu, morate ponovno učitati uslugu da bi se one primijenile. Inače će Nginx i dalje raditi s ranijom konfiguracijom.
sudo service nginx reload
Testiranje PHP obrade
Kako biste provjerili je li vaš sustav ispravno konfiguriran za PHP, možete stvoriti vrlo osnovnu PHP skriptu. Nazvat ćete ovu skriptu info.php. Prema zadanim postavkama, vrijednost rootje postavljena na /usr/local/www/nginx-dist. Možete stvoriti info.phpdatoteku na tom mjestu:
sudo vim /usr/local/www/nginx-dist/info.php
Dodajte ovaj kod toj datoteci:
<?php phpinfo(); ?>
Idite na http://your_server_IP/ìnfo.phpi vidjet ćete sljedeću stranicu:

Nakon instalacije i postavljanja trebate ukloniti info.phpdatoteku kako biste izbjegli otkrivanje informacija o poslužitelju javnosti.
sudo rm /usr/local/www/nginx-dist/info.php
Zaključak
Čestitamo, uspješno ste instalirali FEMP stog na svoj FreeBSD 12.0 VPS. Sada imate više izbora što učiniti sljedeće. Instalirali ste platformu koja će vam omogućiti da instalirate većinu vrsta web stranica i web softvera na nju.