温馨提示×

centos composer如何迁移

小樊
38
2025-12-17 11:17:01
栏目: 智能运维

CentOS 上 Composer 的迁移与项目迁移指南

一 迁移场景与准备

  • 明确迁移类型:
    • 迁移 Composer 本体(可执行文件、全局配置与缓存目录)。
    • 迁移 PHP 项目(代码、依赖与配置),在 CentOS 上部署并运行。
  • 准备要点:
    • 源机器与目标机器均安装 PHP CLI(建议 PHP ≥ 7.4),并确认版本一致:php -v
    • 目标机安装常用扩展(以 Laravel 为例):sudo yum install -y php php-cli php-fpm php-mysqlnd php-mbstring php-xml php-zip
    • 备份与版本控制:确保项目根目录有 composer.json / composer.lock,并用 Git 管理依赖更可靠。

二 迁移 Composer 本体到新目录

  • 设置新的全局目录(推荐将全局目录放到 /opt/composer):
    1. 编辑 shell 配置:sudo vim /etc/profile.d/composer.sh
      export COMPOSER_HOME="/opt/composer"
      export PATH="$COMPOSER_HOME/vendor/bin:$PATH"
      
    2. 使配置生效:source /etc/profile.d/composer.sh
  • 迁移原有数据(如有历史全局包/配置):
    sudo mkdir -p /opt/composer
    sudo cp -r ~/.composer/* /opt/composer/
    sudo chown -R $(whoami):$(whoami) /opt/composer
    
  • 验证:
    echo $COMPOSER_HOME                 # 应输出 /opt/composer
    composer config --global home       # 同上
    composer global require phpunit/phpunit
    which phpunit                      # 应指向 /opt/composer/vendor/bin/phpunit
    
  • 注意:确保新目录可写,且 PATH 包含 $COMPOSER_HOME/vendor/bin,否则全局命令不可用。

三 迁移 PHP 项目到 CentOS 并恢复依赖

  • 传输代码与配置:
    • 将项目文件(含 composer.json / composer.lock)上传至目标路径,如 /var/www/your_project
    • 复制 .env.example.env 并配置数据库等敏感信息。
  • Web 服务器与目录指向(以 Nginx 为例):
    • root 指向项目的 public 目录,并配置 FastCGI 代理到 php-fpm.sock
    • 示例片段:
      server {
        listen 80;
        server_name your_domain_or_ip;
        root /var/www/your_project/public;
        index index.php;
        location / { try_files $uri $uri/ /index.php?$query_string; }
        location ~ \.php$ {
          fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $realpath_root$fastpath_info;
          include fastcgi_params;
        }
        location ~ /\.(?!well-known).* { deny all; }
      }
      
    • 启动服务:sudo systemctl start nginx && sudo systemctl enable nginx
  • 安装依赖与初始化:
    cd /var/www/your_project
    composer install --optimize-autoloader --no-dev
    php artisan key:generate
    # 如有迁移数据:mysql -u user -p db_name < dump.sql
    php artisan migrate --force
    
  • 目录权限(以 www:www 为例):
    sudo chown -R www:www /var/www/your_project
    sudo chmod -R 775 /var/www/your_project/storage
    php artisan storage:link
    
  • 常见排错:
    • php artisan storage:link 失败,检查 php.inidisable_functions 是否禁用了所需函数(如 symlink),必要时移除后重启 php-fpm

四 备份与恢复策略

  • 项目级备份与恢复(推荐做法):
    • 备份:cp composer.json composer.lock /backup/
    • 恢复:cp /backup/composer.json composer.lock ./ && composer install
    • 不建议长期备份体积庞大的 vendor,优先使用 composer.lock 复现依赖;用 Git 管理变更更稳妥。
  • 全局配置迁移(可选):
    • 备份:cp ~/.composer/config.json /backup/composer-global-config.json
    • 恢复:cp /backup/composer-global-config.json ~/.composer/config.json

五 国内镜像与常见问题

  • 提升安装速度(全局镜像,任选其一):
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    # 或
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    # 或
    composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
    # 或
    composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
    
  • 常见问题处理:
    • 缺少扩展(如 fileinfo):在 php.ini 启用或编译扩展后重启 php-fpm
    • 权限问题:确保 storagebootstrap/cacheWeb/PHP-FPM 运行用户可写。
    • 全局命令不可用:确认 $COMPOSER_HOME/vendor/bin 已加入 PATH,并重启终端或重新加载环境。

0