阿里云Linux部署PHP项目:LNMP搭建+域名HTTPS+性能优化全流程

简介: 本文从零开始演示了在阿里云ECS Linux上部署PHP项目的全过程,涵盖环境搭建、代码部署、域名HTTPS以及性能优化与安全实践。关键技术点包括LNMP组合、Composer依赖管理、Nginx站点配置、SSL证书、CDN加速以及OPcache和Redis缓存。实际项目中,还可以进一步使用负载均衡SLB实现横向扩展,利用对象存储OSS分离用户上传文件,形成高可用、弹性伸缩的架构。借助阿里云生态,即使是个人开发者也能轻松搭建出媲美大型企业级的PHP应用环境。希望这篇指南能帮助你顺利上线项目,若遇到问题,可查阅阿里云官方文档或社区进一步探索。

一、环境准备与云服务器选型

在阿里云上部署PHP项目的第一步是拥有一台Linux云服务器(ECS)。登录阿里云官网进入弹性计算-云服务器ECS,根据项目规模选择合适的实例规格。对于初创项目或企业展示站,推荐选择突发性能实例t6共享标准型s6,搭配2核4G内存配置即可流畅运行中等流量的PHP应用。操作系统镜像选择Alibaba Cloud Linux 3CentOS 7.9,它们稳定且对PHP生态支持完善。存储方面,系统盘建议40GB高效云盘起步,后续可根据需要扩容或挂载数据盘。网络按流量计费即可,初期带宽选择5Mbps左右。

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

购买实例时务必设置好root密码并牢记,同时启用安全组。安全组是云服务器的虚拟防火墙,后续安装Web环境需要放行80(HTTP)、443(HTTPS)、22(SSH)以及3306(MySQL远程,如需要)等端口。可以在创建实例时直接勾选放行这些端口,或之后在安全组规则中添加入方向放行。

实例运行后,使用本地终端通过SSH登录:

ssh root@你的公网IP

首次登录会提示指纹确认,输入yes后输入密码即可完成连接。为了后续操作便利,推荐安装screentmux防止执行长任务时网络断开:

yum install -y screen

二、LNMP环境搭建

Linux + Nginx + MySQL + PHP 是目前最主流的PHP运行架构。下面以手动编译安装方式介绍稳定可控的生产环境部署,也可以使用阿里云市场的LNMP镜像或通过yum/apt快速安装,但手动安装能获得更好的版本控制能力。

1. 安装Nginx

先添加官方Nginx仓库以获得较新版本。创建/etc/yum.repos.d/nginx.repo文件,写入:

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key

保存后安装:

yum install -y nginx

启动并设置开机自启:

systemctl start nginx

systemctl enable nginx

此时访问服务器公网IP,应出现Nginx欢迎页。如果无法访问,请检查安全组是否放行了80端口。

2. 安装MySQL或对接阿里云RDS

自建MySQL适合开发测试,生产环境强烈推荐使用阿里云RDS MySQL版,可获得自动备份、读写分离、故障切换等能力。这里先演示自建MySQL的快速安装,以便本地开发:

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

rpm -ivh mysql80-community-release-el7-3.noarch.rpm

yum install -y mysql-community-server

启动MySQL并修改初始密码:

systemctl start mysqld

systemctl enable mysqld

# 查看临时密码

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

# 安全初始化

mysql_secure_installation

生产环境下,更规范的用法是在阿里云控制台购买RDS实例,选择MySQL 8.0,并创建数据库和账号。RDS内网地址可以在同地域ECS上低延迟、免流量访问,安全且高效。

3. 安装PHP 7.4及扩展

PHP版本建议选用7.4或8.0,兼顾性能与兼容性。通过Remi仓库安装:

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

yum-config-manager --enable remi-php74

yum install -y php php-fpm php-mysqlnd php-gd php-curl php-mbstring php-xml php-zip php-opcache php-redis

启动PHP-FPM:

systemctl start php-fpm

systemctl enable php-fpm

检查PHP版本:

php -v

接下来配置Nginx与PHP通信,编辑/etc/nginx/conf.d/default.conf,将PHP处理部分修改为:

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使配置生效:systemctl reload nginx。在/usr/share/nginx/html下创建info.php并写入<?php phpinfo(); ?>,访问该文件即可验证PHP解析成功。

三、部署PHP项目代码

常见的PHP项目如Laravel、ThinkPHP、WordPress等,部署步骤大同小异。推荐使用Git将代码拉取到服务器,并配合Composer管理依赖。

