阿里云Linux服务器PHP项目完整部署指南:从环境搭建到安全上线

简介: 本文提供了一份完整的阿里云Linux服务器PHP项目部署实战指南。首先需购买并初始化ECS实例,推荐使用Alibaba Cloud Linux或CentOS系统,并在安全组中开放22、80、443等必要端口。接着通过yum或dnf包管理器手动搭建LAMP/LNMP运行环境,涵盖Nginx/Apache、MySQL和PHP的安装与配置。然后详细讲解代码上传方式(SFTP/SCP)、文件权限设置(644/755/775)及MySQL数据库创建与导入。之后介绍域名解析与HTTPS证书配置,实现通过域名安全访问网站。最后给出安全加固措施,包括修改SSH端口、禁用危险PHP函数、配置防火墙及性能优化建议

在阿里云Linux服务器上部署PHP项目,是一项既基础又关键的云端开发技能。掌握了这套流程,无论是搭建个人博客、企业官网,还是部署复杂的PHP商业应用,都能做到心中有数。本文将从零开始,手把手带你完成从服务器准备到项目上线的完整流程。

一、服务器准备与初始化

需要先登录阿里云控制台,点击:阿里云控制台

1.1 选购ECS实例

登录阿里云控制台,进入ECS管理页面,点击创建实例。配置方面,新手推荐选择按量付费先进行测试。操作系统建议选用Alibaba Cloud Linux 3/2CentOS 7.x,这两个系统在阿里云生态中有良好的兼容性和长期支持。内存方面,如果运行的是ThinkPHP、Laravel等现代框架,建议至少选择2 GiB以上;小型项目1 GiB也能勉强运行,但内存吃紧时PHP-FPM容易崩。

1.2 安全组规则配置

安全组是阿里云服务器的虚拟防火墙,遵循最小授权原则——只开放业务必需的端口[reference:0]。必须放行的端口有三个:

  • 22端口(SSH):用于远程登录服务器,强烈建议只授权运维人员的固定公网IP访问,绝不要开放给0.0.0.0/0,否则每天会被数万次暴力破解攻击轮番轰炸[reference:1]。
  • 80端口(HTTP):Web服务对外访问端口,可以开放给0.0.0.0/0[reference:2]。
  • 443端口(HTTPS):加密Web服务端口,同样开放给0.0.0.0/0[reference:3]。

配置路径:ECS控制台 → 网络与安全 → 安全组 → 管理规则 → 添加安全组规则。选择自定义TCP,端口范围按需填写,授权对象根据端口安全性选择具体IP或0.0.0.0/0[reference:4]。

1.3 SSH连接服务器

获取服务器的公网IP地址和root密码(或密钥对),通过SSH工具连接到服务器:

ssh root@你的服务器公网IP

连接成功后,建议先执行系统更新:

yum update -y   # Alibaba Cloud Linux / CentOS

apt update && apt upgrade -y   # Ubuntu

二、搭建PHP运行环境

PHP项目的运行环境主要有两大选择:LNMP(Linux + Nginx + MySQL + PHP)LAMP(Linux + Apache + MySQL + PHP)[reference:5]。Nginx在处理高并发静态资源时性能更优,Apache在.htaccess配置和模块兼容性上有一定优势。对于中小型PHP项目,LNMP已成为主流方案。两种方案的手动部署流程如下,可根据个人偏好选择。

2.1 LNMP方案:安装Nginx

Nginx作为高性能Web服务器,以事件驱动架构著称,处理高并发连接时内存占用极低。执行以下命令安装:

yum install -y epel-release   # 先安装EPEL仓库

yum install -y nginx

systemctl start nginx

systemctl enable nginx

2.2 LAMP方案:安装Apache

若更倾向于Apache,可执行以下命令安装:

yum install -y httpd httpd-manual mod_ssl mod_perl

systemctl start httpd

systemctl enable httpd

安装完成后,通过 httpd -v 可查看Apache版本[reference:6]。

2.3 安装PHP及PHP-FPM

现代PHP项目通常配合PHP-FPM(FastCGI Process Manager)使用,这是一个高性能的PHP FastCGI实现,专门用于处理PHP动态请求。推荐使用Remi仓库安装较新版本的PHP[reference:7]:

# 安装EPEL和Remi仓库

yum install -y epel-release

yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm


# 启用PHP 8.0仓库

yum-config-manager --enable remi-php80


# 安装PHP及常用扩展

yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd \

php-mbstring php-curl php-xml php-bcmath


# 启动PHP-FPM并设置开机自启

systemctl start php-fpm

systemctl enable php-fpm

安装完成后用 php -v 查看版本信息。如果项目需要Composer管理依赖,可额外安装:

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

2.4 安装MySQL数据库

大多数PHP网站需要数据库支持。这里以安装MySQL为例:

# 添加MySQL官方源

rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm


# 安装MySQL服务

yum install -y mysql-server


# 启动并设置开机自启

systemctl start mysqld

systemctl enable mysqld

获取MySQL root用户的初始临时密码:

grep 'temporary password' /var/log/mysqld.log

然后用临时密码登录,并按密码策略要求(至少8个字符,包含大写字母、小写字母、数字和特殊字符)设置新密码[reference:8]。

三、Nginx配置PHP支持

安装了Nginx和PHP-FPM之后,最关键的一步是配置Nginx,让它能够将PHP请求转发给PHP-FPM处理。Nginx的主配置文件位于 /etc/nginx/nginx.conf,但更推荐在 /etc/nginx/conf.d/ 目录下为每个站点创建独立的配置文件[reference:9]。

创建站点配置文件:

vim /etc/nginx/conf.d/yourdomain.conf

填入以下基础配置(以域名 yourdomain.com 为例):

server {

   listen 80;

   server_name yourdomain.com www.yourdomain.com;

   root /var/www/yourdomain;

   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-fpm/www.sock;

       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

       include fastcgi_params;

   }


   location ~ /\.ht {

       deny all;

   }

}

配置要点解读:

  • listen 80:Nginx监听80端口,处理HTTP请求[reference:10]。
  • server_name:指定该站点绑定的域名,支持多个域名用空格分隔。
  • root:网站文件的根目录,所有HTML、PHP、CSS、JS等文件都放在此目录下。
  • location ~ \.php$:这是一个正则匹配块,凡是后缀为.php的请求都会进入这里,然后通过fastcgi_pass参数传递给PHP-FPM处理[reference:11]。
  • fastcgi_pass unix:/run/php-fpm/www.sock:指定PHP-FPM监听的Unix Socket路径。也可以在php-fpm.conf中配置TCP端口方式,但Socket方式性能更优。

测试配置是否有语法错误并重新加载Nginx:

nginx -t

systemctl reload nginx

在网站根目录下创建一个 info.php 文件测试PHP是否正常工作:

<?php

phpinfo();

?>

访问 http://你的服务器IP/info.php,能看到PHP信息页面说明配置成功[reference:12]。

四、PHP项目代码部署

4.1 上传代码到服务器

PHP代码文件通常上传到Nginx配置的 root 目录下(例如 /var/www/yourdomain)。上传方式主要有两种:

  • SFTP方式:使用FileZilla等工具,通过SFTP协议连接服务器,将本地项目文件夹拖拽上传到目标目录[reference:13]。
  • 命令行方式:使用scp命令从本地上传,适合掌握命令行操作的开发者[reference:14]:

scp -r 本地项目文件夹路径 root@服务器IP:/var/www/yourdomain

4.2 文件权限设置

文件权限设置是PHP项目部署中极易被忽视但极其重要的环节。权限配置不当,轻则网站无法写入缓存日志,重则被恶意用户利用上传后门木马。建议的权限方案如下:

  • 普通PHP文件:权限设为644,所有者可读写,其他用户只读[reference:15]。
  • 配置文件(含数据库密码等敏感信息):权限设为600,仅所有者可读写,其他用户无任何访问权限[reference:16]。
  • 网站根目录及所有子目录:权限设为755,所有者可读写执行,其他用户只能读取和执行[reference:17]。
  • 上传目录(用户可上传文件的目录):需要赋予Web服务器用户的写入权限,可设为775,但必须同时配置禁止直接访问该目录的PHP文件,避免上传木马后门[reference:18][reference:19]。

实际项目中,代码所有者和Web服务器运行用户通常是不同的。建议将代码所有者设为部署用户(如root),将Web服务用户(Nginx通常运行在nginx用户下,Apache通常运行在apache或www-data用户下)加入同一用户组,然后设置目录权限为770(所有者与组可读写执行,其他用户无任何权限)[reference:20]。

修改目录所有者和组的命令示例:

chown -R root:nginx /var/www/yourdomain   # 设置所有者为root,组为nginx

chmod -R 755 /var/www/yourdomain           # 设置目录权限

