记一次帮别人搬迁全景服务器到ctyun,原服务器在腾讯续费八千多,在ctyun买了一个s6 485配置的机器5年3000,于是搬迁到ctyun了。服务器数据盘有大概480g全景图,不准备在ctyun买数据盘存储了,500g数据盘5年价格3000多。在腾讯领了一个半年1t试用cos,把数据备份了一份到cos,跑了约一天全部上传完成。由于之前全景图在七牛,浏览的时候回源本地数据盘的图片,导致七牛的数据不完整的,决定再传一份到七牛,传了约1天跑了10%数据,感觉上传较慢,由于是在服务器到期前两三天搬迁的,服务器停机也没上传完成。我就把七牛的回源地址指向cos解决。此外数据库的数据有一部分是指向本地路径,此时本地数据已经删除了,cos有完整备份,本地图片nginx代理访问cos解决。
配置本地图片代理访问cos
# 设置目标 COS 信息 set $cos_bucket "xxx"; set $cos_region "ap-xxx"; set $cos_host "${cos_bucket}.cos.${cos_region}.myqcloud.com"; # DNS 解析配置 resolver 114.114.114.114 223.5.5.5 8.8.8.8 valid=30s; resolver_timeout 5s; # 核心代理配置:精确匹配 /vrimages/ 路径 location ^~ /vrimages/ { # 精确代理到 COS 路径 proxy_pass https://$cos_host$request_uri; # 必须的头部设置 proxy_set_header Host $cos_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # HTTPS 配置 proxy_ssl_server_name on; proxy_ssl_session_reuse on; proxy_ssl_protocols TLSv1.2 TLSv1.3; # 性能优化 proxy_connect_timeout 5s; proxy_send_timeout 10s; proxy_read_timeout 20s; proxy_buffer_size 64k; proxy_buffers 16 64k; proxy_busy_buffers_size 128k; # 添加源识别头 add_header X-Origin "Tencent-COS"; add_header X-Cos-Bucket $cos_host; # 缓存控制 proxy_cache_valid 200 304 30d; add_header Cache-Control "public, max-age=2592000"; }
备份cos和七牛
./coscli cp ./xxx/vrimages/ cos://xxx/vrimages -r ./qshell account ak as name #设置账号 ./qshell qupload2 --src-dir=/www/wwwroot/xxx/vrimages/ --bucket=xxx --accelerate --check-exists --log-level=error --record-root=/www/wwwroot/log
上传七牛一定要指定log-level,不然会产生很多日志。
项目集成illuminate/database
迁移的项目很古老了,原来的查询写法比较难用,集成了illuminate/database,提升开发效率。
<?php require_once __DIR__."/../vendor/autoload.php"; $db_config = include_once __DIR__."/../config/db.php"; use Illuminate\Support\Facades\DB; use Illuminate\Database\Capsule\Manager as Capsule; use Illuminate\Container\Container; $container = new Container; $capsule = new Capsule($container); $capsule->addConnection($db_config); // 设置全局静态访问 $capsule->setAsGlobal(); // 启动 Eloquent ORM $capsule->bootEloquent(); // 将数据库管理器实例绑定到容器,键名为'db' $container->instance('db', $capsule->getDatabaseManager()); Container::setInstance($container); // 设置 Facade 的根容器 Illuminate\Support\Facades\Facade::setFacadeApplication($container); return $capsule;
<?php require __DIR__ . '/vendor/autoload.php'; $capsule = require __DIR__ . '/bootstrap/database.php'; // 设置默认时区 date_default_timezone_set('Asia/Shanghai'); // 示例使用 use Illuminate\Support\Facades\DB; DB::enableQueryLog(); //使支持查询日志 //查询删除超过30天的作品 $worksmain = DB::table('worksmain')->select('pk_works_main')->where(function($query){ //$query->where('delete_time','<=',time()-30*86400)->where('delete_time','>',0); $query->where('delete_time','>',0); })->get(); require_once __DIR__.'/source/include/cls_queue.php'; foreach($worksmain as $v){ QueueClient::push('delWorksImage',['pk_works_main'=>$v->pk_works_main]); } //print_r(DB::getQueryLog());