博客从 Ubuntu14.0 迁移到 Ubuntu24.0 流程
一、迁移目的
博客是 10年前用PHP7.0(laraval框架)在阿里云上搭建的,服务器配置 1C 2G 30G,每年 750元,费用很贵,对老用户一点优惠也没有;
二、迁移步骤
使用 Docker 进行构建应用服务和相关组件;
root@dev-server:~# cd /var/www/
root@dev-server:/var/www# ls -l
total 24
-rw-r--r-- 1 root root 1129 Nov 13 17:56 docker-compose.yml
-rw-r--r-- 1 root root 236 Nov 13 17:55 Dockerfile
-rw-r--r-- 1 root root 236 Nov 13 17:54 Dockerfile-php78
-rw-r--r-- 1 root root 461 Nov 13 17:59 nginx.conf
-rw-r--r-- 1 root root 140 Nov 13 16:02 php.ini
drwxr-xr-x 15 root www-data 4096 Nov 13 16:28 road2chain
root@dev-server:/var/www#
docker-compose.yml 文件:
version: '3.8'
services:
php:
build: .
image: myphp:7.0-fpm-pdo_mysql
container_name: php7-fpm
restart: always
volumes:
- ./road2chain:/var/www/html
- ./php.ini:/usr/local/etc/php/php.ini
working_dir: /var/www/html
networks:
- backend
nginx:
image: nginx:1.21
container_name: nginx-php7
restart: always
ports:
- "80:80"
volumes:
- ./road2chain:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- backend
mysql:
image: mysql:5.7
container_name: mysql57
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: xxxxxxx
MYSQL_DATABASE: road2chain
volumes:
- /data/mysql57/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
- /data/mysql57/data:/var/lib/mysql
- /data/mysql57/logs:/var/log/mysql
networks:
- backend
redis:
image: redis:5.0
container_name: redis5
ports:
- "6379:6379"
restart: always
networks:
- backend
networks:
backend:
driver: bridge
Dockerflie 文件(主要用来构建 mysql-pdo扩展到 php7.0-fpm 镜像)
root@dev-server:/var/www# cat Dockerfile
# 使用官方 PHP 7.0 FPM 镜像, 只能是 php7.0, 如果过高的版本 如 php7.4 就会出现语法报错;
FROM php:7.0-fpm
# 安装 MySQL PDO 扩展
RUN docker-php-ext-install pdo_mysql
# 可选:拷贝自定义 php.ini
COPY php.ini /usr/local/etc/php/php.ini
# 设置工作目录
WORKDIR /var/www/html
nginx.conf 文件
root@dev-server:/var/www# cat nginx.conf
server {
listen 80;
server_name digtime.cn www.digtime.cn;
root /var/www/html/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
location ~ /\.ht {
deny all;
}
}
php.ini 文件:
root@dev-server:/var/www# cat php.ini
date.timezone = Asia/Shanghai
memory_limit = 512M
upload_max_filesize = 50M
post_max_size = 50M
display_errors = On
error_reporting = E_ALL
构建镜像命令
# 构建含有 pdo-mysql 的php7.0 镜像,只能是 php7.0, 如果过高的版本 如 php7.8 就会出现语法报错;
docker compose build php
启动服务
cd /var/www
# 启动
docker compose up -d
# 停止
docker compose down
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)