chmod -R 644 /var/www/yourdomain/*.php     # 设置PHP文件权限

chmod 775 /var/www/yourdomain/uploads      # 上传目录单独设置

4.3 创建MySQL数据库并导入数据

使用MySQL命令行创建项目所需的数据库和用户:

# 登录MySQL

mysql -u root -p


# 创建数据库

CREATE DATABASE yourdbname;


# 创建用户并授权(将密码替换为强密码)

CREATE USER 'youruser'@'localhost' IDENTIFIED BY 'yourpassword';

GRANT ALL PRIVILEGES ON yourdbname.* TO 'youruser'@'localhost';

FLUSH PRIVILEGES;


# 导入SQL数据文件

USE yourdbname;

SOURCE /path/to/your/database.sql;

导入完成后,修改项目中的数据库配置文件(如 config.php),将数据库名、用户名和密码更新为刚才创建的内容[reference:21]。

五、域名绑定与SSL证书配置

5.1 域名解析

要让用户通过域名访问网站,需要在阿里云DNS控制台添加A记录,将域名解析到ECS服务器的公网IP[reference:22]:

  1. 登录阿里云控制台,进入域名管理页面。
  2. 找到目标域名,点击解析设置。
  3. 点击添加记录:记录类型选A记录,主机记录填@(表示主域名,如example.com)或www(表示子域名如www.example.com),记录值填写ECS实例的公网IP地址。
  4. 保存设置后,等待DNS解析生效(通常几分钟到几小时)[reference:23]。

5.2 申请SSL证书并启用HTTPS

HTTPS已是现代网站的标配,不仅能加密传输数据,还能提升搜索引擎排名。阿里云提供免费的一年期SSL证书,申请流程如下:

进入阿里云SSL证书控制台 → 购买证书 → 选择免费型DV证书 → 绑定域名 → 完成域名验证(DNS验证或文件验证)→ 下载Nginx版本的证书文件(包含.crt.key两个文件)。

将证书文件上传到服务器的证书存放目录(如 /etc/nginx/ssl/),然后修改Nginx站点配置文件,添加443端口的HTTPS监听[reference:24]:

server {

   listen 80;

   server_name yourdomain.com www.yourdomain.com;

   return 301 https://$host$request_uri;   # 强制跳转HTTPS

}


server {

   listen 443 ssl;

   server_name yourdomain.com www.yourdomain.com;

   root /var/www/yourdomain;

   index index.php index.html;


   ssl_certificate /etc/nginx/ssl/yourdomain.crt;

   ssl_certificate_key /etc/nginx/ssl/yourdomain.key;


   location / {

       try_files $uri $uri/ =404;

   }


   location ~ \.php$ {

       include snippets/fastcgi-php.conf;

       fastcgi_pass unix:/run/php-fpm/www.sock;

       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

       include fastcgi_params;

   }

}

六、性能优化与安全加固

完成基础部署后,还需要进行以下优化和加固措施,让网站跑得更稳、更安全:

6.1 PHP配置优化

编辑 /etc/php.ini 文件进行调整[reference:25]:

memory_limit = 256M               # 根据服务器内存调整,不能超过物理内存

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

display_errors = Off              # 生产环境必须关闭,防止泄露路径信息

upload_max_filesize = 50M         # 根据业务需求调整文件上传大小

post_max_size = 50M               # POST数据大小,应大于等于upload_max_filesize

max_execution_time = 300          # 单个脚本最大执行时间

max_input_time = 300

启用并配置OPcache(字节码缓存),可大幅提升PHP执行效率:

opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

6.2 PHP-FPM进程管理优化

编辑 /etc/php-fpm.d/www.conf

pm = dynamic                                      # 动态进程管理模式

pm.max_children = 50 - 200                        # 最大子进程数

pm.start_servers = 8                              # 起始进程数,建议设为CPU核心数的4倍

pm.min_spare_servers = 4                          # 最小空闲进程数

pm.max_spare_servers = 8                          # 最大空闲进程数,建议设为CPU核心数的1-2倍

pm.max_requests = 1000                            # 每个子进程处理完1000个请求后自动销毁,防止内存泄漏

6.3 安全加固措施

  • 禁用危险PHP函数:在 php.inidisable_functions 中加入高危函数:

disable_functions = exec,system,passthru,shell_exec,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

  • 修改SSH默认端口:编辑 /etc/ssh/sshd_config,将 Port 22 改为自定义端口(如 Port 2222),并禁用root远程登录:PermitRootLogin no。重启SSH服务后使用新端口登录[reference:26]。
  • 配置系统防火墙:开放自定义SSH端口、80、443端口,关闭其他非必要端口:

firewall-cmd --permanent --zone=public --add-port=2222/tcp

firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https

firewall-cmd --reload

七、常见错误排查

7.1 浏览器访问显示502 Bad Gateway

这是Nginx无法连接到PHP-FPM的表现。检查PHP-FPM服务是否正常运行:systemctl status php-fpm。同时检查Nginx配置中的fastcgi_pass地址是否与PHP-FPM实际监听的地址一致(Socket路径或端口号)。

7.2 访问出现403 Forbidden

通常是由于文件权限不足或SELinux策略阻止。检查网站根目录和文件的权限是否正确(755/644),以及SELinux状态:getenforce。临时关闭SELinux测试:setenforce 0,若问题解决则需为Web目录配置正确的SELinux上下文。

7.3 数据库连接失败

检查MySQL服务是否启动:systemctl status mysqld。确认项目中配置文件内的数据库用户名、密码、数据库名以及端口号(默认3306)是否正确。如果数据库和应用位于不同实例,还需检查安全组中3306端口的入方向规则是否开放。

7.4 PHP文件直接下载而不执行

说明Nginx没有正确识别PHP请求,最常见的原因是配置文件中缺少location ~ \.php$处理块,或者fastcgi_pass的地址配置错误。使用nginx -t检查配置文件语法,确认没有报错后重载Nginx:systemctl reload nginx

八、总结

阿里云Linux服务器部署PHP项目,核心流程可以概括为:选购ECS并配置安全组 → SSH连接服务器 → 搭建LNMP/LAMP环境 → 配置Nginx/Apache支持PHP → 上传代码并设置文件权限 → 创建数据库并导入数据 → 域名解析与HTTPS配置 → 安全加固与性能优化。每条环节都有讲究,安全组不能随意全开放,文件权限不能一刀切设为777,PHP-FPM进程数要根据服务器配置合理设置,这些细节决定了网站能否稳定安全地运行。按照本文的步骤一步步操作,就能在阿里云上顺利完成PHP项目的生产级部署。

相关文章
|
5天前
|
SQL JSON 关系型数据库
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
阿里云AnalyticDB MySQL版是PB级云原生实时数据仓库,首创多模态统一分析引擎,单SQL原生支持SQL分析、向量检索、全文搜索与JSON分析,替代3–5套独立系统,综合成本降50%+,运维复杂度降80%,适用于AI+数据融合、多源异构统一查询等企业级场景。
134 17
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
|
5天前
|
API
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态。
|
3月前
|
存储 弹性计算 网络协议
2026年阿里云服务器ECS购买自定义购买全攻略:从入门到精通
本文为2026阿里云ECS自定义购买全指南,涵盖核心价值、完整流程、配置详解(付费类型、地域网络、实例规格、存储、带宽安全组等)、后续部署及高频FAQ,助用户灵活定制、安全高效上云。
|
3月前
|
安全 数据建模 测试技术
2026阿里云SSL证书价格全解析:免费版与付费版对比及申请指南
阿里云SSL证书提供免费DV单域名(Digicert,3个月)及多品牌付费方案(DV/OV/EV),覆盖测试到金融级安全需求。2026年价格透明,含WoSign、GlobalSign等国际品牌,新老用户享5折起优惠,申请流程一键便捷。(239字)
|
3月前
|
域名解析 前端开发 数据可视化
如何创建一个网站?初学者的分步指南
本指南将网站创建分为五个核心阶段:规划准备、域名服务器选择、建站方式确定、内容填充以及测试发布。即使零基础,也能按步骤搭建个人博客、企业官网或电商网站,并持续运营维护。
1513 9
|
21小时前
|
人工智能 JavaScript 前端开发
Codex新手入门
Codex CLI是OpenAI推出的开源终端AI编程助手,基于Rust构建,响应超快(240+ tokens/s),成本仅Claude Code的1/3。支持文件系统操作、并行任务与模型切换,兼顾安全沙箱与高效开发,专为快速原型设计而生。
|
20小时前
|
存储 Cloud Native 关系型数据库
数据仓库弹性扩缩容实践:阿里云 AnalyticDB MySQL 按需付费方案详解
阿里云 AnalyticDB MySQL 版是业界领先的 PB 级实时数据仓库,支持秒级弹性扩缩容、按需付费模式,在分时弹性场景下可实现 30%~70% 的成本降低。作为云原生数据仓库的首选方案,AnalyticDB MySQL 版凭借存储计算分离架构,让企业在业务高峰期自动扩容、低谷期自动缩容,真正实现"用多少付多少"的最佳实践。
38 1
|
21小时前
|
人工智能 前端开发 数据库
给在校生的一份 AI 使用小指南
今天这篇文章主要面向在校同学,聊聊怎么选 AI 工具,以及怎么把它们用在学习、写代码和做项目里。 我们先从最基础的地方开始。它不算复杂教程,也不会要求你马上学会一堆工具。先把常见 AI 工具分分类,再聊聊学生开发者可以怎么更有效地使用它们。
|
20小时前
|
人工智能 移动开发 小程序
AI智能问诊如何赋能互联网医院系统?开发思路与架构解析
本文探讨AI智能问诊在互联网医院中的落地实践,聚焦APP、小程序、H5等多端应用,解析预问诊、智能分诊等核心场景及独立服务架构设计,强调AI需深度融入诊疗流程,兼顾效率、安全与稳定性。
|
15小时前
|
机器学习/深度学习 数据采集 人工智能
无人机战场侦察6类军事目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含9978张无人机航拍图像,涵盖BRT、DOM、DST、GHM、HMN、LBT六类军事目标,YOLO格式标注,含训练/验证/测试集划分,专为YOLO等模型训练优化,适用于战场侦察、小目标检测与态势感知研究。(239字)
35 0