如何在Ubuntu上快速高效部署PHP项目,搭建一个高性能网站?
- 内容介绍
- 文章标签
- 相关推荐
快速高效部署PHP项目
1️⃣ 先把痛点列出来
- 手动安装 LAMP/LNMP 步骤太多,容易遗漏。说起来,
- 权限配置不当导致项目文件无法被 Web 服务器读取。
- 默认的 MySQL 安装缺少安全设置,容易被暴力。
- 没有统一脚本,后期维护成本高。
- 性能调优缺失,页面加载慢。
2️⃣ 一键式自动化脚本
将下面内容保存为 /usr/local/bin/init.sh 并赋予可执行权限:
#!/usr/bin/env bash
set -e
# 1) 更新程序 & 安装基础工具
apt update && apt upgrade -y
apt install -y software-properties-common curl gnupg ca-certificates lsb-release
# 2) 添加 Ondřej Surý 的 PHP PPA 并安装 PHP 8.3 + 常用
add-apt-repository ppa:ondrej/php -y && apt update
apt install -y php8.3 php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl \
php8.3-mbstring php8.3-xml
# 3) 安装 Nginx 并开启服务
apt install -y nginx && systemctl enable --now nginx
# 4) 安装并初始化 MySQL
apt install -y mariadb-server mariadb-client && systemctl enable --now mariadb
# 5) 对 MariaDB 做安全加固
mysql_secure_installation /dev/null
CREATE DATABASE IF NOT EXISTS my_project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'StrongPassword123!',GRANT ALL PRIVILEGES ON my_project.* TO 'my_user'@'localhost';FLUSH PRIVILEGES;EOF
# 7) 上传项目代码到 /var/www/html/my_project
mkdir -p /var/www/html/my_project && chown www-data:www-data /var/www/html/my_project
echo "部署完成!请自行上传项目代码并执行以下命令设置权限。"
运行脚本方式的观点是。
3️⃣ 手动部署步骤
a) 程序准备与更新
b) 安装 Nginx + PHP‑FPM
再看痛点,忘记开启 fastcgi 参数导致 .php 无法解析。
Nginx 配置示例:
⚠️ 注意:如果你使用的是 Apache,请确保已启用 mod_proxy_fcgi 并配置相应的虚拟主机。
再看错误排查,
-
Nginx 返回 “502 Bad Gateway” → 检查 PHP‑FPM 是否在运行:
- Nginx 找不到 fastcgi socket → 确认 socket 方法正确。或改为 TCP:fastcgi_pass 127.0.0.1:9000;
- .php 文件权限不足 → 设置 owner 为 www-data 且 group 可读写。
c) 安装 & 配置 MariaDB/MySQL
再看常见问题。 默认 root 密码为空,极易被攻击。请务必执行 mysql_secure_installation.
-
开启 root 密码:
- 创建业务数据库与使用者:
- 授予最小权限: 只给业务使用者访问其专属数据库的权利,避免越权操作。
d) 项目文件上传与权限设置
- 使用 SCP 或 rsync 上传代码: sftp 或 git clone 到 /var/www/html/my_project;
- 调整文件所有者与权限: // 所有者设为 www-data sudo chown -R www-data:www-data /var/www/html/my_project // 权限设置 sudo find /var/www/html/my_project -type f -exec chmod 644 {} \;sudo find /var/www/html/my_project -type d -exec chmod 755 {} \;
- ⚠️ 常见错误:目录或文件属主不一致 → 浏览器报错 “Permission denied”。请确认所有目录均归属 www-data,而且可读写。
E️⃣ 启用 HTTPS – 提高安全性 & SEO 分数
- AWS Certbot 安装: wget https://dl.eff.org/certbot-auto && chmod +x certbot-auto && ./certbot-auto --nginx
- 获取证书并自动重载 Nginx: # certbot --nginx –d yourdomain.com –non-interactive –agree-tos –email
- Mistake Alert: No TLSv1_0 or TLSv1_1 enabled. 确保证书链完整,否则浏览器会报“HTTPS not secure”。可以通过编辑 `/etc/nginx/snippets/ssl.conf` 强制使用 TLSv1_2+。
-
`ssl_protocols TLSv1_2 TLSv1_3;`,`ssl_ciphers HIGH:!aNULL:,MD5`;`ssl_prefer_server_ciphers on`;其实,`add_header Strict-Transport-Security max-age=31536000 always;
F️⃣ 性能调优小技巧
-
缓存
– 使用
redis或memcached存储 session、热点数据;– 对静态资源开启 gzip 与 long‑term cache header。
bash
注: 上述示例仅作参考,实际生产环境请根据业务规模、访问峰值做进一步调优。
以上即为一份从零到上线的完整 Ubuntu + Nginx + PHP + MariaDB 的快速部署教程,同时标出了常见痛点及对应方法。祝你部署愉快 🚀,
-
缓存
– 使用
快速高效部署PHP项目
1️⃣ 先把痛点列出来
- 手动安装 LAMP/LNMP 步骤太多,容易遗漏。说起来,
- 权限配置不当导致项目文件无法被 Web 服务器读取。
- 默认的 MySQL 安装缺少安全设置,容易被暴力。
- 没有统一脚本,后期维护成本高。
- 性能调优缺失,页面加载慢。
2️⃣ 一键式自动化脚本
将下面内容保存为 /usr/local/bin/init.sh 并赋予可执行权限:
#!/usr/bin/env bash
set -e
# 1) 更新程序 & 安装基础工具
apt update && apt upgrade -y
apt install -y software-properties-common curl gnupg ca-certificates lsb-release
# 2) 添加 Ondřej Surý 的 PHP PPA 并安装 PHP 8.3 + 常用
add-apt-repository ppa:ondrej/php -y && apt update
apt install -y php8.3 php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl \
php8.3-mbstring php8.3-xml
# 3) 安装 Nginx 并开启服务
apt install -y nginx && systemctl enable --now nginx
# 4) 安装并初始化 MySQL
apt install -y mariadb-server mariadb-client && systemctl enable --now mariadb
# 5) 对 MariaDB 做安全加固
mysql_secure_installation /dev/null
CREATE DATABASE IF NOT EXISTS my_project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'StrongPassword123!',GRANT ALL PRIVILEGES ON my_project.* TO 'my_user'@'localhost';FLUSH PRIVILEGES;EOF
# 7) 上传项目代码到 /var/www/html/my_project
mkdir -p /var/www/html/my_project && chown www-data:www-data /var/www/html/my_project
echo "部署完成!请自行上传项目代码并执行以下命令设置权限。"
运行脚本方式的观点是。
3️⃣ 手动部署步骤
a) 程序准备与更新
b) 安装 Nginx + PHP‑FPM
再看痛点,忘记开启 fastcgi 参数导致 .php 无法解析。
Nginx 配置示例:
⚠️ 注意:如果你使用的是 Apache,请确保已启用 mod_proxy_fcgi 并配置相应的虚拟主机。
再看错误排查,
-
Nginx 返回 “502 Bad Gateway” → 检查 PHP‑FPM 是否在运行:
- Nginx 找不到 fastcgi socket → 确认 socket 方法正确。或改为 TCP:fastcgi_pass 127.0.0.1:9000;
- .php 文件权限不足 → 设置 owner 为 www-data 且 group 可读写。
c) 安装 & 配置 MariaDB/MySQL
再看常见问题。 默认 root 密码为空,极易被攻击。请务必执行 mysql_secure_installation.
-
开启 root 密码:
- 创建业务数据库与使用者:
- 授予最小权限: 只给业务使用者访问其专属数据库的权利,避免越权操作。
d) 项目文件上传与权限设置
- 使用 SCP 或 rsync 上传代码: sftp 或 git clone 到 /var/www/html/my_project;
- 调整文件所有者与权限: // 所有者设为 www-data sudo chown -R www-data:www-data /var/www/html/my_project // 权限设置 sudo find /var/www/html/my_project -type f -exec chmod 644 {} \;sudo find /var/www/html/my_project -type d -exec chmod 755 {} \;
- ⚠️ 常见错误:目录或文件属主不一致 → 浏览器报错 “Permission denied”。请确认所有目录均归属 www-data,而且可读写。
E️⃣ 启用 HTTPS – 提高安全性 & SEO 分数
- AWS Certbot 安装: wget https://dl.eff.org/certbot-auto && chmod +x certbot-auto && ./certbot-auto --nginx
- 获取证书并自动重载 Nginx: # certbot --nginx –d yourdomain.com –non-interactive –agree-tos –email
- Mistake Alert: No TLSv1_0 or TLSv1_1 enabled. 确保证书链完整,否则浏览器会报“HTTPS not secure”。可以通过编辑 `/etc/nginx/snippets/ssl.conf` 强制使用 TLSv1_2+。
-
`ssl_protocols TLSv1_2 TLSv1_3;`,`ssl_ciphers HIGH:!aNULL:,MD5`;`ssl_prefer_server_ciphers on`;其实,`add_header Strict-Transport-Security max-age=31536000 always;
F️⃣ 性能调优小技巧
-
缓存
– 使用
redis或memcached存储 session、热点数据;– 对静态资源开启 gzip 与 long‑term cache header。
bash
注: 上述示例仅作参考,实际生产环境请根据业务规模、访问峰值做进一步调优。
以上即为一份从零到上线的完整 Ubuntu + Nginx + PHP + MariaDB 的快速部署教程,同时标出了常见痛点及对应方法。祝你部署愉快 🚀,
-
缓存
– 使用

