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

也可以扫码本人微信:

腾讯云主机端口开放的方法

进入腾讯云后台 新建安全组


选择放通所有端口模板


新建此安全组规则

给实例添加安全组规则

点击确定绑定安全组规则即可正常访问面板

如果觉得放行所有端口不安全 那么可以参考以下教程 来自定义放行端口

点新增一行即可自定义规则 把规则弄成与图中相同 新建安全组并添加到实例中即可正常访问,如果更换了ftp端口 数据端口 面板端口 phpmyadmin端口 记得也要在安全组放行相应端口

8款最佳的开源在线学习CMS系统

如今,CMS变得越来越流行,因为它不需要太多的编程能力,即便你是新手也能利用CMS很好的完成相应的工作。网络上有许许多多的在线学习平台,但想要选到适宜的却不是简单之事。本文罗列了8款最好的开源在线学习平台,基于这些平台提供强大的功能及安全的用户界面,从而帮助Web开发者大大提高工作效率。

eFront Learning

efront是一套功能齐全的在线学习管理系统,其拥有强大的功能,可创建、访问、评估、分析与协作,它能够让管理员利用其提供的各种工具来创建和管理课程。同时它还作为一个独立的平台,基于此你可以部署在自己的服务器上。

Moodle

Moodle是一个开源课程管理系统(CMS),也被称为学习管理系统(LMS)。它已成为深受世界各地教育工作者喜爱的一种为学生建立网上动态网站的工具。用户需要将其安装在Web服务器上,无论是在自己的电脑或网络托管公司。Moodle 平台界面简单、精巧。使用者可以根据需要随时调整界面,增减内容。

Ilias

ILIAS是一套基于Web的学习管理系统。提供课程管理、邮件、即时对话、论坛、团体协作、文件共享、写作 工具、考试系统、个人桌面等。提供上下文帮助系统用于学习和写作。

Dokeos

Dokeos是一款很好的在线学习管理系统,基于开源软件标准,采用PHP语言开发,因此,来自世界各地的软件开发者可以以插件的形式不断完善其焦点功能。其主要特性有:创建在线培训课程、整合现有内容、可在所有设备上运行、无需安装,用户可以自主地根据实际需求开发新的功能。

Sakai

Sakai是一个自由、开源的在线协作和学习环境,由Sakai成员开发和维护。Sakai是一基于Java的面向服务的应用程序,具有可靠性、协作性和可扩展性。

Claroline

Claroline是一个开源的优秀eLearning和eWorking系统,它的设计目标是建立一个高效的、易操作的在线学习和课程管理系统。它特别强调合作性学习活动的管理,支持学习路线、学习追踪功能、内置wiki、小组协作、在线练习和作业、支持实时在线交流。

Atutor

是一款免费的开源的学习管理系统,常用于开发在线课程。用户可以在线学习,快速对基于Web的教学内容进行装配,打包和重新分配。

Olat

Olat是一个基于Web的开源学习管理系统/内容学习管理系统。它基于纯HTML的GUI。OLAT的课程编辑器可以在很短的时间内创建一个新的课程,它的课程系统是基于IMS学习设计的思想。

CityEngine应用影视作品又一成功案例

案例展示之疯狂动物城:奥斯卡最佳动画片

今年大会主题演讲中非常与众不同的一个案例就是如何使用Esri CityEngine来创建迪斯尼电影《疯狂动物城》中美丽梦幻的三维场景艺术与科学的完美结合!迪士尼技术总监也因此拿了奥斯卡奖!

 

一种新型的规则文件驱动生成三维模型技术,核心文件CGA,即python规则文件。通过规则文件在cityengine软件当中即可批量快速生成大场景城市模型,而且城市场景模型可以重复利用。

CityEngine大场景制作在影视中的应用案例

数字绘景 Nowhere land 制作过程


张艺谋的《长城》项目基本结束了,这个项目我们首次使用了Clarisse来渲染大型场景,完成了一系列不可思议的长城和大型山脉的镜头。Clarisse充分利用了计算机内存,不进行任何的重复计算,在超大模型量场景的支持上独树一帜,在3D view中可以完全高模显示,所以也率先被数字环境绘景艺术家们所使用。《长城》还未上映,在完成项目闲暇之余,用Clarisse做了 Nowhere land 这个作品,这样的大型场景也变得越来越容易,做完才觉得有点像《三体》小说里描述的被水滴攻击的效果。

Making Of:

制作过程高清版本下载:
Download

最终效果
city_1

灰模效果
city_3


制作解析

在cityEngine中生成建筑模型,去年在《美队3》的机场大战中我也尝试过用CityEngine制作远景的楼群。cityEngine是依靠自身的规则语言(CGA,即python语言编写)来完成每一个建模的步骤,需要一定的编程能力。今年的siggraph大会上展示了《独立日2》中使用CityEngine制作城市的过程:

making_of_city_1

Zbrush中雕刻悬崖:

making_of_city_2

Speedtree制作树的模型导入Clarisse中进行测试,为了更加方便,我写了一个python的程序可以直接读取Speedtree导出的xml材质连接信息,在Clarisse中可以一键导入:

making_of_city_3

Houdini制作大气效果,感谢Ziko花了十分钟教会了我Houdini的cloud模块,对于Houdini白痴来说已经够用了:

making_of_city_4

从Houdini输出vdb格式导入Clarisse进行渲染:

making_of_city_5

所有资产导入Clarisse测试渲染:

making_of_city_6