在Swisscom应用云中集成动态s3(用于存储wp内容文件夹)、SQL数据库和WordPress
目前WordPress和MySQL实例正在Swisscom云上运行。但上周突然wp的内容,被删除,无法正常运行的网站,因为内容丢失。之后,我与SWISCOM进行了沟通,他们解释了问题和可能的解决方案。他们建议使用外部服务存储内容媒体文件和其他文档。但我不知道怎么做 如果有人解决了相同的问题,请提供您的解决方案或给出一些建议。编辑版本: 此解决方案不适用于wordpress在云上的生产部署,因为只要应用程序重新启动或暂存,临时文件系统就会导致数据丢失。这随时都可能发生。另一个问题可能是应用程序的水平扩展,多个实例都具有不同的临时文件系统,但没有同步。因此,此解决方案不能用于生产 这是由于Wordpress的架构目前还没有为云环境做好准备,而不是云本身。部署到云端的应用程序应该遵守以下原则: 这个小howto可以用于blog和所有备份足够且只需要一个实例的情况 我尝试在Swisscom云上进行wordpress的基本安装。 首先我下载了wordpress的代码。它应该是一个名为“wp config sample.php”的文件。将其重命名为“wp config.php”,并替换文件中的以下行:在Swisscom应用云中集成动态s3(用于存储wp内容文件夹)、SQL数据库和WordPress,wordpress,storage,cloud-foundry,swisscomdev,Wordpress,Storage,Cloud Foundry,Swisscomdev,目前WordPress和MySQL实例正在Swisscom云上运行。但上周突然wp的内容,被删除,无法正常运行的网站,因为内容丢失。之后,我与SWISCOM进行了沟通,他们解释了问题和可能的解决方案。他们建议使用外部服务存储内容媒体文件和其他文档。但我不知道怎么做 如果有人解决了相同的问题,请提供您的解决方案或给出一些建议。编辑版本: 此解决方案不适用于wordpress在云上的生产部署,因为只要应用程序重新启动或暂存,临时文件系统就会导致数据丢失。这随时都可能发生。另一个问题可能是应用程序的水
// ** Read MySQL service properties from _ENV['VCAP_SERVICES']
$services = json_decode($_ENV['VCAP_SERVICES'], true);
$service = $services['mariadb'][0]; // pick the first MySQL service
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $service['credentials']['database']);
/** MySQL database username */
define('DB_USER', $service['credentials']['username']);
/** MySQL database password */
define('DB_PASSWORD', $service['credentials']['password']);
/** MySQL hostname */
define('DB_HOST', $service['credentials']['host'] . ':' . $service['credentials']['port']);
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
这些行允许wordpress从环境变量获取数据库凭据。在这种特定情况下,变量键指向Swisscom mariadb服务。如果应用程序重新启动,这些信息将自动提供给应用程序
确保创建mariadb并将其绑定到应用程序。这可以在部署的不同阶段以不同的方式完成
为了定期执行应用程序介质的备份,我安装了一个插件来备份到兼容的S3存储。Swisscom动态存储服务是与S3兼容的存储,您可以将此服务与插件一起使用。首先,我使用wordpress插件管理器安装了插件。
然后,我创建了一个连接到应用程序的动态存储服务。重新启动应用程序后,可以使用Cloud Foundry cli列出应用程序的环境变量:
cf env appName
你应该得到这样的东西:
{
"VCAP_SERVICES": {
"dynstrg": [
{
"credentials": {
"accessHost": "ds31s3.swisscom.com",
"accessKey": "key",
"sharedSecret": "secret"
},
"label": "dynstrg",
"name": "test-ivan-dynstrg",
"plan": "usage",
"provider": null,
"syslog_drain_url": null,
"tags": [],
"volume_mounts": []
}
],
"mariadb": [
{
"credentials": {
"database": "database",
"database_uri": "mysql://uri",
"host": "10.0.20.18",
"jdbcUrl": "jdbc:mysql://uri",
"name": "name",
"password": "pass",
"port": 3306,
"uri": "uri",
"username": "user"
},
"label": "mariadb",
"name": "test-ivan-mariadb",
"plan": "small",
"provider": null,
"syslog_drain_url": null,
"tags": [],
"volume_mounts": []
}
]
}
}
记下“accessHost”、“accessKey”和“sharedSecret”
此时,您需要在动态存储器上创建一个bucket。您可以使用不同类型的应用程序执行此操作。
这一步非常重要。如果没有bucket,插件就无法工作
创建bucket后,请记下它的名称
现在您可以配置“updraftplus”插件:
您需要选择S3兼容(通用)服务,并在S3端点字段中输入accessHost,在S3访问密钥中输入accessKey,在S3密钥中输入sharedSecret,在S3位置字段中输入bucket的名称。
这应该正确配置插件。现在您可以备份这两个文件而不是数据库
请记住,当应用程序重新启动时,插件将不再安装(它安装在临时文件系统上),因此您需要重新安装它,并在安装后执行恢复过程
此解决方案仍可能导致数据丢失。备份可以早于应用程序崩溃或重新启动
但是对于个人博客的使用案例来说是有用的。这里是Swisscom产品管理部门的官方答案: 我们官方不支持云应用程序上的Wordpress。那里 有很多关于如何在CloudFoundry上部署Wordpress的例子吗 可用,但它们仅适用于某些配置。到 据我们所知,没有有效的通用解决方案 适用于所有wordpress安装和配置。 因此,我们并不正式支持它。这些问题存在于 文件系统区域(Wordpress要求非临时文件系统 工作)并意识到Wordpress及其插件可能 在多个实例中运行(在水平缩放的情况下)
部署到CF的应用不应将重要信息写入本地文件系统。这是短暂的,信息会丢失的。有一些Wordpress插件允许您在S3上存储数据。对不起,我不能推荐一个,但是如果你在Wordpress插件网站上搜索“S3”,你可以很容易地找到它们。谢谢你的时间和兴趣。是的,我明白了,但现在我正在寻找一些解决方案,将wordpress与swisscom s3动态存储直接集成(无需插件)。谢谢您的建议。现在我尝试使用UpdraftPlus插件到Swisscom s3动态存储进行备份,但它在prograss通知中始终显示“创建文件备份拉链”。是否有任何配置文件可用于存储s3动态存储中的wp内容?配置是否正常?在设置中有“测试S3设置”按钮。如果出现错误,它会提供有关问题的一些信息。我想补充一点,UpdraftPlus解决方案仍然可能导致数据丢失,以防应用程序重新启动且最近未执行备份。另一种可能的解决方案是使用一个外部服务器来存储前面提到的数据文件,并使用ssh连接。“test s3设置”可以正常工作,但在这之后,当开始进行备份时,它只是在几分钟后重试,但从未结束。我知道这两个链接,但目前我没有任何可以存储数据文件的外部服务器。为什么我们不能将数据文件直接存储到S3?为了能够将数据文件直接存储到S3,您需要