BackupBuddy Multisite |BackupBuddy 多站点启用

BackupBuddy Multisite
Introduction

Multisite support is an EXPERIMENTAL FEATURE provided in BackupBuddy to AID you in importing and exporting subsites with Multisite. Due to the nature of Multisite, we cannot provide the same level of thoroughness in migrations as with standalone sites. You should NOT expect as smooth of an experience and we only recommend advanced users attempt to use Multisite functionality due to this. As WordPress Multisite functionality is much more technically complex, some BackupBuddy features available for standalone sites are NOT supported for Multisite environments. Please carefully review the features, differences and limitations so that you are aware of them and are sure it will meet your needs.

BackupBuddy Multisite is an EXPERIMENTAL product. As such, you may encounter issues using it and we cannot necessarily insure flawless functionality or that issues encountered will be resolved in as timely manner as non-experimental features. Usage of it in a production environment is at your own risk; Import/Export functionality is quite solid but Network migrations have some issues which require additional intervention to fully complete if the URL changes (see limitations below for full details). There is currently not a specific ETA on when the EXPERIMENTAL tag will be removed. It will be removed once we believe Multisite functionality to be as solid and reliable as the BackupBuddy standalone many have come to love.

Installation note: BackupBuddy Multisite support is EXPERIMENTAL software and should NOT be used on live sites. BackupBuddy should be Network Activated when installed on a Multisite Network for experimental testing. You must add the following line to your wp-config.php to activate these experimental features: define( ‘PB_BACKUPBUDDY_MULTISITE_EXPERIMENT’, true );
Features & Limitation Notes

IMPORTANT: BackupBuddy Multisite does NOT support migrating entire Networks to a different URL. If you attempt to do so then only the main site URLs will be migrated and you must manually update all subsite URLs, for instance using the Server Information Page’s Mass Database Replace Tool.
Backup entire Multisite Network
Limitations:
As a Network can contain many subsites, each subsite increases the amount of time needed to perform a backup, especially if the sites are large. This can demand more server resources or more PHP runtime. Most shared hosting does not permit increasing these resources so BackupBuddy may not be able to finish backups under these conditions. If you have access to modify these settings, Maximum PHP runtime is a key setting to increase as needed.
WordPress 3.5 Multisite has introduced multiple problems with site imports related with both file uploads and user imports. Some workarounds: http://ithemes.com/forum/topic/37186-backupbuddy-ms-import-not-working-on-wp-35-multisite/
Restore entire Multisite Network (same server & URLs)
Limitation: As a Network can contain many subsites, each subsite increases the amount of time needed to perform a restore, especially if the sites are large. This can demand more server resources or more PHP runtime. Most shared hosting does not permit increasing these resources so BackupBuddy may not be able to finish restores under these conditions. If you have access to modify these settings, Maximum PHP runtime is a key setting to increase as needed.
Migrate entire Multisite Network (different server or URLs)
Limitation: When migrating a Network to a new server or changing URLs, domains, or moving a Network in or out of a subdirectory, BackupBuddy will only migrate the database tables associated with the MAIN site. Due to technical reasons BackupBuddy currently will not automatically migrate URLs or paths of any other subsites within the migrated network. If the URLs or paths of subsites need to be updated you may perform this procedure by using the ‘Mass Database Text Replacement’ tool on the ‘Server Information’ page within BackupBuddy for each subsite you need to update.
Limitation: You cannot change from sub-domains to sub-directory URL structure using BackupBuddy Multisite nor can you change from sub-directories to sub-domain URL structure.
Limitation: As a Network can contain many subsites, each subsite increases the amount of time needed to perform a migration, especially if the sites are large. This can demand more server resources or more PHP runtime. Most shared hosting does not permit increasing these resources so BackupBuddy may not be able to finish migrations under these conditions. If you have access to modify these settings, Maximum PHP runtime is a key setting to increase as needed.
Export a subsite from the Network
Exported subsites may be imported back into the same network (AKA Duplicated), imported into another Network, or restored as a standalone WordPress site using the importbuddy.php tool.
Limitation: The main Network [sub]site cannot be exported as it is tied to the Network. It is still included in the main


BackupBuddy多站点
介绍

