使用Composer接管以前手动安装的Drupal网站

大伟哥 提交于 2020-07-03,周五, 17:08

Drupal越来越倾向于使用Composer来管理代码库了,好多模块不使用Composer都不容易安装成功。那对于以前下载上传又手动安装配置的Drupal网站,怎么样才能搭上Composer的快车呢?大伟哥经过对Drupal文档的学习和实际测试,发现很容易就可以免票上车了。上了车之后再回头看,才知道阻碍我们拥抱Composer的,不是Composer真的复杂难学,而是习惯的力量和对未知事物的恐惧。我们要始终意识到这样一个事实:Composer是来帮我们的,不是来制造麻烦的。

Composer的机制很简单,就是按照你在composer.json和composer.lock文件里的配置,帮你搞定所有Drupal的文件,包括Drupal核心、社区模块和主题,还有外部依赖库。

总体来说,使用Composer接管原来手动安装的Drupal网站,和以前把Drupal网站迁移到新的服务器的过程差不多,甚至还要更简单一点,因为数据库部分可以使用原来的数据库,省去了导出导入的过程。

你可以在Drupal官方网站上,找到使用Composer接管已有的Drupal网站的文档。但是大伟哥强烈建议你继续查看本文后面的详细流程和实例,这是大伟哥结合官方文档和自己的实际经历,整理出来的,和官方文档相比更加接近实际情况。我尽量把整个过程写的清晰一些,并做出必要的解释。

一、创建新的临时目录并使用Composer安装全新的Drupal核心文件。

以大伟哥博客为例,目前使用的服务器是Debian 10操作系统, Apache服务器,大伟哥博客目录在/var/www/html/daweibro.com,运行Apache的用戶是www-data,我们创建的临时目录为daweibro.temp。以下是命令行操作,命令行后另开一行以#开头,附带简单的注释说明。

sudo su - www-data -s /bin/bash
#切换到www-data用户进行操作,这样可以避免以后出现的权限问题
cd /var/www/html/
#进入Apache服务器的根目录
composer create-project drupal/recommended-project:^8.9.0 daweibro.temp
#创建新项目,并在新创建的daweibro.temp文件夹里下载Drupal核心,版本控制在高于8.9.0低于9.0,
#目前Drupal 9刚发布,支持的模块还不是很多,建议再等等再升级。

二、安装原网站需要的社区模块、主题和Drush

上面只是下载了核心文件,我们还得把原来网站上用到的模块和主题也一起拉下来。

cd daweibro.temp
#进入项目文件夹
composer require drupal/captcha
composer require drupal/geshifilter
composer require drupal/shs
composer require drupal/recaptcha
composer require drupal/smtp
composer require drupal/extlink
composer require drupal/metatag
composer require drupal/redirect
composer require drupal/token
composer require drupal/libraries
#安装所有第三方模块和主题
composer require drush/drush
#安装Drush命令行工具,以后主要用来升级数据库和清理缓存。

三、复制原网站自定义模块、主题和文件到新的目录

自定义模块、主题和文件,这些是没办法使用composer拉取了,只能手动复制过来。复制的过程中还要注意已经变化的文件目录结构。主要是以下几点:

1.新加了一层web子目录(/var/www/html/daweibro.temp/web)

2.自定义模块要放入modules/custom目录(/var/www/html/daweibro.temp/web/modules/custom)

3.自定义主题放入themes/custom目录(/var/www/html/daweibro.temp/web/themes/custom)

cd /var/www/html
#进入html目录
cp -rf daweibro.com/modules/custom-module-name daweibro.temp/web/modules/custom/.
#复制自定义的模块custom-module-name到新目录,没有自定义模块可省略这一步
cp -rf daweibro.com/themes/custom-theme-name daweibro.temp/web/themes/custom/.
#复制自定义的主题custom-theme-name到新目录,没有自定义主题可省略这一步
cp -rf daweibro.com/sites/default/settings.php daweibro.temp/web/sites/default/settings.php
#复制原网站的配置文件到新目录,可能需要变动
cp -rf daweibro.com/sites/default/files daweibro.temp/web/sites/default/files/.
#复制原网站的图片、css文件、配置等到新目录

四、修改网站文件夹和服务器配置文件

现在两个文件夹里的内容,一个是之前手动安装的东西,另一个是通过Composer工具安装的东西,除了目录结构不一样之外,实际上都具备了运行Drupal的能力。我们要做的就是留好之好的备份,并把实际运行的程序切换到新的目录上来。

cd /var/www/html
#进入html目录
mv daiweobro.com daweibro.backup
#把原网站文件夹改成备份文件夹
mv daweibro.temp daweibro.com
#把临时文件夹改名成正式文件夹

因为目录结构已经变化了,所以我们还得修改服务器的虚拟主机配置,把根目录从/var/www/html/daweibro.com更改为/www/var/www/html/daweibro.com/web.

以大伟哥使用的Apache服务器为例,要修改/etc/apache2/sites-available/里面相应的conf配置文件,把DocumentRoot和Directory这两处的目录加上/web就可以了。保存以后需要重启Apache服务器:sudo service apache2 restart或者重新读取配置文件sudo service apache2 reload.

五、升级数据库、清除缓存、及错误处理

我们在完成上面的步骤之后,打开网站,有很大的可能是不能正常显示,往往是出现那个著名的错误页。

不要着急,还有重要的步骤没有做。接下来我们要开始使用传说中的Drush来装逼了:

cd /var/www/html/daweibro.com
#切换到网站根目录
vendor/drush/drush/drush updatedb
#更新升级数据库,如果你composer安装的模块版本更新,这一步是必须的,能解决不少错误问题。
vendor/drush/drush/drush cr
#清除Drupal缓存,这一步一般可以解决能打开网页但是CSS样式不正常的问题。

如果还是有问题,那么就需要去查看服务器日志了,一般都能在/var/log/apache2/error.log里面找到一点线索。这里大伟哥提供几个可能的出错原因:

1.某个原网站需要的模块或者外部库没有安装,这个需要composer require一次装上;

2.settings.php配置有问题,很有可能出错的几个参是$settings['hash_salt'],$settings['trusted_host_patterns']、$config_directories['sync']。

六、在使用中更深刻地了解Composer的机制

在使用Composer的过程中,我们会认识到Composer很有用,Composer不难,它的使用是非常灵活的。你可以通过Composer require来下载和安装依赖的库,这时候Composer会自动为你更新composer.json和composer.lock文件。

反过来,在足够熟练的前提下,你也可以直接编辑composer.json文件,把需要安装的库一次性写在这个配置文件里,然后运行composer update把需要的东西全部自动下载到你指定的位置。

文章分类

添加新评论

此字段内容将保密,不会被其他人看见。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
发布评论前,请通过下面的验证,以免被当作垃圾评论机器人屏蔽。
11 + 8 =
计算出这道简单的算术题并键入答案。例如、1+3,就输入 4。