VPS怎么配置PHP程序?从零开始的详细指南
在VPS(虚拟专用服务器)上配置PHP程序是搭建个人网站、Web应用或服务器的核心步骤,本文将以Linux系统(以Ubuntu为例)+ Nginx + PHP的组合为基础,详细讲解从环境准备到程序部署的全流程,涵盖PHP安装、配置、数据库连接、安全优化等关键环节,助你快速VPS配置PHP的方法。
前期准备:VPS基础环境搭建
在配置PHP程序前,需确保VPS满足以下基础条件:
- 系统选择:推荐使用Ubuntu 20.04/22.04或CentOS 7/8(本文以Ubuntu为例,命令兼容Debian系)。
- 远程连接:通过SSH工具(如Xshell、PuTTY)连接VPS,确保拥有
root
或sudo
权限。 - 更新系统:首次登录后,先更新系统软件包:
sudo apt update && sudo apt upgrade -y
安装Web服务器:Nginx(推荐)
PHP程序需通过Web服务器解析请求,Nginx因高性能、低资源占用成为主流选择(也可选Apache,本文以Nginx为例)。
安装Nginx
sudo apt install nginx -y
启动并设置开机自启
sudo systemctl start nginx # 启动Nginx sudo systemctl enable nginx # 设置开机自启
验证Nginx是否运行
访问VPS的公网IP(通过ifconfig
或ip addr
查看),若出现Nginx欢迎页,则安装成功。
安装PHP及常用扩展
根据程序需求安装PHP版本(如PHP 7.4/8.0/8.1,以PHP 8.1为例)及扩展(如MySQL、GD、CURL等)。
添加PHP源(Ubuntu默认源可能版本较旧,可通过Ondřej Surý源获取最新版本)
sudo apt install software-properties-common -y sudo add-apt-repository ppa:ondrej/php -y sudo apt update
安装PHP及扩展
sudo apt install php8.1-fpm php8.1-mysql php8.1-gd php8.1-curl php8.1-xml php8.1-mbstring php8.1-zip php8.1-opcache -y
php8.1-fpm
:PHP-FPM(FastCGI Process Manager),用于处理PHP请求;php8.1-mysql
:连接MySQL数据库的扩展;- 其他扩展:根据程序需求调整(如WordPress需
php-xml
、php-mbstring
等)。
启动PHP-FPM并设置自启
sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm
验证PHP安装
创建测试文件:
sudo nano /var/www/html/phpinfo.php
<?php phpinfo(); ?>
访问 http://你的VPS_IP/phpinfo.php
,若显示PHP版本信息,则安装成功。测试后建议删除该文件(安全风险):
sudo rm /var/www/html/phpinfo.php
配置Nginx支持PHP解析
PHP程序需通过Nginx将.php
请求转发给PHP-FPM处理,以下以配置网站域名为例(假设域名为example.com
)。
创建网站目录
sudo mkdir -p /var/www/example.com sudo chown -R $USER:$USER /var/www/example.com # 设置当前用户为目录所有者
创建Nginx配置文件
sudo nano /etc/nginx/sites-available/example.com ``` 根据实际域名和路径修改): ```nginx server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # PHP-FPM监听路径(需与php-fpm.conf一致) } location ~ /\.ht { deny all; } }
启用配置文件
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
测试Nginx配置并重启
sudo nginx -t # 测试配置是否正确 sudo systemctl restart nginx # 重启Nginx
上传PHP程序
通过SCP(如WinSCP)、FTP或Git将PHP程序源码上传至/var/www/example.com
目录。
# 假设程序在本地,通过SCP上传 scp -r /path/to/your/php-program root@VPS_IP:/var/www/example.com/
配置数据库(如MySQL/MariaDB)
多数PHP程序(如WordPress、Drupal)需数据库支持,以下以MariaDB(MySQL分支)为例。
安装MariaDB
sudo apt install mariadb-server mariadb-client -y sudo systemctl start mariadb sudo systemctl enable mariadb
初始化数据库安全配置
sudo mysql_secure_installation
根据提示操作:设置root密码、移除匿名用户、禁止root远程登录、移除测试数据库、刷新权限等。
创建数据库及用户
登录MariaDB:
sudo mysql -u root -p
执行以下SQL(替换dbname
、username
、password
为自定义值):
CREATE DATABASE dbname DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'username'@'localhost' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost'; FLUSH PRIVILEGES; EXIT;
配置PHP程序连接数据库
编辑程序配置文件(如WordPress的wp-config.php
),填入数据库信息:
define('DB_NAME', 'dbname'); define('DB_USER', 'username'); define('DB_PASSWORD', 'your_strong_password'); define('DB_HOST', 'localhost');
配置PHP-FPM优化性能
根据服务器配置调整PHP-FPM参数,提升程序运行效率。
编辑PHP-FPM配置文件
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
关键参数优化(示例,需根据实际内存/CPU调整)
pm = dynamic # 进程管理方式:动态(推荐) pm.max_children = 50 # 最大子进程数(根据内存计算:可用内存/每个进程占用内存,如1GB内存/20MB≈50) pm.start_servers = 5 # 启动时创建的进程数 pm.min_spare_servers = 5 # 最小空闲进程数 pm.max_spare_servers = 10 # 最大空闲进程数 pm.max_requests = 1000 # 每个进程最大请求数,防内存泄漏
重启PHP-FPM生效
sudo systemctl restart php8.1-fpm
安全配置(关键步骤)
设置文件权限
确保PHP程序目录权限正确(Web服务器用户为www-data
):
sudo chown -R www-data:www-data /var/www/example.com sudo find /var/www/example.com -type d -exec chmod 755 {} \; # 目录权限755 sudo find /var/www/example.com -type f -exec chmod 644 {} \; # 文件权限644
禁用危险函数(防止代码执行)
编辑PHP主配置文件:
sudo nano /etc/php/8.1/php.ini
找到disable_functions
项,添加危险函数(如exec
、shell_exec
、system
等):
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
配置HTTPS(推荐)
使用Let's Encrypt免费证书:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d example.com -d www.example.com
按提示完成证书申请,Nginx会自动配置HTTPS,证书到期前会自动续期(无需手动操作)。
还没有评论,来说两句吧...