多站点支持是BackupBuddy提供的一项实验功能,可帮助您使用多站点导入和导出子站点。由于多站点的特性,我们无法提供与独立站点相同的迁移彻底性。您不应该期望体验顺畅,我们只建议高级用户尝试使用Multisite功能。由于WordPress多站点功能在技术上更复杂,因此可用于独立站点的一些BackupBuddy功能不支持Multisite环境。请仔细查看功能,差异和限制,以便您了解它们并确保它能够满足您的需求。

BackupBuddy Multisite是一款实验性产品。因此,您可能会遇到使用它的问题,我们不一定能确保完美的功能,或遇到的问题将以非实验性功能及时解决。在生产环境中使用它需要您自担风险;导入/导出功能非常稳定,但网络迁移有一些问题,如果URL更改(请参阅下面的全面详细信息的限制),需要额外干预才能完全完成。目前,EXPERIMENTAL标签将被删除的时候还没有特定的ETA。一旦我们认为Multisite的功能与BackupBuddy独立的许多人都喜欢的一样稳固可靠,它就会被移除。

安装说明:BackupBuddy多站点支持是实验性软件,不应在现场使用。安装在Multisite网络上进行实验测试时,BackupBuddy应该是网络激活的。您必须将以下行添加到您的wp-config.php以激活这些实验性功能:define(’PB_BACKUPBUDDY_MULTISITE_EXPERIMENT’,true);
功能和限制说明

重要提示:BackupBuddy Multisite不支持将整个网络迁移到其他网址。如果您尝试这样做,那么只有主站点URL将被迁移,并且您必须手动更新所有子站点URL,例如使用服务器信息页的批量数据库替换工具。
备份整个多站点网络
限制:
由于网络可以包含许多子网站,因此每个子网站都会增加执行备份所需的时间,尤其是在网站较大的情况下。这可能需要更多的服务器资源或更多的PHP运行时。大多数共享主机不允许增加这些资源,因此BackupBuddy可能无法在这些条件下完成备份。如果您有权修改这些设置,则最大PHP运行时间是根据需要增加的关键设置。
WordPress 3.5多站点引入了与文件上传和用户导入相关的网站导入的多个问题。一些解决方法:http://ithemes.com/forum/topic/37186​​-backupbuddy-ms-import-not-working-on-wp-35-multisite/
恢复整个多站点网络(相同的服务器和URL)
限制:由于网络可能包含许多子网站,因此每个子网站都会增加执行还原所需的时间,尤其是在网站较大的情况下。这可能需要更多的服务器资源或更多的PHP运行时。大多数共享主机不允许增加这些资源,因此BackupBuddy可能无法在这些条件下完成恢复。如果您有权修改这些设置,则最大PHP运行时间是根据需要增加的关键设置。
迁移整个多站点网络(不同的服务器或URL)
限制:在将网络迁移到新服务器或更改URL,域或将网络移入或移出子目录时,BackupBuddy只会迁移与MAIN站点相关联的数据库表。由于技术原因,BackupBuddy目前不会自动迁移迁移网络中任何其他子网站的URL或路径。如果需要更新子网站的URL或路径,则可以通过在BackupBuddy的“服务器信息”页面上为需要更新的每个子网站使用“大量数据库文本替换”工具来执行此过程。
限制:您无法使用BackupBuddy多站点从子域更改为子目录URL结构,也不能从子目录更改为子域URL结构。
限制:由于网络可以包含许多子网站,因此每个子网站都会增加执行迁移所需的时间,尤其是在网站较大的情况下。这可能需要更多的服务器资源或更多的PHP运行时。大多数共享主机不允许增加这些资源,因此BackupBuddy可能无法在这些条件下完成迁移。如果您有权修改这些设置,则最大PHP运行时间是根据需要增加的关键设置。
从网络中导出一个子网站
导出的子网站可以导入到同一网络(AKA重复),导入到另一个网络,或使用importbuddy.php工具作为独立的WordPress网站进行恢复。
限制:主网络[子]网站无法导出,因为它与网络绑定。它仍然包含在主体中

ossfs让阿里云oss对象存储挂在到服务器

下载

http://store.eyearth.com/?dl=d5cd1b8b8722c08a732c91e686f16b19

https://github.com/aliyun/ossfs.git

https://github.com/aliyun/ossfs?spm=5176.doc32196.2.5.PCoKOq#简介

简介