1. 安装Git和Composer

yum install -y git

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

php composer-setup.php

php -r "unlink('composer-setup.php');"

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

然后配置Composer镜像加速:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

2. 创建站点目录与克隆项目

规划项目存放于/data/wwwroot/project,设置权限:

mkdir -p /data/wwwroot/project

chown -R nginx:nginx /data/wwwroot

cd /data/wwwroot/project

git clone https://你的仓库地址 .

composer install --no-dev --optimize-autoloader

3. 配置环境参数

复制.env.example.env,修改数据库连接为RDS内网地址或自建MySQL的IP/账号密码。生成应用密钥:php artisan key:generate(Laravel示例)。设置storagebootstrap/cache目录写权限:chmod -R 775 storage bootstrap/cache

4. Nginx站点配置

创建一个新的Nginx配置文件/etc/nginx/conf.d/project.conf

server {

   listen 80;

   server_name 你的域名或IP;

   root /data/wwwroot/project/public;

   index index.php index.html;


   location / {

       try_files $uri $uri/ /index.php?$query_string;

   }


   location ~ \.php$ {

       fastcgi_pass   127.0.0.1:9000;

       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

       include        fastcgi_params;

   }


   location ~ /\.ht {

       deny all;

   }


   access_log /var/log/nginx/project-access.log;

   error_log  /var/log/nginx/project-error.log;

}

验证并重载:nginx -t && systemctl reload nginx。此时通过域名或IP即可访问PHP项目。

四、域名解析与HTTPS配置

生产环境必须启用HTTPS。推荐使用阿里云免费SSL证书和CDN。

1. 域名解析

在阿里云域名控制台,添加A记录将域名指向ECS公网IP。如使用CDN,则后续将域名CNAME到CDN地址。

2. 申请免费SSL证书

在阿里云数字证书管理服务中申请DV单域名免费证书,提交审核后通常几分钟签发。下载Nginx格式证书,得到.pem.key文件,上传至服务器/etc/nginx/ssl/目录。

3. 配置HTTPS

修改上一步的project.conf,添加443端口监听:

server {

   listen 443 ssl http2;

   server_name 你的域名;

   ssl_certificate     /etc/nginx/ssl/cert.pem;

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

   ... 其余配置同上 ...

}

server {

   listen 80;

   server_name 你的域名;

   return 301 https://$host$request_uri;

}

重载Nginx,全站HTTPS即生效。可配合HTTP/2提升加载速度。

五、性能优化与缓存策略

1. 启用PHP OPcache

OPcache通过缓存预编译的脚本字节码大幅提升PHP性能。编辑/etc/php.d/10-opcache.ini,建议参数:

opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=10000

opcache.revalidate_freq=60

opcache.fast_shutdown=1

重启PHP-FPM生效。

2. 使用Redis缓存

对于高频读取的数据和Session,可引入Redis。安装Redis服务器:yum install -y redis,启动并配置密码。PHP中通过predis或phpredis扩展连接。Laravel等项目只需修改.envCACHE_DRIVER=redisSESSION_DRIVER=redis即可。

3. 配置阿里云CDN

将静态资源(CSS/JS/图片)推送至阿里云CDNOSS+CDN。在CDN控制台添加加速域名,源站选择ECS的公网IP或OSS bucket,配置缓存规则,将动态文件(.php)设置为不缓存,静态文件设置较长的过期时间。启用CDN后修改项目中的资源URL指向CDN域名,可显著降低服务器负载并提升全国访问速度。

4. Nginx层面优化

开启gzip压缩:在nginx.conf的http块中加入:

gzip on;

gzip_min_length 1k;

gzip_comp_level 5;

gzip_types text/plain application/javascript text/css image/svg+xml;

gzip_vary on;

配置静态资源缓存:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {

   expires 30d;

   add_header Cache-Control "public, immutable";

}

六、安全加固与运维要点

1. 系统更新:定期执行yum update -y修复漏洞。

2. SSH防护:修改SSH默认22端口,禁用密码登录改用密钥对,或使用阿里云密钥对登录。

3. 防火墙:仅开放业务必需端口,管理后台地址可增加IP白名单限制。

4. 自动快照:在阿里云ECS控制台为系统盘和数据盘设置自动快照策略,以防数据丢失。

