FEMP平台,与Linux操作系统中的LEMP平台类似,是运行在FreeBSD操作系统中用于托管动态网站和应用程序的一系列软件的组合。FEMP代表FreeBSD、Nginx、MySQL和PHP。这篇帮助基于FreeBSD 12.0操作系统,使用pkg包管理器来部署FEMP平台。
准备工作
首先检查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
设置时区。
sudo tzsetup
创建一个新用户,这里我们以zhaomu作为用户名的示例。
adduser
# Username: zhaomu
# Full name: zhaomu.com
# Uid (Leave empty for default): <Enter>
# Login group [zhaomu]: <Enter>
# Login group is zhaomu. Invite zhaomu into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/zhaomu]: <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用户组的用户能够执行任何命令。
visudo
# %wheel ALL=(ALL) ALL
切换到刚才创建的zhaomu用户。
su - zhaomu
安装Nginx
使用FreeBSD包管理器安装Nginx。借助FreeBSD的pkg包管理器,我们可以轻松安装大部分由FreeBSD维护的常用软件。
执行以下命令安装最新版本的Nginx,并启动Nginx。
sudo pkg install -y nginx
sudo sysrc nginx_enable=yes
sudo service nginx start
检查Nginx的版本和状态。
sudo nginx -v
sudo service nginx status
此时,在浏览器上访问IP地址,如果出现"Welcome to nginx!" 的字样,说明Nginx安装成功。
安装MySQL
同样,使用pkg安装MySQL,并启动MySQL。
sudo pkg install -y mysql80-client mysql80-server
sudo sysrc mysql_enable=yes
sudo service mysql-server start
检查MySQL的版本和状态。
sudo mysql --version
sudo service mysql-server status
作为MySQL的最佳实践之一,我们需要执行mysql_secure_installation安全脚本,用于避免一些MySQL默认的安全风险,并设置MySQL数据库的权限。 执行该向导后,系统提示我们输入root密码,其余问题保持默认选项即可。
sudo mysql_secure_installation
安装PHP
安装PHP 7.3版本,并启用PHP-FPM。
sudo pkg install -y php73
sudo sysrc php_fpm_enable=yes
sudo service php-fpm start
检查PHP版本和状态。
sudo php --version
sudo service php-fpm status
为了增强PHP的功能,我们还可以安装一些PHP组件。执行php -m查看已安装的组件。
php -m
# [PHP Modules]
# Core
# date
# libxml
# mysqlnd
# pcre
# Reflection
# SPL
# standard
# [Zend Modules]
执行pkg search命令,查看可用的PHP组件。
pkg search ^php73-*
# 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
# . . .
为了让Nginx能够识别PHP,还需要做一些设置。首先在Nginx配置目录下新建test.conf文件。
sudo vim /usr/local/etc/nginx/test.conf
添加如下代码到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;
}
}
然后编辑Nginx的主配置文件。
vim /usr/local/etc/nginx/nginx.conf
在nginx.conf文件中添加如下代码,引用test.conf文件。
include test.conf;
重载Nginx服务器并检查设置是否生效。
sudo service nginx reload
sudo nginx -t
测试访问
为了检测FreeBSD系统能否正常运行PHP,我们创建一个简单的PHP脚本,命名为info.php。
sudo vim /usr/local/www/nginx-dist/info.php
添加如下代码
<?php phpinfo(); ?>
然后访问:http://your_server_IP/ìnfo.php 。如果一切正常,可以看到如下页面。
最后删除测试脚本,开始正式部署应用程序。至此,在FreeBSD云服务器上安装FEMP平台的步骤已全部完成。
sudo rm /usr/local/www/nginx-dist/info.php