ossfs 能让您在Linux/Mac OS X 系统中把Aliyun OSS bucket 挂载到本地文件 系统中,您能够便捷的通过本地文件系统操作OSS 上的对象,实现数据的共享。

功能

ossfs 基于s3fs 构建,具有s3fs 的全部功能。主要功能包括:

  • 支持POSIX 文件系统的大部分功能,包括文件读写,目录,链接操作,权限, uid/gid,以及扩展属性(extended attributes)
  • 通过OSS 的multipart 功能上传大文件。
  • MD5 校验保证数据完整性。

安装

预编译的安装包

我们为常见的linux发行版制作了安装包:

  • Ubuntu-14.04
  • CentOS-7.0/6.5/5.11

请从版本发布页面选择对应的安装包下载安装,建议选择最新版本。

  • 对于Ubuntu,安装命令为:
sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi your_ossfs_package
  • 对于CentOS6.5及以上,安装命令为:
sudo yum localinstall your_ossfs_package
  • 对于CentOS5,安装命令为:
sudo yum localinstall your_ossfs_package --nogpgcheck

源码安装

如果没有找到对应的安装包,您也可以自行编译安装。编译前请先安装下列依赖库:

Ubuntu 14.04:

sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev \
                     libfuse-dev libssl-dev libxml2-dev make pkg-config

CentOS 7.0:

sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel \
                 fuse-devel make openssl-devel

然后您可以在github上下载源码并编译安装:

git clone https://github.com/aliyun/ossfs.git
cd ossfs
./autogen.sh
./configure
make
sudo make install

运行

设置bucket name, access key/id信息,将其存放在/etc/passwd-ossfs 文件中, 注意这个文件的权限必须正确设置,建议设为640。

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

将oss bucket mount到指定目录

ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

示例

my-bucket这个bucket挂载到/tmp/ossfs目录下,AccessKeyId是faint, AccessKeySecret是123,oss endpoint是http://oss-cn-hangzhou.aliyuncs.com

echo my-bucket:faint:123 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /tmp/ossfs
ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com

卸载bucket:

umount /tmp/ossfs # root user
fusermount -u /tmp/ossfs # non-root user

常用设置

  • 使用ossfs --version来查看当前版本,使用ossfs -h来查看可用的参数
  • 如果使用ossfs的机器是阿里云ECS,可以使用内网域名来避免流量收费提高速度
      ossfs my-bucket /tmp/ossfs -ourl=http://oss-cn-hangzhou-internal.aliyuncs.com
    
  • 在linux系统中,updatedb会定期地扫描文件系统,如果不想 ossfs的挂载目录被扫描,可参考FAQ设置跳过挂载目录
  • 如果你没有使用eCryptFs等需要XATTR的文件系统,可 以通过添加-o noxattr参数来提升性能
  • ossfs允许用户指定多组bucket/access_key_id/access_key_secret信息。当 有多组信息,写入passwd-ossfs的信息格式为:
      bucket1:access_key_id1:access_key_secret1
      bucket2:access_key_id2:access_key_secret2
    
  • 生产环境中推荐使用supervisor来启动并监控ossfs进程,使 用方法见FAQ

高级设置

  • 可以添加-f -d参数来让ossfs运行在前台并输出debug日志
  • 可以使用-o kernel_cache参数让ossfs能够利用文件系统的page cache,如 果你有多台机器挂载到同一个bucket,并且要求强一致性,请不要使用此 选项

遇到错误

遇到错误不要慌:) 按如下步骤进行排查:

  1. 如果有打印错误信息,尝试阅读并理解它
  2. 查看/var/log/syslog或者/var/log/messages中有无相关信息
     grep 's3fs' /var/log/syslog
     grep 'ossfs' /var/log/syslog
    
  3. 重新挂载ossfs,打开debug log:
     ossfs ... -o dbglevel=debug -f -d > /tmp/fs.log 2>&1
    

    然后重复你出错的操作,出错后将/tmp/fs.log保留,自己查看或者发给我

局限性

ossfs提供的功能和性能和本地文件系统相比,具有一些局限性。具体包括:

  • 随机或者追加写文件会导致整个文件的重写。
  • 元数据操作,例如list directory,性能较差,因为需要远程访问oss服务器。
  • 文件/文件夹的rename操作不是原子的。
  • 多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。
  • 不支持hard link。
  • 不适合用在高并发读/写的场景,这样会让系统的load升高