5. 日志与监控:开启阿里云云监控,对CPU、内存、磁盘使用率设置报警规则;Nginx和PHP错误日志定期检查。

6. 数据库备份:RDS自带自动备份;自建MySQL需配置mysqldump定时任务脚本,结合OSS存储备份文件。

七、总结

本文从零开始演示了在阿里云ECS Linux上部署PHP项目的全过程,涵盖环境搭建、代码部署、域名HTTPS以及性能优化与安全实践。关键技术点包括LNMP组合、Composer依赖管理、Nginx站点配置、SSL证书、CDN加速以及OPcache和Redis缓存。实际项目中,还可以进一步使用负载均衡SLB实现横向扩展,利用对象存储OSS分离用户上传文件,形成高可用、弹性伸缩的架构。借助阿里云生态,即使是个人开发者也能轻松搭建出媲美大型企业级的PHP应用环境。希望这篇指南能帮助你顺利上线项目,若遇到问题,可查阅阿里云官方文档或社区进一步探索。

相关文章
|
消息中间件 运维 Kafka
运维排查 | Systemd 之服务停止后状态为 failed
运维排查 | Systemd 之服务停止后状态为 failed
|
存储 负载均衡 监控
keepalived实现双vip部署
keepalived实现双vip部署
1086 1
|
缓存 负载均衡 前端开发
Nginx极简入门(九)Nginx实现动静分离!
前面介绍了Nginx的负载均衡,一般来说,都需要将动态资源和静态资源分开,这样可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间 。接下来介绍什么是动静分离以及如何使用Nginx实现动静分离。
Nginx极简入门(九)Nginx实现动静分离!
|
11月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
存储 负载均衡 架构师
Nginx极简入门(七)Nginx的日志管理及配置
前面讲了如何配置Nginx虚拟主机和Nginx负载均衡。我们知道日志对于Nginx非常重要。今天要说的是如何配置Nginx的日志。
Nginx极简入门(七)Nginx的日志管理及配置
|
4月前
|
人工智能 机器人 Linux
OpenClaw全自动漫剧工作流搭建:钉钉AI表格+Seedance2.0全流程部署指南
本文完整呈现基于OpenClaw(Clawdbot)搭建**全自动漫剧生成系统**的全流程,包含阿里云服务器、本地MacOS/Linux/Windows11三端部署方法、阿里云百炼Coding Plan免费大模型API配置、钉钉机器人接入、钉钉AI表格Skill集成、Seedance2.0视频生成联动,以及定时任务、数据抓取、脚本生成、视频输出的完整自动化方案。所有步骤均提供可直接复制的代码命令,全程无营销内容、无冗余步骤,适合零基础用户搭建属于自己的7×24小时漫剧自动化生产线。
3086 5
|
21天前
|
弹性计算 应用服务中间件 网络安全
阿里云Linux云服务器部署PHP项目:从零搭建到生产上线的完整实战指南
本文提供了一份从零开始、完整详尽的阿里云Linux云服务器PHP项目部署实战指南。文章首先指导读者完成ECS实例的选购与初始化,重点强调安全组配置中最小权限原则及关键端口开放。随后,详细对比并演示了LNMP(Linux+Nginx+MySQL+PHP)环境的两种搭建方式:通过阿里云扩展程序的一键快速部署与手动编译安装的定制化部署,并提供了完整的命令与配置示例。在代码部署环节,文章系统讲解了通过SFTP、Git及SCP等多种方式上传项目文件,并规范了Linux文件权限设置。接着,深入介绍了域名解析绑定与免费SSL证书的申请及Nginx HTTPS配置,实现网站的安全公网访问。针对生产环境,文章重
|
28天前
|
存储 前端开发 API
PHP在电子签名与文档签署系统(如合同管理)中的运用
1.电子签名系统的业务需求 企业合同、协议在线签署需要满足:文档生成(PDF)、签名位置定位、证书认证、签署流程管理(发起→签署→完成)、法律存证。PHP凭借丰富的PDF处理库(TCPDF、FPDI、dompdf)和成熟的框架,https://69kw.cn在电子签名后端开发中占据一席之地。
98 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL 高性能核心:MVCC 无锁并发机制解析
本文深入解析InnoDB的MVCC(多版本并发控制)机制:通过隐藏字段、Undo Log版本链与Read View可见性规则,实现无锁快照读,兼顾高并发与事务隔离。详解RC/RR级别差异、快照读vs当前读,并提醒Undo日志膨胀等实战坑点。