标签归档:OSS

将静态网站托管至阿里云OSS

写在前面的话: 因为囊中羞涩,当时只给域名101kpa.com买了SSL,另一个已备案的域名wangjingye.com便闲置了很久,一直觉得可惜。最近偶然发现OSS静态网站托管功能可作为此域名的寄存点,就暂时用于个人介绍了。


静态网站通过阿里云的静态网站托管功能托管到OSS的存储空间(Bucket),并使用Bucket访问该网站的域名。
注:静态和动态的区别在于程序是否在服务器端运行。在服务器端运行的程序、网页、组件,属于动态网页,它们会随不同客户、不同时间,返回不同的网页, ASP、PHP、JSP、ASPnet、CGI等。在客户端运行的程序、网页、插件和组件属于静态网页,如 html页、Flash、JavaScript等等。

使用方法:

1.配置静态网站托管时,需要指定网站默认主页和默认404页:
—默认主页是通过浏览器访问静态网站域名,OSS返回网站主页。默认主页指定的文件必须是Bucket允许匿名访问的文件在根目录下。如果子目录主页也打开,这个文件也应该存在于子目录下。
—默认404页是通过浏览器访问的Bucket当内部文件出现404错误时,OSS返回错误页面。默认404页指定的文件必须是Bucket允许匿名访问的文件在根目录下。
2.默认主页或默认404页中指定文件的读写权可以通过ACL设置为public-read,确保该文件允许匿名访问。
3.静态网站配置完成后,如果使用Bucket当默认域名访问静态网站时,静态网站将以文件的形式下载到本地。要确保访问静态网站是显示行为,必须是Bucket绑定自定义域名,并通过自定义域名访问静态网站。

注意事项:
因为用的是OSS托管静态网站,让不带www的和带www的均能访问,需要做以下设置(我试了很久才解决,官方应该给出解释):
1、OSS的backet绑定两个域名,一个不带www,一个带;
2、不带www打开根域名CDN;
3、CNAME解析@到CDN地址;
4、CNAME解析www到Bucket默认域名。(注意:若www选择隐性/显性进行分析URL,虽然可以跳转Bucket默认域名可以显示网页,但会同时提示下载index.html)
5、如果设置后浏览仍有问题,可以先清除浏览器缓存,再排除其他问题。
6、CDN的私有Bucket回源功能和OSS的静态网站托管功能的默认首页功能冲突,不用开启。
7、用于托管的OSS的Bucket可不开启。

2016新的一年开启新的架构

© Written by J.Y. WANG

结构工程师搭建网站,写写自己的东西也算是某种舒缓心中憋闷的方式之一。我常碎碎念希望能多了解世界真实的运行规律,哪怕没什么实际的名闻利养。但友人也常玩讽道,站得更高才能看得更真切,不在高位自然无法明白高处的风景。我对此也是无话可说。也许只是同样的风景,起起伏伏后会有不同的体会吧。做自己喜欢的,看看书,充实一下自己,一切都是上天最好的安排。初步打算写两部分内容:一是大道至简系列,关于结构设计的一些基本理念;二是欧洲规范学习系列,关于EUROCODE的应用。既然把计划写在这里了,那么就督促自己坚持把这两个系列完成。

好了言归正传,为了能让自己的那点思想在这个健壮的小站上愉快的流淌,基业长青。新的一年换用大型站点的架构,俗话说做事看世界要有格局,当然我自己的小站也要有格局,就是架构要有优良的鲁棒性,所谓麻雀虽小五脏俱全。

架构的目的:
1、方便系统升级自己折腾,方便备份,安全性高。
2、实现动静分离。
oss_in_website

阿里云的配置如下:
ECS配置
CPU:1核;内存:2 GB;操作系统:CentOS 7.4 64位;带宽:2Mbps;
系统盘 40GB;数据盘 40GB;

RDS配置
CPU:1核;内存:1 GB; 容量:40GB;

使用OSS;使用CDN;

将整个系统至于云盾的保护之下。
使用数据盘单独挂载/var/www目录,将OS系统与网站数据分离。
使用RDS,将数据库从数据盘分离。
使用OSS,将图库和附件库从数据盘分离。
使用CDN,分发加快OSS静态数据加载速度。

经过此番处理后:由于网站数据对应数据盘,升级或变更操作系统将不影响网站数据;将数据库搬至云端RDS后,数据库单独管理,有效防止网站攻击,可时时自动备份,安全可靠;将较大文件如图片、附件等静态文件搬至OSS并实现CDN分发,提高加载速度,实现动静分离。通过以上架构,即使系统盘,数据盘完全擦除也可轻松重新建站,因为数据库和大型文件均搬至云端。并且哪怕是极端情况,磁盘损毁,网站遭到恶意攻击,均可轻松应对。

最后附上一个技术细节,所谓细节据定成败。(以下部分20180101更新)
附录:关于ossfs的使用。另外关于LAMP系统搭建请看阿里云服务器搭建LAMP环境

1、首先用ps aux | grep apache 看下httpd运行于那个用户下,默认是apache用户。
2、然后下载安装对应版本的ossfs最新安装包。

wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1507811577850/ossfs_1.80.3_centos7.0_x86_64.rpm
yum localinstall ossfs_1.80.3_centos7.0_x86_64.rpm

3、写入OSS的AKID与AKS至密码文件,然后修改文件执行权限和用户组。
echo 你的第一个bucket:你的AKID:你的AKS> /etc/passwd-ossfs
echo 你的第二个bucket:你的AKID:你的AKS>> /etc/passwd-ossfs

chmod 640 /etc/passwd-ossfs
chown root:apache /etc/passwd-ossfs

4、然后以apache用户建立目录。

sudo -u apache mkdir /var/www/html/wp-content/你的图库名
sudo -u apache mkdir /var/www/html/wp-content/附件库名

5、加载OSS的bucket

ossfs 你的第一个bucket 你的图库路径 -o url=http://oss-cn-qingdao-internal.aliyuncs.com -o uid=用户号,gid=用户组号,umask=007,allow_other
ossfs 你的第二个bucket 附件库路径 -o url=http://oss-cn-qingdao-internal.aliyuncs.com -o uid=用户号,gid=用户组号,umask=007,allow_other

6、需要注意的问题:
– 对应好自己系统的安装包;
– 记得修改密码文件的权限和用户组;
– url填写内网地址,并从oss-cn开始填写;
– 如果使用allow_other,会变成777权限,不安全。如果不使用allow_other,把用户ID改为apacheID,就会变成700权限,就会导致无法访问的问题。解决方法:使用uid,gid,umask参数控制用户和用户组及其权限。
– 设置自动挂载ossfs方法:
在/etc/init.d/目录下建立文件ossfs,把模板文件中的内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息,其中同样可以使用uid,gid,umask参数。
建立的ossfs脚本赋予可执行权限 chmod a+x /etc/init.d/ossfs
把ossfs启动脚本作为其他服务,开机自动启动 chkconfig ossfs on