Μια στοίβα FEMP, η οποία είναι συγκρίσιμη με μια στοίβα LEMP στο Linux, είναι μια συλλογή λογισμικού ανοιχτού κώδικα που συνήθως εγκαθίσταται μαζί για να επιτρέπει σε έναν διακομιστή FreeBSD να φιλοξενεί δυναμικούς ιστότοπους και εφαρμογές Ιστού. Το FEMP είναι ένα αρκτικόλεξο που σημαίνει FreeBSD, Nginx, MySQL και PHP.
Σε αυτόν τον οδηγό, θα αναπτύξουμε στοιχεία μιας στοίβας FEMP σε μια παρουσία του FreeBSD 12.0 Vultr χρησιμοποιώντας pkg
τον διαχειριστή πακέτων FreeBSD.
Απαιτήσεις
Πριν ξεκινήσετε αυτόν τον οδηγό, θα χρειαστείτε τα εξής:
- Ένα FreeBSD 12.0 VPS.
- Ένας χρήστης με δικαιώματα root ή
sudo
χρήστης για να κάνει αλλαγές στις ρυθμίσεις παραμέτρων.
- Συνιστάται η βασική εξοικείωση με το σύστημα FreeBSD και τη διεπαφή γραμμής εντολών.
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του FreeBSD.
uname -ro # FreeBSD 12.0-RELEASE-p6
Βεβαιωθείτε ότι το σύστημά σας FreeBSD είναι ενημερωμένο.
freebsd-update fetch install pkg update && pkg upgrade -y
Εγκαταστήστε τα απαραίτητα πακέτα.
pkg install -y sudo vim bash curl
Δημιουργήστε έναν νέο λογαριασμό χρήστη με το όνομα χρήστη που προτιμάτε. χρησιμοποιούμε 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!
Εκτελέστε την visudo
εντολή και αποσχολιάστε τη %wheel ALL=(ALL) ALL
γραμμή, για να επιτρέψετε στα μέλη της wheel
ομάδας να εκτελέσουν οποιαδήποτε εντολή.
visudo # Uncomment by removing hash (#) sign # %wheel ALL=(ALL) ALL
Τώρα, μεταβείτε στον νέο χρήστη που δημιουργήσατε με su
:
su - johndoe
ΣΗΜΕΙΩΣΗ: Αντικαταστήστε το johndoe
με το όνομα χρήστη σας.
Ρυθμίστε τη ζώνη ώρας:
sudo tzsetup
Εγκατάσταση mainline Nginx
Μπορείτε να εγκαταστήσετε το Nginx χρησιμοποιώντας τον διαχειριστή πακέτων του FreeBSD, pkg
. Ένας διαχειριστής πακέτων σάς επιτρέπει να εγκαταστήσετε το μεγαλύτερο μέρος του λογισμικού χωρίς κόπο από ένα αποθετήριο που διατηρεί το FreeBSD. Μπορείτε να μάθετε περισσότερα σχετικά με τον τρόπο χρήσης pkg
εδώ .
Για να εγκαταστήσετε το πιο πρόσφατο mainline Nginx, εκδώστε την ακόλουθη εντολή:
sudo pkg install -y nginx-devel
Ελέγξτε την έκδοση:
nginx -v # nginx version: nginx/1.17.1
Αυτή η εντολή θα εγκαταστήσει την πιο πρόσφατη κύρια έκδοση, η οποία μπορεί να χρησιμοποιηθεί αξιόπιστα σε διακομιστή παραγωγής. Εάν θέλετε να εγκαταστήσετε την πιο πρόσφατη σταθερή έκδοση, απλώς χρησιμοποιήστε το nginx
πακέτο αντί για το nginx-devel
.
Τώρα, ενεργοποιήστε και ξεκινήστε το Nginx:
sudo sysrc nginx_enable=yes sudo service nginx start
Για να ελέγξετε ότι το Nginx έχει ξεκινήσει, μπορείτε να εκτελέσετε την ακόλουθη εντολή:
sudo service nginx status
Ως αποτέλεσμα, θα δείτε κάτι παρόμοιο με το παρακάτω:
# Output nginx is running as pid 17607.
Μπορείτε να επαληθεύσετε ότι το Nginx εγκαταστάθηκε και λειτουργεί χωρίς σφάλματα, μεταβαίνοντας στη δημόσια διεύθυνση IP του διακομιστή σας στο πρόγραμμα περιήγησής σας. Πλοηγηθείτε στο your_server_IP
. Θα δείτε το προεπιλεγμένο "Καλώς ήρθατε στο nginx!" σελίδα.
Εγκατάσταση MySQL
Και πάλι, μπορείτε να το χρησιμοποιήσετε pkg
για να αποκτήσετε και να εγκαταστήσετε το λογισμικό σας.
Εγκαταστήστε τη MySQL χρησιμοποιώντας pkg
:
sudo pkg install -y mysql80-client mysql80-server
Ελέγξτε την έκδοση:
mysql --version # mysql Ver 8.0.16 for FreeBSD12.0 on amd64 (Source distribution)
Τώρα, ενεργοποιήστε και ξεκινήστε τη MySQL:
sudo sysrc mysql_enable=yes sudo service mysql-server start
Για να ελέγξετε ότι η MySQL έχει ξεκινήσει, μπορείτε να εκτελέσετε την ακόλουθη εντολή:
sudo service mysql-server status
Θα δείτε κάτι παρόμοιο με το παρακάτω:
# Output mysql is running as pid 19066.
Ως καλή πρακτική, θα πρέπει να εκτελέσετε το mysql_secure_installation
σενάριο ασφαλείας που θα αφαιρέσει ορισμένες μη ασφαλείς προεπιλογές και θα περιορίσει ελαφρώς την πρόσβαση στο σύστημα βάσης δεδομένων σας.
sudo mysql_secure_installation
Θα σας ζητηθεί να ορίσετε έναν κωδικό πρόσβασης, ακολουθούμενο από κάποιες άλλες ερωτήσεις. Εισαγάγετε έναν ισχυρό κωδικό πρόσβασης και, στη συνέχεια, για τις υπόλοιπες ερωτήσεις πατήστε ENTERγια να επιλέξετε τις προεπιλογές.
Εγκατάσταση της PHP 7.3
Για να εγκαταστήσετε την PHP 7.3
με pkg
, εκτελέστε αυτήν την εντολή:
sudo pkg install -y php73
Ελέγξτε την έκδοση.
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
Μαλακή σύνδεση php.ini-production
με php.ini
.
sudo ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Τώρα, ενεργοποιήστε και ξεκινήστε το PHP-FPM:
sudo sysrc php_fpm_enable=yes sudo service php-fpm start
Για να ελέγξετε ότι το PHP-FPM έχει ξεκινήσει, μπορείτε να εκτελέσετε την ακόλουθη εντολή:
sudo service php-fpm status
Ως αποτέλεσμα, θα δείτε κάτι παρόμοιο:
# Output php_fpm is running as pid 23005.
Εγκατάσταση μονάδων PHP (προαιρετικό)
Για να βελτιώσετε τη λειτουργικότητα της PHP, μπορείτε προαιρετικά να εγκαταστήσετε ορισμένες πρόσθετες μονάδες.
Για να δείτε τις τρέχουσες μεταγλωττισμένες μονάδες PHP, μπορείτε να εκτελέσετε αυτό:
php -m # [PHP Modules] # Core # date # libxml # mysqlnd # pcre # Reflection # SPL # standard # [Zend Modules]
Για να αναζητήσετε διαθέσιμες μονάδες PHP, μπορείτε να χρησιμοποιήσετε αυτήν την εντολή:
pkg search ^php73-*
Τα αποτελέσματα θα είναι κυρίως ενότητες PHP 7.3 που μπορείτε να εγκαταστήσετε:
# 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 # . . .
Εάν, μετά από έρευνα, αποφασίσετε ότι πρέπει να εγκαταστήσετε ένα πακέτο, μπορείτε να το κάνετε χρησιμοποιώντας την pkg install
εντολή. Οι περισσότερες εφαρμογές ιστού PHP θα απαιτούν πρόσθετες ενότητες, επομένως είναι καλό να γνωρίζετε πώς να τις αναζητάτε.
Διαμόρφωση του Nginx για χρήση της μονάδας PHP
Πριν χρησιμοποιήσετε την PHP, πρέπει να τη ρυθμίσετε ώστε να λειτουργεί με το Nginx.
Εκτελέστε sudo vim /usr/local/etc/nginx/test.conf
και συμπληρώστε το αρχείο με το ακόλουθο περιεχόμενο:
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; } }
Αποθηκεύστε το αρχείο και βγείτε με :+ W+Q
Τώρα πρέπει να συμπεριλάβουμε test.conf
στο κύριο nginx.conf
αρχείο. Το κύριο αρχείο ρύθμισης παραμέτρων για το Nginx λειτουργεί /usr/local/etc/nginx
ως nginx.conf
.
Εκτελέστε sudo vim /usr/local/etc/nginx/nginx.conf
για να ανοίξετε το κύριο αρχείο διαμόρφωσης στο Vim και προσθέστε την ακόλουθη γραμμή στο http {}
μπλοκ.
include test.conf;
Δοκιμάστε τη διαμόρφωση Nginx:
sudo nginx -t
Επειδή έχετε κάνει αλλαγές διαμόρφωσης στο Nginx, πρέπει να φορτώσετε ξανά την υπηρεσία για να εφαρμοστούν. Διαφορετικά, το Nginx θα εξακολουθεί να λειτουργεί με την προηγούμενη διαμόρφωση.
sudo service nginx reload
Δοκιμή επεξεργασίας PHP
Για να ελέγξετε ότι το σύστημά σας έχει ρυθμιστεί σωστά για PHP, μπορείτε να δημιουργήσετε ένα πολύ βασικό σενάριο PHP. Θα καλέσετε αυτό το σενάριο info.php
. Από προεπιλογή, το root
έχει οριστεί σε /usr/local/www/nginx-dist
. Μπορείτε να δημιουργήσετε το info.php
αρχείο σε αυτήν τη θέση:
sudo vim /usr/local/www/nginx-dist/info.php
Προσθέστε αυτόν τον κώδικα σε αυτό το αρχείο:
<?php phpinfo(); ?>
Μεταβείτε http://your_server_IP/ìnfo.php
και θα δείτε την παρακάτω σελίδα:
![Πώς να εγκαταστήσετε το Nginx, MySQL και PHP (FEMP) στο FreeBSD 12.0](/resources/images/cloudo3-1423-1.png)
Μετά την εγκατάσταση και τη ρύθμιση, θα πρέπει να αφαιρέσετε το info.php
αρχείο για να αποφύγετε την αποκάλυψη πληροφοριών σχετικά με τον διακομιστή στο κοινό.
sudo rm /usr/local/www/nginx-dist/info.php
συμπέρασμα
Συγχαρητήρια, εγκαταστήσατε με επιτυχία μια στοίβα FEMP στο FreeBSD 12.0 VPS σας. Τώρα έχετε πολλές επιλογές για το τι να κάνετε στη συνέχεια. Έχετε εγκαταστήσει μια πλατφόρμα που θα σας επιτρέπει να εγκαταστήσετε τα περισσότερα είδη ιστότοπων και λογισμικού ιστού πάνω από αυτήν.