静态网站迁移至阿里云OSS的实战过程
2017-01-22 14:52
260 查看
本文作者:Alien,就职于国内某云游戏公司。
本文正在参加“最佳上云实践”评选,来给我们投一票吧:https://yq.aliyun.com/activity/158
之前公司里有大量的静态网站需要维护,一直以来都是用Nginx来提供服务,相关同事通过FTP来管理网站。网络结构是这样的。
维护起来真是累死人了,要给每个人创建一个FTP账号,每个FTP账号权限还都不一样。服务器上还要做负载均衡,还要做数据同步。每天还担惊受怕,担心服务器上宕机。后来实在忍不了了就去决定把这些网站全面迁移至阿里云的OSS上,阿里云的OSS直接可以提供web服务的。
接下来就简单介绍一下我迁移网站的过程以及遇到的一些问题。
首先依然在“Bucket属性”中的“域名管理”中,添加一个自己的域名。
然后去DNS服务器上把自己域名添加一个CNAME记录,指向此Bucket的外网域名。
等待DNS缓存刷新之后访问自己的域名就可以实现网站的访问啦
至此,其实网站的迁移就已经结束了,但是还有许多细节要调整呢。
在“Bucket属性”中的“静态网站”页面,直接写一个默认首页的文件名就可以了。
但是这OSS上这样的设置只能在访问根目录的时候生效,在访问http://alientest.oss-cn-hongkong.aliyuncs.com/alien/这种子目录的时候依然访问的是http://alientest.oss-cn-hongkong.aliyuncs.com/index.html页面,我还以为阿里云的出了BUG,于是赶紧向阿里云的工程师咨询。结果阿里云的工程师答复说OSS的网站功能就是这样设计的,不支持子目录下的默认首页。这下我就犯难了,难道这种子目录就必须使用绝对路径来访问么?
后来我们老大给出了一个让我相当佩服的解决方法,在根目录下的index.html文件中加了一段JS代码让他检测访问的路径实现跳转。
这种代码的意思就是如果访问的路径中包含/alien/那么就跳转到http://alientest.oss-cn-hongkong.aliyuncs.com/alien/index.html这个页面中。完美解决了子目录中不支持默认首页的功能。
(以上Bucket和域名都是我为了写这篇文章临时创建的)
利用阿里云的其他服务来分析日志这事儿我这篇文章里就先不写了。OSS上对静态网站的支持还有一些其他的功能这里也暂时不写了,大家自己去摸索吧,都挺简单的。
通过“访问控制”可以创建子账号,并且根据需求赋予子账号不同的权限。
首先呢,在“用户管理”中新建要给用户,这个很简单了就不说了。
复杂的是需要给这些用户分配策略,在RAM内置的策略中OSS相关的策略只有两个,“AliyunOSSFullAccess”和“AliyunOSSReadOnlyAccess”,一个是可以读写OSS中的所有数据,另一个是可以读OSS中的所有数据,这两个策略权限都太大了,我这里需要具体控制到OSS下的每个Bucket的权限,只能自己自定义授权策略了。
我这里就简单给出两个例子吧,也是我其中正在用的策略。
第一个是授予访问OSS中alientest这个Bucket的所有权限,就是可读可写可删。
第二个是授予访问OSS中alientest这个Bucket的只读权限。
自定义策略写起来还是挺简单的,可以很灵活的定义各种不同的策略。创建完策略后就可以把策略授权给不同用户了。
这样就把各种权限就开放给其他同事了,我在也不用管理一大堆账号密码了,省心啊。
OSS的外网访问费用是00:00-08:00(闲时):0.25元/GB 8:00-24:00(忙时):0.50元/GB。
而阿里云的CDN按照流量计费的话在10T流量内只需0.36元/GB,而且用得越多与便宜,况且CDN还能选择按照带宽计费。
启用CDN功能也是两步搞定。
首先在阿里云的CDN上添加一个新域名,源站类型选择OSS,并且指定Bucket。
创建完成后在域名的“基本信息”中有一个CNAME的域名,在DNS服务器上把这个域名指向这个CNAME就行啦。
也是非常简单的。首先在阿里云的云盾(https://yundun.console.aliyun.com)中的“证书服务”中申请一个证书(有免费的证书哦)。
申请成功后直接点“推送”,推送到CDN。
然后就完事儿了,比Nginx上简单多了吧。
然后可以在CDN上设置是否强制使用HTTPS。另外这里要说一下的是启用HTTPS服务后,CDN的使用会多花一点钱的,具体去查CDN资费吧,其实也不贵。
好了,以上就是我迁移网站到OSS上的整个过程,介绍了我目前用到的一些主要的功能,在迁移过程中遇到的一些坑我写在里面了,希望对你有所帮助。
本文正在参加“最佳上云实践”评选,来给我们投一票吧:https://yq.aliyun.com/activity/158
之前公司里有大量的静态网站需要维护,一直以来都是用Nginx来提供服务,相关同事通过FTP来管理网站。网络结构是这样的。
维护起来真是累死人了,要给每个人创建一个FTP账号,每个FTP账号权限还都不一样。服务器上还要做负载均衡,还要做数据同步。每天还担惊受怕,担心服务器上宕机。后来实在忍不了了就去决定把这些网站全面迁移至阿里云的OSS上,阿里云的OSS直接可以提供web服务的。
接下来就简单介绍一下我迁移网站的过程以及遇到的一些问题。
一、网站文件迁移
首先根据静态网站的数量创建了一大堆的Bucket,这里刚上来就遇到了一点小问题,当我创建Bucket的时候,提示“Bucket数量超过上限”,于是我火速给提了工单给阿里云,阿里云工程师答复说每个账号默认最多创建10个Bucket,在我的要求下,工程师允许我多开了几个Bucket。创建完Bucket后就可以把网站文件都上传了,因为我创建Bucket时设置的是公共读的权限,所以会自动生成一个Bucket域名供用户访问的,在“Bucket属性”中的“域名管理”中就可看到,通过这个域名可以查看网站是否正常。二、更改域名指向
这个时候访问Bucket的域名就可以访问网站了,但是我们需要使用自己的域名才行。这里只需两步搞定。首先依然在“Bucket属性”中的“域名管理”中,添加一个自己的域名。
然后去DNS服务器上把自己域名添加一个CNAME记录,指向此Bucket的外网域名。
等待DNS缓存刷新之后访问自己的域名就可以实现网站的访问啦
至此,其实网站的迁移就已经结束了,但是还有许多细节要调整呢。
三、默认首页。
我们平时访问http://alientest.oss-cn-hongkong.aliyuncs.com/和http://alientest.oss-cn-hongkong.aliyuncs.com/alien/ 这种域名的时候会自动访问所在目录下的一个默认首页的,这里也是需要在OSS上配置一下才行的。在“Bucket属性”中的“静态网站”页面,直接写一个默认首页的文件名就可以了。
但是这OSS上这样的设置只能在访问根目录的时候生效,在访问http://alientest.oss-cn-hongkong.aliyuncs.com/alien/这种子目录的时候依然访问的是http://alientest.oss-cn-hongkong.aliyuncs.com/index.html页面,我还以为阿里云的出了BUG,于是赶紧向阿里云的工程师咨询。结果阿里云的工程师答复说OSS的网站功能就是这样设计的,不支持子目录下的默认首页。这下我就犯难了,难道这种子目录就必须使用绝对路径来访问么?
后来我们老大给出了一个让我相当佩服的解决方法,在根目录下的index.html文件中加了一段JS代码让他检测访问的路径实现跳转。
<script> if('/alien/'==window.location.pathname){ window.location.href='http://alientest.oss-cn-hongkong.aliyuncs.com/alien/index.html' } </script>
这种代码的意思就是如果访问的路径中包含/alien/那么就跳转到http://alientest.oss-cn-hongkong.aliyuncs.com/alien/index.html这个页面中。完美解决了子目录中不支持默认首页的功能。
(以上Bucket和域名都是我为了写这篇文章临时创建的)
四、访问日志
之前使用Nginx的时候是可以通过日志来检查网站有没有异常,在OSS中日志需要手动开启,先创建一个用于存放日志的Bucket,然后在网站的Bucket里“Bucket属性”-“日志管理”中指向新创建的Bucket就行了,可以把所有网站的Bucket日志都放到一个Bucket中,使用日志前缀来区分。利用阿里云的其他服务来分析日志这事儿我这篇文章里就先不写了。OSS上对静态网站的支持还有一些其他的功能这里也暂时不写了,大家自己去摸索吧,都挺简单的。
五、权限管理
之前是有些同事是通过FTP可以管理网站内容的,在OSS身上要实现类似的功能就要借助于他的“访问控制 RAM”(https://ram.console.aliyun.com/)产品了。通过“访问控制”可以创建子账号,并且根据需求赋予子账号不同的权限。
首先呢,在“用户管理”中新建要给用户,这个很简单了就不说了。
复杂的是需要给这些用户分配策略,在RAM内置的策略中OSS相关的策略只有两个,“AliyunOSSFullAccess”和“AliyunOSSReadOnlyAccess”,一个是可以读写OSS中的所有数据,另一个是可以读OSS中的所有数据,这两个策略权限都太大了,我这里需要具体控制到OSS下的每个Bucket的权限,只能自己自定义授权策略了。
我这里就简单给出两个例子吧,也是我其中正在用的策略。
第一个是授予访问OSS中alientest这个Bucket的所有权限,就是可读可写可删。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets" ], "Effect": "Allow", "Resource": "acs:oss:*:*:*" }, { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*: alientest", "acs:oss:*:*: alientest /*" ] } ] }
第二个是授予访问OSS中alientest这个Bucket的只读权限。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetBucketAcl" ], "Effect": "Allow", "Resource": "acs:oss:*:*:*" }, { "Effect": "Allow", "Action": [ 922c "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*: alientest", "acs:oss:*:*: alientest/*" ] } ] }
自定义策略写起来还是挺简单的,可以很灵活的定义各种不同的策略。创建完策略后就可以把策略授权给不同用户了。
这样就把各种权限就开放给其他同事了,我在也不用管理一大堆账号密码了,省心啊。
六、用CDN给网站加速。
利用阿里云的CDN服务给OSS的网站加速好处是大大的。首先加快网站的访问就不说了,最重要的是省钱啊。OSS的外网访问费用是00:00-08:00(闲时):0.25元/GB 8:00-24:00(忙时):0.50元/GB。
而阿里云的CDN按照流量计费的话在10T流量内只需0.36元/GB,而且用得越多与便宜,况且CDN还能选择按照带宽计费。
启用CDN功能也是两步搞定。
首先在阿里云的CDN上添加一个新域名,源站类型选择OSS,并且指定Bucket。
创建完成后在域名的“基本信息”中有一个CNAME的域名,在DNS服务器上把这个域名指向这个CNAME就行啦。
七、使用HTTPS访问网站
既然都写到这里了,那就继续进一步吧,让网站支持HTTPS。也是非常简单的。首先在阿里云的云盾(https://yundun.console.aliyun.com)中的“证书服务”中申请一个证书(有免费的证书哦)。
申请成功后直接点“推送”,推送到CDN。
然后就完事儿了,比Nginx上简单多了吧。
然后可以在CDN上设置是否强制使用HTTPS。另外这里要说一下的是启用HTTPS服务后,CDN的使用会多花一点钱的,具体去查CDN资费吧,其实也不贵。
好了,以上就是我迁移网站到OSS上的整个过程,介绍了我目前用到的一些主要的功能,在迁移过程中遇到的一些坑我写在里面了,希望对你有所帮助。
相关文章推荐
- 实战网站迁移全过程
- 阿里云 CodePipeline 持续集成之发布静态网站到OSS
- 实战网站迁移全过程
- 运维派网站数据迁移过程踩到的坑和教训
- [原创][从mambo到joomla的迁移实战之三]网站由mambo迁移到joomla
- sharepoint 网站迁移一些操作过程
- 网站SEO过程中发现URL重写实现伪静态原来并不难
- 【原创】速度决定成败:网站域名迁移实战分享
- Python3 大型网络爬虫实战 003 — scrapy 大型静态图片网站爬虫项目实战 — 实战:爬取 169美女图片网 高清图片
- 实战项目-小说网站开发过程中难点记录(1)
- 水晶报表在网站迁移过程中出现的问题及解决方法
- 阿里云oss加速网站
- 十分难受的过程.一周的时间,终于把Sharepoint Server 的一个网站集迁移到了另一个FARM中.(一)
- 国内网站下载存储服务使用对比:腾讯云COS 阿里云OSS等
- 网站迁移阿里云之第一小节
- [原创][从mambo到joomla的迁移实战之三]网站由mambo迁移到joomla(未完待续)
- 从SQL SERVER数据库生产网站静态页面的程序开发过程
- 网站迁移过程中遇到的问题
- [原]阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
- 谈谈把网站迁移到阿里云的一些感想和其中遇到的一些问题