跳转到主要内容

概述

Composer是PHP的依赖项管理器。可用来下载安装升级Drupal,也可以用来为项目安装模块和主题,配合模块Console和Drush,能让开发调试更加方便。Composer有点类似于NodeJS中的NPM,在项目中,composer.json文件中列出项目的依赖项,然后通过composer install在CLI中自动下载列出的依赖并设置为自动加载。

安装配置

先确保PHP已经安装并设置好了相应的扩展模块,这简直是废话,在Linux环境下搭建一个LNMP比较简单,这里默认Linux为ubuntu环境,如果是centos也是可以自己加sudo的。

# 获取installer并用php执行
sudo curl -sS https://getcomposer.org/installer | php
# 将composer放到系统Path中
sudo mv composer.phar /usr/local/bin/composer

完成以上两步之后,可以验证一下

#使用composer不要使用sudo
composer -v

先修改国内源,推荐阿里云,不修改的话执行composer会慢成狗

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

查看源

composer config -lg

由于composer执行过程中比较吃内存,为了避免一些意外,建议在开发环境中将php.ini文件中设置memory_limit = 2048M,如果是虚拟机,则需要手动创建页面内存给系统使用。

#以下配置是给小内存的虚拟机使用的
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1

个人不建议在生产环境中使用composer,因为国内的网络在使用composer的时候偶尔会不稳定,不要给自己找麻烦~

 

使用Composer

Composer创建并下载安装drupal

从Drupal 8.8.0版开始,推荐的Composer模板从drupal-composer/drupal-project更改为drupal/recommended-project

composer create-project drupal/recommended-project my_site_name_dir

以上命令就完成了项目的创建和下载,但是并没有安装,我们需要先创建一个数据库给安装时使用,这里使用MySQL

CREATE DATABASE  `my_drupal` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

不使用root作为数据库的默认用户是一种比较安全的实践,防止您的网站被黑了之后,数据库也被一锅端

GRANT ALL PRIVILEGES ON my_drupal.* TO 'newusername'@'localhost' IDENTIFIED BY 'newpass' WITH GRANT OPTION;

可选操作,如果需要安装中文的drupal,先下载语言包并拷贝语言包到目录 sites/default/files/translations,没有此目录就手动mkdir

配置和使用drush或console

以上create-project完成后,目录中会生成一个composer.json,建议直接在文件中添加如下代码来配置安装drush和console

"require-dev": {
      "drupal/console": "~1.0",
      "drush/drush":  "^10.2"
    }

配置保存后,备份删除composer.lock,运行composer install, 这里需要注意:

1.如果使用是老项目比如8.3左右的版本,可能需要使用9.X版本的drush,这个时候,以上相应位置换成"^9"即可
2.如果是单独先安装drush,后期才安装console,通常会出现版本兼容无法安装的错误,这个时候则删除掉vendor/bin这个目录,配置好composer.json后再运行composer install

如果不想在配置文件中写配置,直接运行命令在项目中安装也是可以的

# -vvv 可选,这个是为了看到下载过程 
composer -vvv require drush/drush:^10
# 没有特别需求,版本标记也可以不写
composer -vvv require drupal/console:@stable
# 移除
composer remove drush/drush

两个都可以用来安装drupal,这里以常见的drush为例

drush site-install standard \
--db-url="mysql://newusername:mypass@localhost/my_drupal"\ 
--site-name="sitename" --account-name="siteadmin"\
--account-pass="siteadminpass"  --account-mail="admin@cybersir.com"\ 
--locale=zh-hans -v

以上命令中第一行和第二行是必须的,其他行如账户不填,系统会默认生成并在安装步骤完成时打印管理员信息在cli界面中,具体参数可以通过drupal -v 来查看明细。

当然也可以通过网页来安装,在web服务器中配置好vhost,通过网页来安装需要注意的是确保php的execute_time大于300,建议600以上,否则可能出超时意外~

使用drush 安装drupal的模块和主题,方法是一样的

# radix是一个基主题
composer require drupal/radix
# Token是一个模块
composer require drupal/token
#上面是下载,这里启用module
drush en token
#也可以这样,具体看命令清单
drush pm-enable  token
#卸载module
drush pm-uninstall token

完成后查看版本和查看drush命令列表,console的命令是drupal

# drush显示版本并列出命令清单
drush -v
#console显示版本并列出命令清单
drupal -v

不常见的命令,当你的当前主题崩溃无法找到原因且无法进入网页后台的时候,通常可以通过启用默认的基础主题来访问后台,呵呵,有啥用呢~~

drush config-set system.theme default garland

如果当前出现网站错误,比较可取的做法是获取watchdog的错误信息

# 调用watchdog来查看错误日志或者其他日志
drush wd-list

使用composer升级drupal,这里分drupal/core-recommended和drupal/core两种情况,通常使用drupal/recommended-project创建的项目都默认安装了drupal/core-recommended,差别和安装详情可参考使用Composer更新drupal ,这里使用drupal/core举例,通常8.8.0版本的drupal都没有使用drupal/recommended-project创建。

# 获取可升级版本信息
composer outdated "drupal/*"
# 有新的升级,就升级核心
composer update drupal/core --with-dependencies
drush updatedb
drush cr

当然也可以core和模块一体升级的

#这将升级内核和模块,主题
composer update drupal/* --with-dependencies
drush updatedb
drush cr

 

手动下载drupal并使用Composer

手动下载可以直接访问drupal.org网站下载,也可以通过github下载。下载下来的文件中默认是包含composer.json文件的,所以剩下的操作方法和composer创建项目后是一样的。这里简单说一下github下载的方法,如果你爬不出防火墙,使用github下载将会很艰难,这里假设已经有可用的外部代理

# 设置穿越防火墙的代理
export https_proxy="http://127.0.0.1:8888"
export http_proxy="http://127.0.0.1:8888"
# 下载源码
git clone https://github.com/drupal/drupal.git  drupal-8.8
git remote -v
#列出本地仓库版本号标签
git tag
# 选择并checkout相应版本
git checkout 8.8.5

更新module失败处理

1.如果项目中使用了非composer方式安装module,在使用composer require drupal/modulename:version方式更新时会失败,通常这种情况只需要删除module目录和module/contrib中对应的modulename目录,然后重新require安装即可composer默认会将module安装到contrib子目录下,安装完之后drush updatedb和cr。

2.如果因为composer更新失败导致站点错误无法访问,可以删除整个vendor目录,确保web上层目录中composer.lock存在,重新composer update后updatedb和cr即可恢复正常。

参考:

https://www.drupal.org/
分类