目标是知识付费平台(视频+会员订阅),选型结果为 Drupal 8。
开发方法用服务器 Docker 加 VS Code Remote 远程开发。
一、准备工作
1、服务器配置
服务器操作系统:Ubuntu 18.04
安装 Docker、docker-compose、git
2、本地配置远程开发
本地操作系统:macOS Mojave 10.14.4
安装 VS Code Insiders、Remote Development 插件
微软在 5 月 3 日的 PyCon 2019 大会上,发布了 VS Code Remote,利用它开发者可以连接到远程服务器上进行开发。历史真是轮回,最早硬件性能差的时候,就是瘦工作站的模式,所有的运算处理工作都由中央计算机完成,等到了 PC 电脑性能变高了,大部分工作都放到了本地。现在性能更高了,工作方式又变回去了,开发者不用在本地搭建开发环境,可以在统一的远程环境进行开发了。
给微软点赞。
(1)安装 VS Code Remote
该功能目前仅支持在 Insider 版本中使用,最终也会在 Stable 版本中提供。安装好 VS Code Insiders 后,在插件库中搜索 Remote Development 进行安装。
(2)编辑 SSH 配置文件
点击 Remote-SSH 标签,在展开的面板中点击 CONNECTIONS 右侧的齿轮图标,点击选择第一行的文件进行编辑。
格式为:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
HostName hostname # ip 地址
User user
IdentityFile ~/.ssh/id_rsa
这里注意需要把本地的公钥上传到远程服务器,并开启公钥认证方式。
登录服务器的各项信息配置正确的话,保存后就能进行连接。
(3)打开服务器项目文件
连接成功后,像打开本地文件一样打开远程服务器的文件进行编辑。
二、Drupal 8 配置
1、启动 Drupal 容器
只包含 web 部分的配置。我有另外一台云数据库服务器,所以没有在容器配置数据库。
进入项目目录,写入 docker-compose.yml 文件,内容如下:
version: '3'
services:
web:
image: "drupal:${DRUPAL_VERSION:-latest}"
restart: always
ports:
- "8080:80"
volumes:
- ./app/modules:/var/www/html/modules
- ./app/profiles:/var/www/html/profiles
- ./app/themes:/var/www/html/themes
- ./app/sites:/var/www/html/sites
- ./config/php/conf.d/php.ini:/usr/local/etc/php/conf.d/php.ini
启动容器:
docker-composer up -d
2、安装 Drupal 8
浏览器打开 http://ip:8080 按提示完成在线安装。需要注意文件夹的所属和权限。如提示不能写入、复制等错误,执行:
chown www-data:www-data ./app -R
chmod a+w ./app/sites -r
3、安装 PHP Composer、drush
(1)安装 composer
Drupal 8 系统核心、扩展、模板的管理与升级,官方推荐使用 composer,它可以自动地安装依赖,减少一些折腾。
推荐手工安装 composer:
# 在服务器上下载 composer.phar
wget -c https://getcomposer.org/composer.phar
# 将脚本从服务器上拷贝到容器中,CONTAINER_NAME替换为 Drupal 容器的名称
docker cp ./composer.phar CONTAINER_NAME:/usr/local/bin/composer
# 进入 Drupal 容器内部
docker exec -it CONTAINER_NAME bash
# 赋予 compser 执行权限
chmod +x /usr/local/bin/composer
测试是否安装成功,输入 composer 回车,看到下面界面即为成功。
(2)安装 Drush
Drush 是 Drupal 的命令行管理工具,可以更快效率地执行一些命令,比通过后台界面操作要快很多。用 composer 安装:
composer require drush/drush
4、升级 Drupal 核心
composer outdated "drupal/*"
composer update --dry-run
composer update drupal/core --with-dependencies
drush updatedb
drush cr
5、安装 PHP 7.2-bcmatch 扩展
Drupal 的 Commerce(电商)模块要求 PHP-bcmatch 扩展,而 Drupal 官方 Docker 并没有安装,需要自行安装。
进入 Drupal 容器内部运行:
docker-php-ext-install bcmath
然后重启 apache 使扩展生效:
/etc/init.d/apache2 restart
6、安装扩展
composer 安装扩展的命令形式为:
composer require drupal/module_name