准备工作
你需要:一台 Ubuntu 22.04 或 24.04 的云服务器(阿里云、腾讯云、AWS 均可),并能通过 SSH 登录。
ssh root@你的服务器IP
第一步:系统基础配置
更新系统
apt update && apt upgrade -y
设置时区
timedatectl set-timezone Asia/Shanghai
创建普通用户(不要直接用 root)
adduser deploy
usermod -aG sudo deploy
配置防火墙
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
第二步:安装 Nginx
apt install nginx -y
systemctl start nginx
systemctl enable nginx
安装完成后在浏览器访问你的服务器 IP,应该看到 Nginx 欢迎页面。
Nginx 关键目录
- 配置文件:
/etc/nginx/nginx.conf - 站点配置:
/etc/nginx/sites-available/ - 网站根目录:
/var/www/html/ - 日志:
/var/log/nginx/
测试配置是否正确
nginx -t
改完配置后务必先测试再重启!
第三步:安装 MySQL
apt install mysql-server -y
systemctl start mysql
systemctl enable mysql
安全初始化
mysql_secure_installation
按提示设置 root 密码、删除匿名用户、禁止远程 root 登录等。
创建数据库和用户
mysql -u root -p
CREATE DATABASE mywebsite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'webuser'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
第四步:安装 PHP
apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
检查 PHP 版本和运行状态:
php -v
systemctl status php*-fpm
第五步:配置 Nginx 虚拟主机
创建站点配置文件:
nano /etc/nginx/sites-available/mywebsite
写入以下配置:
server {
listen 80;
server_name your-domain.com www.your-domain.com;
root /var/www/mywebsite;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
启用站点并重启 Nginx:
ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
创建网站根目录并设置权限:
mkdir -p /var/www/mywebsite
chown -R www-data:www-data /var/www/mywebsite
第六步:配置 SSL 证书(HTTPS)
使用免费的 Let's Encrypt:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d your-domain.com -d www.your-domain.com
按提示输入邮箱并同意协议即可。证书有效期 90 天,certbot 会自动续期。
验证部署
在网站根目录创建测试文件:
echo "" > /var/www/mywebsite/index.php
chown www-data:www-data /var/www/mywebsite/index.php
浏览器访问 https://你的域名/,看到 PHP 信息页即表示部署成功!