参与开发

  1. 开发流程参考:https://github.com/rockuw/oss-sdk-status#development-oss-members-only
  2. 提交代码后,确保travis CI是PASS的
  3. 每发布一个新的版本:
  • 运行scripts/build-pkg.py生成相应的安装包
  • Release页面发布一个版本
  • 将生成的安装包上传到相应的Release下面

常见问题

FAQ

相关链接

  • ossfs wiki
  • s3fs – 通过fuse接口,mount s3 bucket到本地文件系统。

联系我们

License

Copyright (C) 2010 Randy Rizun rrizun@gmail.com

Copyright (C) 2015 Haoran Yang yangzhuodog1982@gmail.com

Licensed under the GNU GPL version 2

ThinkPHP集成支付宝

 

本文来自

http://www.itinfor.cn/

ThinkPHP集成支付宝demo_采用自定义类形式

 

 

针对近期小伙伴询问ThinkPHP集成支付宝的人数较多,特此编写一篇较详细且易理解的教程

对应dmeo源码本人已搁到github上了,欢迎大家下载使用。

先上一张支付页面欣赏欣赏,(*^__^*)(*^__^*)

对应的github下载地址为:https://github.com/paopao7/ThinkPHP_Alipay_Demo

为保证页面效果,请采用虚拟主机的形式进行访问。

以下所有图片可点击放大后进行查看

相关版本说明:

ThinkPHP版本为3.2.3完整版

支付宝demo为截止到该文章发表前官方最新版

应官方版本要求,特将本地PHP版本修改为5以上

官方要求:

因本人使用的mac下的php开发的集成换成Mamp,所以截图为Mamp下的php版本

Mamp版本号:

Mamp下php版本号:

若您使用的为其他开发环境,也请务必将php的版本修改为5及以上

1、首先需下载ThinkPHP,具体要去哪里下载,就不需要我多说明了吧。我选择的版本是3.2.3完整版

下载链接在此:http://www.thinkphp.cn/down/610.html

2、下载支付宝demo

此处我们以电脑网站支付为例,其他demo也类似,此处就不再赘述了

下载链接在此:https://docs.open.alipay.com/270/106291/

3、将下载下来的ThinkPHP完整版搁到我们的网站根目录下

我的网站根目录是wwwroot,我将此次的项目命名为AlipayClass,该名称的意思是以自定义类的形式去执行支付宝支付,当然你想命名为什么名称都可以。

4、将下载来的支付宝demo搁到ThinkPHP的三方框架下,关于ThinkPHP的三方类库说明见此地址:

http://document.thinkphp.cn/manual_3_2.html#lib_extend

搁进去的具体操作如下图所示:

5、此处先补充下电脑网站支付的配置及流程,若你已了解,可直接跳转至下一节。

1)、首先我们可以通过执行支付宝官方demo来了解其支付的流程

2)、我们还是跟之前将官方demo搁到我们网站的根目录下:

3)、在进行本地调试之前,安装官方的说法,请先阅读下该demo目录下的readme.txt,此处就不展开了

4)、阅读完成后,先别急着在本地运行,先对需要的数据进行配置

需要配置的数据如下图所示:

针对以上信息的获取,请参考本人的另一篇文章,文章地址:

支付宝电脑网站支付 appid等参数的获取

5)、请注意以上参数中的?notify_url、return_url,需为外网地址,不然支付宝无法调用到,也就无法进行跳转及验签了。

6)、以上信息配置完成后,我们就可以愉快的在本地跑起来了

