答案:在Ubuntu上搭建PHP开发环境需安装Nginx、PHP-FPM和MariaDB,配置Nginx与PHP-FPM协同工作,并通过info.php测试环境。

在Linux系统上搭建PHP开发环境,说白了,就是要把Web服务器(比如Nginx或Apache)、PHP解释器(通常是PHP-FPM)以及一个数据库(如MariaDB或MySQL)这几个核心组件安装好,并让他们能协同工作。这听起来可能有点像搭积木,但每个积木块都有它的脾气和连接方式,需要我们细心去配置。一旦成功,你就能在这片个人搭建的“乐土”上跑起你的PHP应用了。
搭建PHP环境,我个人偏好Nginx搭配PHP-FPM,因为它在处理高并发请求时表现出色,而且资源占用相对较少。这里以Ubuntu系统为例,一步步来:
1. 更新系统与安装基础组件
这总是一个好的开始,确保你的系统是最新状态,能避免一些不必要的依赖问题。
立即学习“PHP免费学习笔记(深入)”;
sudo apt update sudo apt upgrade -y
2. 安装Nginx Web服务器
Nginx将作为你的Web服务器,负责接收用户的请求并将其转发给PHP处理。
sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
安装完成后,在浏览器中访问你的服务器IP地址,应该能看到Nginx的欢迎页面。
3. 安装PHP及PHP-FPM
PHP-FPM(FastCGI Process Manager)是PHP的一个进程管理器,它能让PHP作为一个独立的进程运行,并通过FastCGI协议与Nginx通信。这里我们会安装一些常用的PHP扩展。
sudo apt install php-fpm php-mysql php-cli php-gd php-curl php-mbstring php-xml php-zip -y
安装完成后,PHP-FPM服务会自动启动并设置为开机自启。你可以检查一下它的状态:
sudo systemctl status php*-fpm
(注意这里的
php*-fpm
php8.1-fpm
4. 配置Nginx与PHP-FPM协作
这是关键一步,让Nginx知道如何把
.php
/etc/nginx/sites-available/default
sudo nano /etc/nginx/sites-available/default
找到类似这样的代码块(通常是被注释掉的):
# Add index.php to the list if you are using PHP
# index index.html index.htm index.nginx-debian.html;
# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 这里的版本号请根据实际安装的PHP版本调整
#}你需要做几件事:
index
index.php
index.html
index.php
location ~ \.php$
fastcgi_pass
unix:/var/run/php/php8.1-fpm.sock;
/var/run/php/
修改后的相关部分可能看起来像这样:
root /var/www/html; # 这是你的网站根目录,可以根据需要修改
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name your_domain_or_ip; # 替换成你的域名或IP地址
location / {
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 请务必确认这里的PHP版本号
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}保存并关闭文件(
Ctrl+O
Enter
Ctrl+X
sudo nginx -t
如果显示
syntax is ok
test is successful
sudo systemctl restart nginx
5. 安装数据库(MariaDB)
对于PHP应用,数据库几乎是不可或缺的。MariaDB是MySQL的一个强大替代品,性能优秀且兼容性好。
sudo apt install mariadb-server -y sudo systemctl start mariadb sudo systemctl enable mariadb
安装后,强烈建议运行安全脚本来加固你的数据库:
sudo mysql_secure_installation
这个脚本会引导你设置root密码、移除匿名用户、禁止root远程登录、移除测试数据库等。
6. 测试PHP环境
现在,我们创建一个简单的PHP文件来验证一切是否正常工作。
sudo nano /var/www/html/info.php
在文件中添加以下内容:
<?php phpinfo(); ?>
保存并关闭文件。 在浏览器中访问
http://你的服务器IP地址/info.php
info.php
sudo rm /var/www/html/info.php
选择Nginx还是Apache,这真的是一个老生常谈的话题,但它背后蕴含着对Web服务架构的深刻理解。在我看来,这没有绝对的对错,更多是基于项目需求、团队经验和个人偏好的一种权衡。
Nginx的优势:
我个人更倾向于Nginx,尤其是在处理现代Web应用时。Nginx采用了事件驱动(Event-driven)的架构,这意味着它能够以非阻塞的方式处理大量并发连接。当一个请求进来时,Nginx不会为每个请求都创建一个新的进程或线程,而是通过一个或几个工作进程来高效地管理所有连接。这种模型使得Nginx在作为静态文件服务器或反向代理时表现极其出色,资源消耗极低,响应速度飞快。对于PHP应用,Nginx通常与PHP-FPM结合使用,Nginx负责处理HTTP请求和静态资源,而PHP-FPM则专门负责解析PHP代码。这种分离使得两者各司其职,效率更高。我曾经遇到过一个高并发的API服务,从Apache切换到Nginx后,服务器的CPU和内存占用明显下降,而吞吐量却大幅提升,那种优化效果是实实在在能感受到的。
Apache的优势:
Apache,作为Web服务器的“老大哥”,其优势在于其成熟度和模块化。它采用进程/线程模型(Process/Thread-driven),每个请求通常会由一个新的进程或线程来处理。虽然这在处理高并发时可能会消耗更多资源,但它带来了无与伦比的灵活性。Apache拥有庞大的模块生态系统(如
mod_php
mod_rewrite
.htaccess
.htaccess
mod_php
总的来说,如果你追求极致的性能、高并发处理能力,并且乐于接受Nginx相对“简洁”的配置哲学,那么Nginx是绝佳选择。而如果你更看重灵活性、成熟的生态系统,或者你的应用依赖于
.htaccess
PHP版本的选择,这可不是小事,它直接关系到你的应用性能、安全性,以及最重要的——兼容性。我见过太多因为PHP版本升级导致网站“罢工”的案例,那种从天堂到地狱的感觉,真是刻骨铭心。
PHP版本选择的讲究:
如何避免常见的兼容性问题:
composer update --dry-run
composer why-not php:^8.x
说实话,PHP版本升级就像是一场“排雷”行动,需要细心、耐心和充分的准备。但一旦成功,你的应用将获得新生,运行得更稳定、更快,也更安全。
搭建好PHP环境只是第一步,要让它在生产环境中稳定、高效、安全地运行,还需要一系列的调优和加固措施。这就像造了一辆车,你还需要给它上保险、定期保养,并根据路况调整驾驶方式。
确保安全性:
X-Powered-By: PHP/8.x.x
php.ini
expose_php = Off
然后重启PHP-FPM服务。
php.ini
disable_functions
exec
shell_exec
system
passthru
proc_open
popen
dl
show_source
symlink
disable_functions = exec,shell_exec,system,passthru,proc_open,popen,dl,show_source,symlink,pcntl_exec,posix_kill,posix_setsid,posix_setuid,posix_setgid,posix_setpgid,posix_setrlimit,posix_setsid,posix_times,posix_ttyname,posix_uname
这个列表可以根据你的应用需求进行调整。
php.ini
upload_max_filesize
post_max_size
location ~ /\.ht
.htaccess
TRACE
OPTIONS
mysql_secure_installation
www-data
实现最佳性能:
php.ini
opcache.enable=1 opcache.memory_consumption=128 ; 根据你的内存大小和应用代码量调整 opcache.interned_strings_buffer=8 ; 字符串缓存 opcache.max_accelerated_files=10000 ; 缓存文件数量 opcache.revalidate_freq=0 ; 生产环境设置为0,避免频繁检查文件修改
设置
revalidate_freq=0
1
2
php-fpm.d/www.conf
pm = dynamic
pm.max_children
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
pm.max_requests
pm.max_children = 可用内存 / PHP进程平均内存占用
worker_processes
worker_connections
gzip on
sendfile on
client_max_body_size
WHERE
JOIN
确保PHP环境的安全性和性能是一个持续的过程,需要定期监控、分析和调整。没有一劳永逸的配置,只有不断地学习和实践。
以上就是如何在Linux系统上搭建PHP环境?一步步教你完成PHP开发环境配置的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号