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把需要的东西全部自动下载到你指定的位置。
- 328 阅读
添加新评论