1.
2.
ssh -i ~/.ssh/id_rsa ubuntu@your_ip。sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Asia/Tokyo
sudo swapoff -a
3.
sudo adduser deployer; sudo usermod -aG sudo deployer。sudo mkdir -p /home/deployer/.ssh; sudo sh -c 'cat >> /home/deployer/.ssh/authorized_keys' ; sudo chown -R deployer:deployer /home/deployer/.ssh; sudo chmod 700 /home/deployer/.ssh。4.
sudo apt install -y apache2 mariadb-server php php-mysql libapache2-mod-php php-cli php-curl php-xml php-mbstring。sudo systemctl enable --now apache2 mariadb。
5.
sudo mysql_secure_installation,按提示设置 root 密码、移除匿名用户、禁止远程 root、删除测试数据库并重载权限。sudo mysql -u root -p
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'%' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
6.
sudo mkdir -p /var/www/example.com/public_html; sudo chown -R $USER:$USER /var/www/example.com/public_html。sudo a2ensite example.com.conf; sudo a2dissite 000-default.conf; sudo systemctl reload apache2。phpinfo() 页面并通过浏览器访问。
7.
sudo apt install -y certbot python3-certbot-apache。sudo certbot --apache -d example.com -d www.example.com,按提示选择重定向 HTTP 到 HTTPS。sudo certbot renew --dry-run。
8.
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable。sudo apt install -y fail2ban,可保护 SSH 与 Apache 登录。
9.
sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io。sudo apt install -y docker-compose-plugin
docker compose version。sudo usermod -aG docker $USER(登出再登录生效)。
10.
project/ docker-compose.yml web/ (PHP code) db-data/ (数据库卷)- docker-compose.yml 示例(简化):
version: "3.8"
services:
db:
image: mariadb:10.6
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: appdb
MYSQL_USER: appuser
MYSQL_PASSWORD: strongpassword
volumes:
- db-data:/var/lib/mysql
web:
image: php:8.1-apache
volumes:
- ./web:/var/www/html
ports:
- "8080:80"
volumes:
db-data:
- 操作:将现有 PHP 代码拷贝到 ./web,执行 docker compose up -d --build,访问服务器IP:8080 验证。
11.
12.
mysqldump -u root -p appdb > dump.sql,将 dump 拷贝到服务器后用容器执行导入 docker exec -i db_container mysql -u root -papp rootpass appdb < dump.sql。docker compose logs -f、重启服务 docker compose restart。
13.
docker stats 观察资源,建议上线后接入轻量监控(Grafana/Prometheus 或云厂商监控)。14.
sudo certbot --apache -d yourdomain 获取并自动配置 SSL。若使用容器化请将证书挂载到 Nginx 容器并配置 nginx 监听 443。
15.
16.