在Linux环境下搭建PHP服务器是Web开发中的常见需求,通常以LAMP(Linux、Apache、MySQL、PHP)或LNMP(Linux、Nginx、MySQL、PHP)架构为基础,以下以Ubuntu系统为例,详细介绍使用Apache和MySQL搭建PHP服务器的完整步骤,包括环境准备、安装配置、测试验证及常见问题处理。

环境准备
在开始搭建前,确保系统已更新至最新状态,并具备基本的命令行操作能力,以Ubuntu 22.04为例,执行以下命令更新系统软件包列表:
sudo apt update && sudo apt upgrade -y
根据需求安装必要工具,如curl、wget等:
sudo apt install -y curl wget unzip
安装Apache服务器
Apache是最流行的Web服务器之一,支持PHP模块的动态加载。
安装Apache
sudo apt install -y apache2
安装完成后,系统会自动启动Apache服务,可通过以下命令检查服务状态:

sudo systemctl status apache2
若显示active (running),则表示服务正常运行。
配置防火墙(可选)
若开启了UFW防火墙,需允许HTTP(80端口)和HTTPS(443端口)流量:
sudo ufw allow 'Apache Full' sudo ufw reload
测试Apache访问
在浏览器中输入服务器IP地址(如http://192.168.1.100),若显示Apache默认欢迎页面,则安装成功。
安装MySQL数据库
PHP应用程序通常需要数据库支持,MySQL是常用的关系型数据库。
安装MySQL服务器
sudo apt install -y mysql-server
安装完成后,启动MySQL服务并设置开机自启:
sudo systemctl start mysql sudo systemctl enable mysql
安全配置MySQL
执行安全脚本,设置root密码、移除匿名用户、禁止远程root登录等:
sudo mysql_secure_installation
根据提示操作,建议设置强密码并开启密码验证。
创建PHP数据库及用户
登录MySQL控制台:
sudo mysql -u root -p
输入root密码后,执行以下SQL命令创建数据库(如php_db)和用户(如php_user),并授予相应权限:
CREATE DATABASE php_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'php_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON php_db.* TO 'php_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
安装PHP及扩展
PHP是服务器端脚本语言,需安装PHP本身及与MySQL、Apache集成的扩展。
安装PHP及常用扩展
sudo apt install -y php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip
libapache2-mod-php:使Apache支持PHP模块;php-mysql:PHP与MySQL交互的扩展;- 其他扩展(如
php-gd、php-xml)为常用功能依赖。
配置PHP版本(可选)
若系统安装了多个PHP版本,可通过以下命令切换默认版本:
sudo update-alternatives --config php
测试PHP安装
创建PHP测试文件:
sudo nano /var/www/html/info.php ``` 并保存: ```php <?php phpinfo(); ?>
在浏览器中访问http://服务器IP/info.php,若显示PHP配置信息页面,则安装成功,测试完成后建议删除该文件(安全风险):
sudo rm /var/www/html/info.php
配置虚拟主机(可选)
若需部署多个网站,可配置虚拟主机,以域名example.com为例:
创建网站目录
sudo mkdir -p /var/www/example.com sudo chown -R $USER:$USER /var/www/example.com
创建虚拟主机配置文件
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
启用虚拟主机并重启Apache
sudo a2ensite example.com.conf sudo a2dissite 000-default.conf # 可选:禁用默认站点 sudo systemctl reload apache2
测试虚拟主机
在/var/www/example.com目录下创建index.php文件,输入内容<?php echo "Hello, example.com!"; ?>,通过浏览器访问域名即可。
常见问题处理
-
Apache无法解析PHP文件:
检查PHP模块是否启用:sudo a2enmod phpX.X(X.X为PHP版本);
确认Apache配置文件中PHP处理顺序(如DirectoryIndex index.php index.html)。 -
MySQL连接失败:
检查MySQL服务状态:sudo systemctl status mysql;
确认数据库用户权限及密码是否正确;
检查PHP配置文件php.ini中的mysqli.default_socket是否指向MySQL socket路径(默认为/var/run/mysqld/mysqld.sock)。
相关问答FAQs
问题1:如何更改PHP的默认上传文件大小限制?
解答:修改PHP配置文件php.ini(通常位于/etc/php/X.X/apache2/php.ini),调整以下参数后重启Apache:
upload_max_filesize = 32M post_max_size = 32M max_execution_time = 300
可通过phpinfo()查看修改是否生效。
问题2:如何启用HTTPS(SSL证书)?
解答:可使用Let's Encrypt免费证书,安装Certbot:
sudo apt install -y certbot python3-certbot-apache
执行命令获取证书并配置Apache:
sudo certbot --apache -d example.com -d www.example.com
根据提示选择自动重定向HTTP到HTTPS,证书到期前Certbot会自动续期。
