0

我在灯(debian、apache、php、mysql)服务器上运行 Drupal 多站点环境。

我当前的新项目工作流程是:

  1. 在我的公司网站上激活一个子域(假设项目是 foo.com,我激活 foo.example.com)
  2. 由于 plesk (这对 drupal 有点不友好),我的步骤是:
    1. 在plesk中创建新的子域,php以fastcgi模式运行
    2. 创建数据库
    3. 删除 httpdocs 文件夹,重新创建它并创建站点文件夹
    4. 将每个文件的符号链接到/var/www/vhosts/drupal站点和 tmp 文件夹、robots.txt 和 .htacces 文件的文件夹(drupal 代码库)中(通常将按域自定义)
    5. foo.example.com里面创建文件夹,sites/var/www/vhosts/drupal/sites/all文件夹的符号链接,然后从sites/foo.com到返回一个符号链接/var/www/vhosts/drupal/sites/foo.example.com(为了让 drush看到所有域到一些多站点任务,比如 crontab)
  3. 在子域中安装、配置drupal,完成项目所需的一切

此时,我需要将项目从子域切换到最终域 foo.com,它也将驻留在我的服务器上。

我不太喜欢域重定向等其他一些技巧,我希望最终项目是“干净的”(对于多站点环境中的干净意味着什么)。

实际上我做了这些步骤:

  1. 创建域(通过 plesk)和数据库;
  2. 将子域 httpdocs 复制到完整域 httpdocs ( cp -a /var/www/vhosts/example.com/subdomains/foo/httpdocs /var/www/vhosts/foo.com/httpdocs)
  3. 更改 httpdocs 的所有者和组以匹配域的所有者和组
  4. 登录到 drupal,更改网站信息和文件系统路径。

这让我可以做我想做的事,但我对节点的 html 内容有一些问题;特别是对于那些包含链接、图像和文件的那些(即使 IMCE 被配置为使用相对路径),将指向/sites/foo.example.com/files/[...]而不是/sites/foo.com/files/[...].. 这也发生在 cck 文件字段中。

正如我所说,我需要一个干净的解决方案,我知道我可以从/sites/foo.example.comto建立一个符号链接,/sites/foo.com但我真的不喜欢这种方式。

到目前为止,我尝试搜索/替换所有出现在数据库 sql 转储中:

sed 's/foo.example.com/foo.com/g' dump.sql > foo.com.sql

但这似乎阻碍了某些事情;我在 boostrap 文件中遇到了很多错误(在缓存反序列化步骤中,即使我在 db 导出/导入之前和之后清除了所有缓存)并且看起来某些 utf-8 编码被破坏了。

我知道最好的办法是在本地服务器上设置开发区域,但我需要我的客户从外部访问它。而且我们的 adsl 情况(静态 IP 等)有点连线。

任何想法?

ps:对不起我的英语不好,如果我的问题不够清楚,请告诉我,我会提供更多细节)

4

1 回答 1

0

您的步骤基本上就是我所做的,但我没有使用 Plesk 或进行多站点安装。我只是在 VPS 实例中创建一个新的虚拟主机,然后 cp -a docroot,然后重新配置一个新的数据库 DSN。

关于 SQL 问题,我通常在 UTF-8 干净的编辑器中编辑 SQL 转储以防止出现该问题。在 Windows 上,我使用 Notepad++。

然后我恢复数据库、清理所有缓存、编辑设置并运行 cron。我通常还会重建搜索索引。

此序列通常有效。

引导问题可能与变量表有关。当您序列化一个字符串(或带有字符串的东西)时,长度也会被存储。我会做搜索和替换,然后打开 MySQL 查询浏览器,用域名搜索变量表中的行,并手动修复长度。另一个选项是确定要存储哪个选项,然后重新创建设置。

于 2010-11-22T21:11:24.053 回答