新浪云计算平台SAE应该算是国内第一个提供云计算服务的平台,虽然说国外的谷歌GAE已经很流行了,但是新浪SAE推出后还是赢得了不少开发者的倾慕,从一开始的免费试用,到后来慢慢地进行变相收费,相信原先用过新浪SAE的朋友后来都慢慢搬出来了。
不过,就在前不久百度BAE迁移到百度开放云平台实行全面收费后,新浪SAE却开始全免费了,即提供一定额度的免费使用配额,代码空间是100MB,Storage 空间限制(单Domain)为10GB,总共可以创建5个 Domain,MySQL 存储空间为5GB,提供Memcache、域名绑定等服务。
仔细算了一下,新浪云计算SAE免费空间配额基本上已经够一个初学者搭建自己的应用或者个人博客来使用了,还没有免费空间的朋友可以申请新浪云计算SAE空间用一用。之前国内有不少的“跟风”云产品,像之前的京东JAE、移动MM、盛大AE等现在差不多处于“边缘”的地步了。
对于免费空间,建议还是选择那些老牌有强大资金实力支撑的空间,这样的空间虽然申请难度不小,但是用起来让人放心。
新浪SAE免费100MB空间和10GB Storage空间申请使用-PHP,Mysql,绑域名
一、新浪云计算SAE空间申请使用
1、新浪云计算SAE官网:
官方网站:https://sae.sina.com.cn/
2、新浪云计算SAE空间免费配额是:单帐号应用数5个,代码空间限制100MB,Storage 空间限制(单Domain)为10G,Storage Domain 数量5个,MySQL 存储空间5G,HTTP 并发连接数 500个。详细的空间配置如下图:(点击放大)
3、新浪云计算SAE空间还利用分钟配额来限制每一个应用的资源消耗,即:“在1分钟内1个应用的某项服务所消耗资源的最大量”。比如,普通等级用户的Storage请求数分钟配额为5000,表示1分钟内该用户的某个应用最大可以支持5000次Storage请求。
4、当超过配额时,这个应用的该项服务会被短时间暂时禁用,之后自动恢复。不同的账户等级对应不同的分钟配额,用户可以根据自身业务需求选择合适的账户等级。见下表:(点击放大)
5、用你的微博账号登录新浪SAE,然后直接点击“创建新应用”。
6、输入你的新浪SAE的二级域名、应用名称等。
7、新浪SAE空间在创建时支持一键创建Wordpress、Emlog等我们常用的PHP建站应用,不懂如何配置新浪SAE空间的朋友建议直接选择这类应用。高手朋友,可以自己选择空PHP应用来创建。
8、点击创建后,会提示你还要进入到初始化页面中。
9、这时实际上是进放到了Wordpress的安装页面了,输入你的Wordpress网站名称、用户密码、个人邮箱等,点击安装。
10、新浪SAE空间上的Wordpress实际上专门为满足SAE空间条件而修改的,因此Wordpress的版本还处于比较老旧的状态,但是不影响我们使用SAE建站。
11、经过测试,直接从新浪SAE空间一键创建Wordpress已经默认自带了我们使用Wordpress过程中用到的统计、分享、图片高亮、SMTP等插件。
12、新浪SAE上的Wordpress支持设置Wordpress固定链接。
13、图片等附件上传也是正常的,只不过是上传到新浪SAE上的Storage 空间中。
二、新浪云计算SAE空间管理操作
1、在新浪云计算SAE空间上的管理首页中,能够看到应用设置、成员管理、代码管理、开发与调试、安全与运维、计费统计、服务管理等功能,对于空间的资源的使用情况也是一目了览。(点击放大)
2、在“代码管理”中就可以建立代码的各种版本,这个主要是用来方便开发者调试程序用的。
3、Appconfig提供用户自定义 web 服务器配置的功能。目前可以自行配置的功能包括:目录默认页面、自定义错误页面、压缩、页面重定向、页面过期、设置响应header、基于主机和认证的访问控制。(点击放大)
4、自定义错误页面:支持自定义诸如404等错误页面,从而提供适合您应用的个性化错误页面。添加的方法也比较简单,先设置错误状态码,填写页面地址(这个地址是相对路径),最后点击添加。
5、默认的是使用可视化的操作来添加Appconfig规则的,当然如果你熟悉Appconfig相关的语法,可以直接使用高级模式,直接往Appconfig中写入语法规则即可。
6、URL重写(rewrite):支持自定义URL的展现形式,将动态生成的URL重写为您期望的格式。这个比较重要,因为现在不管什么应用程序都会有伪静态的URL重写要求,利用URL重写(rewrite)就可以达到普通PHP空间利用Htaccess重写URL的目的。
7、页面压缩:自定义页面压缩条件,从而节省带宽消耗,以及增加页面加载速度,这个可以让我们的页面打开速度更快。操作方法也很简单,直接添加你想要压缩的静态文件,例如CSS、JS等,确认保存。
注:相关网站建设技巧阅读请移步到建站教程频道。
三、SAE空间自定义 web 服务器配置语法
1、Appconfig提供了强大的Web服务器配置,实际上这也是将SAE打造为PHP空间的有力工具,掌握好这些语法可以帮助我们更好地来使用新浪SAE空间。
2、目录默认页面:当访问url没有指定文件时,指定返回的文件。
语法:
- directoryindex: FILE [...]
directoryindex在config.yaml文件中仅有一项
例子:
- directoryindex: aaa.php bbb.html
3、自定义错误页面。
语法:
- errordoc: httpcode error_file
httpcode是诸如404、302之类的http响应码,error_file是服务器以httpcode响应请求时响应的文件。errordoc在config.yaml中可以配置多项。
例子:
- errordoc: 404 /path/404.html - errordoc: 403 /path/403.html
4、压缩
语法:
- compress: if (CONDICTIONs) compress
在compress中,CONDITIONs只能有一个CONDITION。
例子:
- compress: if (%{RESP:Content-Length} >= 10240) compress
- compress: if (%{REQ:Referer} == "gphone") compress
- compress: if (%{REQUEST_URI} ~ "/big/") compress
注解
通常情况,我们根据响应头Content-length,判断是否需要压缩,例如:if (%{RESP:Content-Length} >= 10240) compress,这个静态页面,如js,css,html都是没有问题的。但是对php脚本,响应header中没有Content-length这个头,它使用Transfer-Encoding: chunked,这个头表示页面输出用chunked编码。此时要实现压缩,可以通过应用配置,同时在PHP脚本中输出相应头的方式实现。
5、URL重写
语法:
- rewrite: if (CONDITIONs) goto target_url
在rewrite中,CONDITIONs支持多个CONDITION。除HTTP响应header(没办法根据响应 header 做重定向)外都可以出现在rewrite的CONDITION中。
target_url表示重定向的目标url,在target_url可以以$N的形式引用CONDITION中以%{REQUEST_URI}为条件正则匹配到的组, 以%N的形式引用以%{QUERY_STRING}为条件正则匹配到的组。
例子:
# 强制使用https访问
- rewrite: if (%{REQ:X-Forwarded-Proto} != "https") goto "https://%{HTTP_HOST}%{REQUEST_URI}"
# 当 url 匹配 urldir/(.*) ,并且 输入 header referer 等于 sina 时,跳转至页面 /usr/$1,$1 表示刚刚匹配的 urldir/(.*) 中的 (.*) 部分。
- rewrite: if (%{REQUEST_URI} ~ "urldir/(.*)" && %{REQ:REFERER} == "sina") goto "/url/$1"
# 当 url 匹配 urldir/(.*),并且请求的是一个目录时,跳转至 /url/$1
- rewrite: if (-d && %{REQUEST_URI} ~ "urldir/(.*)") goto "/url/$1"
# 当 url 匹配 path,并且请求的不是一个文件时,跳转至 /url/query.php
- rewrite: if (!-f && %{REQUEST_URI} ~ "path") goto "/url/query.php"
# 当查询串等于so,并且 url 以 zhaochou 结尾时,跳转至 /url/%1,%1 表示 query_string 匹配到的部分。
- rewrite: if (%{QUERY_STRING} ~ "^(so)$" && %{REQUEST_URI} ~ "zhaochou$") goto "/url/%1"
# 当查询串不包含sohu,并且 url 以zhaochou结尾时,跳转至/url/query.php?%{QUERY_STRING},%{QUERY_STRING}表示查询串。
- rewrite: if (%{QUERY_STRING} !~ "sohu" && %{REQUEST_URI} ~ "zhaochou$") goto "/url/query.php?%{QUERY_STRING}"
# 如果 url 既不是文件,也不是目录,跳转至 index.php?%{QUERY_STRING}
- rewrite: if (!-d && !-f) goto "/index.php?%{QUERY_STRING}"
警告
如果有形如%{REQUEST_URI} ~ “^(.*)$”类的请求,一定要加上是否是目录或者文件,防止无穷的rewrite。 在goto语句中,虽然某些时候可以不以/开头,但是强烈建议以/开头。
6、指定过期时间和头信息
语法:
- expire: if (CONDITION) time seconds
- mime: if (CONDITION) type content-type
seconds是秒数,content-type是表示文档类型的字符串。
例子:
- expire: if (%{REQ:REFERER} ~ "sina") time 10
# 如果 url 请求文件的扩展名是 pdf2,设置 Content-Type 为 application/pdf
- mime: if (%{REQUEST_URI} ~ ".pdf2$") type "application/pdf"
- mime: if (%{REQUEST_URI} ~ ".pdf2$") type "application/pdf"
# 只要请求 header referer 包含字符串 sina,就设置 Content-Type 为 text/plain
- mime: if (%{REQ:REFERER} ~ "sina") type "text/plain"
if语句支持单个CONDITION。可以出现在CONDITION中的变量参考 Apache Docs ,只支持字符串和正则匹配。
7、基于主机的访问控制
语法:
- hostaccess: if (CONDITION) deny IP
- hostaccess: if (CONDITION) allow IP
if语句只支持单个CONDITION。
IP需要加引号,IP可以是一个或多个ip地址、all(所有IP地址)、 CIDR (如108.192.8.0/24),具体可以参考Apache配置,allow是白名单,deny是黑名单。
例子:
# 禁止127.0.0.1 访问private目录
- hostaccess: if (%{REQUEST_URI} ~ "/private/") deny "127.0.0.1"
# 只允许127.0.0.1 访问.conf结尾的文件
- hostaccess: if (%{REQUEST_URI} ~ ".conf$") allow "127.0.0.1"
# 禁止127.0.0.1 的所有访问(这个要慎用)
- hostaccess: deny "127.0.0.1"
# 对cron任务保护,防止被外部抓取,我们将cron任务放在cron目录下(sae中cron服务执行时,走的是内部网络)
- hostaccess: if (%{REQUEST_URI} ~ "/cron/") allow "10.0.0.0/8" 允许10打头的所有IP
# 对于屏蔽一组IP地址,可以写成子网掩码形式,或者将多个IP之间加以空格。子网掩码形式如下:
- hostaccess: if (%{REQUEST_URI} ~ "/cron/") deny "108.192.8.0/24" 屏蔽108.192.8打头的所有IP
# 允许108.134.13.24和108.122.122.13这两个IP
- hostaccess: allow "108.134.13.24 108.122.122.13"
8、HTTP基础认证
语法:
- passwdaccess: passwd "USERNAME:PASSWORD..."
- passwdaccess: if (CONDITION) passwd "USERNAME:PASSWORD..."
例子:
# 所有访问都要密码,允许用户writer用密码123zxc访问
- passwdaccess: passwd "write:123zxc"
# 访问secret目录需要密码,允许用户test用密码123qwe访问,用户coder用密码123asd访问
- passwdaccess: if (%{REQUEST_URI} ~ "/secret/") passwd "test:123qwe coder:123asd"
# 访问.text结尾的文件需要密码,允许用户writer用密码123zxc
- passwdaccess: if (%{REQUEST_URI} ~ ".text$") passwd "writer:123zxc"
# 用户的网站后台程序都放在admin目录下,需要对admin目录做密码保护
- passwdaccess: if (%{REQUEST_URI} ~ "/admin/") passwd "admin:admin123"
if语句中只支持单个CONDITION ,%{REQ:HEADER_NAME}, %{REQUEST_URI}可以出现在CONDITION中,只支持字符串和正则匹配。
四、 新浪云计算SAE空间绑定域名和MysqL管理
1、目前SAE支持绑定域名,没有BA号的域名也能绑定到SAE空间上,但是绑定域名以后,通过独立域名请求将访问海外数据中心,产生的流量将是原二级域名(yyou.sinaapp.com) 流量的二倍,通过yyou.sinaapp .com访问的流量不变。
2、直接到新浪SAE管理首页中点击“独立域名绑定”。
3、然后输入你的域名。
4、接着页面会提示你修改域名的DNS记录,一般要做两个记录:CNAME和A记录,前者是为了解析域名到新浪SAE空间上,后者是为了验证域名所有权。
5、这是域名修改DNS的结果,参考如下:
6、新浪SAE空间的MySQL 存储空间为5G,支持使用PHPMyAdmin管理数据库,可以快速查看当前MySQL实时运行状况。
7、在使用PHPMyAdmin管理数据库时,不要用PHPMyAdmin进行大规模的删除、更新等操作,否则可能造成应用的MySQL被禁用。
五、新浪云计算SAE空间代码和存储管理
1、新浪SAE空间与普通的PHP空间的文件管理方式有很大的不同,初学者一定要明确代码提交、发布、运行等一系统过程,下图就可以完整地解释新浪SAE空间代码从提交到运行的机制。
2、对于已经上传到新浪SAE空间上的代码,我们可以直接使用新浪SAE空间提供的在线编辑代码的方式,修改后的代码直接点击保存就可以发布了。
3、当然,对于大量的代码就需要用到新浪SAE空间代码管理工具TortoiseSVN,有关TortoiseSVN的使用方法可以参考免费百度云平台BAE空间第三部分:百度云存储和空间文件管理。
4、这里是TortoiseSVN下载地址,还有TortoiseSVN简体中文语言包下载地址。 TortoiseSVN简体中文语言包安装后,在SVN中Settings——Language——中文简体——确定,调用中文语言。
5、Storage是SAE为开发者提供的分布式文件存储服务,用来存放用户的持久化存储的文件,我们在SAE空间上安装的Wordpress除了代码其它的如图片等附件都应该存放在Storage空间上,这样应用重启后数据依然是存在的。
6、在Windows和Mac系统下面,你可以使用Cyberduck来操作Storage。Cyberduck下载地址:Cyberduck下载。打开Cyberduck,点击左上角的“新建连接”。
7、在弹出的对话框中填写连接相关信息:类型:Swift。服务器:auth.sinas3.com。端口:443(默认)。用户名:应用AccessKey(在应用“汇总信息”页面中查看)。密码:应用SecretKey(在应用“汇总信息”页面中查看)。填写完成后点击连接。如果弹出auth.sinas3.com,api.sinas3.com相关证书问题,请选择信任。
8、连接完成后,将会看到该应用Storage的所有Domain列表,双击Domain名称,可进入Domain,列出文件和文件夹,此时,可进行文件的上传、下载、以及删除操作。
六、新浪云计算SAE空间使用存在的问题
1、目前来看,新浪云计算SAE空间免费的额度是有的,但是对于免费用户还是严格限制了空间资源的使用,免费额度的基本定位应该就是用户仅测试和使用,一旦用户的流量多起来的话就很容易超出了免费配额并导致费用问题。
2、新浪云计算SAE空间也算是国内免费空间的典型代表了,但是刚刚接触建站的朋友还是不要让SAE空间给“误入歧途”了,普通的PHP空间与SAE空间有很大的区别,在安装和使用常用的PHP应用时都会发现很多不适应的问题。