7)、接下来是对整个支付过程的讲解,若您已了解,请跳过。

  • 首先我们打开项目所在的index.php文件,会发现付款功能是将填写的相关参数提交到?pagepay下面的pagepay.php文件,如下图红色框中的内容所示。

  • 以下为提交页面的参数和后端接受的参数对应说明

  • 以下就针对上述文件进行分析,首先该文件引入了我们在一开始填写appid等参数的配置文件,然后将前台页面填写的订单号、支付金额等参数获取到。再将这些参数通过对应的set方法写入$payRequestBuilder,以供AlipayTradeService文件下的pagePay方法使用。

  • 下图为AlipayTradeService文件的pagePay方法所在页面。然后该方法又去调用了aopclientRequestExecute方法,也就是第94行的方法。我们会发现在调用aopclientRequestExecute方法的时候,第二个参数为true,因此它会调用$aop下的pageExecute方法,也就是第109行代码。

  • 继续往下走。若下图所示,我们已经找到了pageExecute方法所在的定义。该方法先判断文件编码,然后获取到需要加密的一些参数,然后调用该文件下的generateSign方法进行加密,也就是第385行代码。

  • 继续往下走,最终代码来到第119行,该方法为调用我们之前配置好的公钥和私钥,然后使用openssl_sign方法进行加密,将加密后的参数(sign)进行返回。
  • 请注意openssl_sign方式为php自带方法,需进去到php.ini文件下进行配置,具体配置过程此处就不再赘述了。可参考该文章:
    http://www.jb51.net/article/50173.htm

  • 好的,我们了解了支付宝是如何进行加密操作了,那就继续往下走。

  • 因为传入的$httpmethod的值是POST,因此代码会走到397行,也就是上图中红色框的部分。顺着往下走,就找到了该方法的定义,根据上方注释,很容易就了解到该方法是将支付需要的参数循环填入form表单中,然后将整个表单进行返回。为了获取其中上传的参数,我特定将返回的数据进行了写文件操作。

  • 该文件会生成在项目目录下的pagepay目录下

  • 生成的内容如下图所示:

  • 实际提交的参数,就是支付宝电脑网站支付api下的aplipy.trade.page.pay方法所需要提交的参数。具体链接为:https://docs.open.alipay.com/common/105901
  • 至此整个demo的支付流程已讲解完毕。

8)到了激动人心的时刻了,若相关配置正确无误,则会出现以下界面。

是不是感到非常的熟悉和亲切呢。若未出现,请根据错误提示自行进行百度。

9)针对有小伙伴反馈在出现该页面之前会出现一个错误界面,然后一闪而过,如下图所示:

出现这个问题的原因是因为本地环境缺少时区导致的。具体解决方法请参考该链接:http://jingyan.baidu.com/article/2a138328a95186074b134f4f.html

6、官方demo的说明至此结束了,接下来是对官方demo进行封装。此处已将支付宝demo搁到三方框架下。因为下载的代码中未包含控制器等文件夹,所以需先进行在浏览器下执行下。在进行接下来操作的时候,请先将demo文件夹下的config.php文件配置完成,否则无法进行支付。如下图所示:

7、执行完成后,会发现对应的Application已经有了控制器等文件夹。

8、接下来是搭建支付页面以及支付记录页面,这两项操作就不在此进行赘述了。页面搭建的时候,记得预留下支付金融的input,该参数需要传递到服务器端进行处理。

9、服务器端在接收到用户输入的支付金额的时候,会先对用户输入的值进判断。验证无误后,会执行生成订单号以及写入订单表等操作,具体见下图:其中具体的操作的请点击下图方大进行查看或去到文章的顶部将源码下载下来进行研究。

10、以上操作均无误的情况下,将会出现我们所熟悉的界面,此处就不在赘述了。

11、若在支付的过程中,遇到和Tp框架的C方法冲突的时候,可直接将支付宝demo的C方法修改为任何方法名即可。

12、支付过程到此结束,接下来是支付宝回调以及验签的说明。在进行验签操作之前,请先填写好支付宝demo文件夹下config。php文件中的notify_url地址且要是外网能够访问的。

13、接下来是对验签功能的讲解。支付宝在你支付成功后,会异步访问你在配置文件里面填写的地址,也就是下图中的方法。

你可以通过$_POST获取所有的返回数据,也可以通过$_POST[‘参数名’]获取某个特定的数据。

在获取到支付宝全部的数据之后,第一步要做的就是对支付宝返回的数据进行验签,也就是下图中第66行处的代码。

验签完成后,就是你自己的业务逻辑什么的,例如修改订单状态以及修改对应用户余额什么的,具体要做哪些操作了,就看个人需要了。

此处需要注意的是,成功或失败返回的结果为 echo “success”;或echo “fail”; 该行代码切记不要别做任何修改。

14、好了Tp框架集成支付宝电脑网站支付并以自定义类的形式的功能说明到此结束。


如果还有什么不明白的地方,欢迎加我QQ进行咨询,请注明技术咨询

本人QQ:980569038

TP集成支付宝群:594955172

也可以扫码本人微信: