awss3存储服务器搭建
1. Django使用S3服务
static静态文件和media多媒体(多为用户上传)需要分目录存储,新建s3utils.py文件:
settings.py添穗升并加S3配置:
因为S3开放了本机访问权限,因为不需要认证。
需要认证的添加 KEY_ID 和ACCESS_KEY:
运行 collectstaticDjango管理命令 :
静态文件应该以 http://horoscope-cxclient.s3.amazonaws.com/static/ 为结尾。
任何上传的文件FileField或ImageField模型上的属性都应该在 http://horoscope-cxclient.s3.amazonaws.com/media/ 中。如果这些模型属性指定upload_to路猜迹径,则存储于 /media/*** 。
如上配置配置成功后,资源访问域名是 https://horoscope-cxclient.s3.amazonaws.com/media/
发现资源加载速度慢了很多,17K耗时将近两秒,而且不同区域访问不稳定。
此时就应该祭出CDN了 知乎CDN
CDN HOST: http://***.cloudfront.net/ ,解析至 http://static.mobileapp666.com 域名下,settings配置:
重启后资源通过 http://static.mobileapp666.com/** 访问,速度有了明显的提高。
AWS_S3_SECURE_URLS: 是否启动安全网址,即是否使用 https , 默认为True,因为https需要申请证书等等一系列处理,暂时设置为False后将使用笑薯 http 协议。
使用 staticfiles
常用命令:
上传目录 需要添加参数 --recursive
AWS CLI命令参考: AWS CLI Command Reference
参考:
django-s3-temporary
cname-support-aws_s3_custom_domain-doesnt
django-wont-serve-static-files-from-amazon-s3-with-custom-domain
Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files
2. 如何用AWS搭建一个自己的BLOG
自己搭芦猜建了一个服务器,在这里也分享一下经验。原文我放在blog4it.com,是我新申请的顶级域名,后面会介绍如何申请这个顶级域名。
做了10多年的IT工作,很想有一个自己的网站,刚好慧与公司鼓励开发部门做自己的网站,就下定决心搞一个。鉴于自己维护一个服务器太麻烦了,不确定阿里云的访问速度如何,最后决定通过亚马逊来搭建一个网站。搭建一个Wordpress的网站很容易,只要以下几步,你就可以拥有一个和你看的一样甚至更好的blog了。
亚马逊提供的服务器包括了1CPU + 1G RAM,可以免核哗猜费用1年,然后使用最低配的系统每年的费用大约是365元。
申请一个AWS账号
选择服务器所在的国家。(重要)
申请一个带Wordpress的AWS云服务器。
检查你的网站已经建好了。
找到你的用户名密码
登陆到你的网络服务器
修改网站的标题和样式
开通新用户的注册。
添加访问量监控
使用自己的域名
今天开篇说一下如何申请一个AWS云服务器,并建立一个Wordpress的instance.
首先当然是打开AWS的网站
http://aws.amazon.com/,点击这个按钮
注册一个新的账号,填写邮箱,密码和地址信息。
填写信用卡信息,我用的是招商银行的全币卡,应该其他的visa或者master card都可以使用。
然后亚马逊会从你的信用改型卡上面扣除1美元的预授权。
接下来就可以进入AWS的console来新建一个instance,一个instance就是一个网络服务器。亚马逊提供了一年的免费试用,如果你建两个服务器那么试用时间就减半。
2. 在建立网络服务器之前,一定要选择一个合适的服务器地址,我尝试了useast, uswest在国内访问都很慢。建议使用新加坡的服务器,美国和中国访问速度都不错。
选择服务器的方法在你的console的右上角:
3. 接下来进入到AWS的console
然后点击这个
然后AWS会显示线面的页面,里面包括了AWS的推荐选项,你可以从中选择一个,AWS就会帮你建一个网上服务器,但是具体的应用比如Wordpress要你自己装
为了方便,直接选择AWS market,里面有别人做好的带应用的服务器模版,搜索wordpress
接下来选择
如果你想通过一个wordpress支持多人建站的话,你要选择WordPress Multisite powered by Bitnami (HVM)
然后选一个免费的instance包括了1个CPU和1GB的内存。
后面有更多的配置,可以直接使用默认配置,点击然后
接下来你会看见下面的界面:
你需要新建一个key pair,并且一定要保存好,你需要通过这个key pair来访问你的服务器,其他人也通过这个key pair可以直接访问你的服务器。
然后点击Launch instance。
接下来你会看到你的新的服务器正在启动中,当启动结束以后,你就会看到下面的界面,离胜利只剩一步了
5. 把上图中的域名输入到你的浏览器中,当~当~当~当~~,enjoy it.
3. 如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)
概要
利用AWS的S3服务托管静态网站后,如何将自己的域名与该站点绑定,并为此域名提供SSL/TSL证书(https)。
面向人群
已经掌握如何利用S3服务托管静态网站。
已经拥有自己的域名。
希望为自己的域名添加安全证书,可以通过https访问自己的静态网站。
实施步骤
在AWS Certificate Manager(ACM)申请证书。
为自己的域名申请证书。比如www.example.com。
在AWS CloudFront Manager(CF)建立分发(Distributions)。
delivery method选择Web。
Origin Domain Name选择托管成静态网站的S3存储桶。
在Distribution Settings节中做以下设定:
* Alternate Domain Names(CNAMEs)里面填写要进行关联的域名,比如www.example.com。
* SSL Certificate选择Custom SSL Certificate,然后在下拉框中选择之前在ACM申请的证书。
其他设置项默虚销认即可。
点击Create Distribution。需要一段时间才能完成配置,等待Status变成Deployed。
这时可以看到Domain Name列下面有一个xxxxx.cloudfront.net,这个地址下一步会游誉举用到。
去自己的域名托管商的管理页面,进行DNS设定。
添加一个CNAME,将自己的域名比如www.example.com的目标设置成第3步记下来的xxxxx.cloudfront.net。
需要一点时间让所有设置生效。
之后,可以通过http://www.example.com访问网站。
如果使用https://www.example.com则会看到浏览器的地址栏前面出现了一个小锁头啦。
要点
ACM必须在“美国东部(弗吉尼亚北部)”区域申请。
CloudFront的CNAMEs中要将自己的神碧域名添加进去。
域名托管商的CNAME中要指向CloudFront的地址。
4. 如何在AWS上部署千万用户级别服务
基础架构
AWS分布在全球12个区域里
每个区域对应着一个地理位置,里面含有多个Availability
Zones(可用区)。这些区域设置在北美,南美,欧洲,中东,非洲,亚太区。
每个AZ实质上是单个数据中心,尽管它们可由多个数据中心构建。
每个AZ有着独立的供电系统和互联网连接。
不同AZ之间以低延迟网络进行连接,这种快速网络可消除物理位置带来的速度影响。
每个区域含有至少两个AZ,共计32个AZs。
借助AZ可创建高可用性的程序架构。
AWS在全球还分布有53个偏远区域(Edge locations)
偏远区域的使用对象是CloudFront,这是Amazon的内容分发网络(CDN)和DNS服务器。
偏远区域的存在使得全球用户都可以享用低延迟网络而不论他们身在何处。建立区块服务(Block Services)
Amazon透过AWS创建了大量高可用和高容错的服务,具体的服务清单可点击这里查看。
缴纳一定的费用,你就可以在个人的应用中使用这些服务而不必为高可用性而忧心。
部分服务位于一个AZ中:CloudFront, Route 53, S3, DynamoDB, Elastic Load
Balancing, EFS, Lambda, SQS, SNS, SES, SWF。
即使是使用单个AZ的服务,其高可用架构也是足够强大的。
1个用户
在这个时候,开发者=用户。你的架构看起来是这样的:
运行单个实例,如t2.micro。你可以为你的服务器选择不同的CPU,内存,存储设备和网络环境。
该服务器承载了全部web任务,如:web应用,数据库,管理器等。
使用AmazonRoute 53进行DNS管理。
为该实例附加一个Elastic IP地址。
那么随着用户数的增加,我们需要如何进行升级改造,直至能为千万用户提供优质的服务呢?强调文字
优化策略
采用多主机模式
尝试使用Amazon数据库服务,如Amazon RDS(关系数据库),Amazon DynamoDB(NoSQL数据库),Amazon Redshift。
逐步从SQL数据库转为NoSQL数据库,特别是数据量超过5TB,你的应用对低延迟敏感的时候。
使用Elastic Load Balancer(弹性负载均衡器),它可以对主机进行健康检测以确保网络的通畅,同时可以帮助实现网络的扩展。
垂直升级
需要更强的实例类型,例如c4.8xlarge或者m3.2xlarge。
停止使用当前的服务器,换用功能更强大的机器,如:244GB RAM,40核CPU。
某些Amazon服务提供了Provisined IOPS选项以便用户自行配置变更,这样一来用户可以使用类似DynamoDB的扩展服务。
类似上面的做法就叫做垂直升级。但其有个缺点,就是一旦机器出错,你的网站也会停止运作了。所以要尽量避免单个实例的做法。
自动扩展
如果你一直在为峰值负载而努力,如黑色星期五,那么其实是在浪费金钱。更好的解决方案
列表内容
是按需分配,这就是Auto Scaling(自动扩展),在计算机群组中实现自动化的大小变更。
你可以为你的容量池定义最大值和最小值。
CloudWatch是一个管理服务,已内置到所有的Amazon应用中。
CloudWatch事件会触发扩展。
触发事件可以是CPU占用率,时间延迟,网速等等。
你也可以向CloudWatch导入自定义基线,按照你的意愿来触发扩展。
架构分解
使用SOA/微服务,使你的服务层组件化。
这样做的好处是单独的服务可以独立地进行扩展,从而大大增加了灵活性和可用性。
SOA是Amazon提供的重要架构组件。
避免重复劳动
把精力投入到能使你的业务与众不同的事情上。
Amazon提供了很多高容错的服务。例如,排队(SQS服务),邮件,转码,搜索,数据库,监控等等。所以类似的服务都不必再次编写了。
用户数>千万+
当用户达到千万级别的时候,你考虑的策略应该是这样的:
多AZs模式
在不同层之间执行ELB(弹性负载平衡)。除了web层,在应用层,数据层等层里也需要进行ELB。
能够自动扩展
使用面向服务的架构
缓存架构内和外的数据
使用Amazon S3和CloudFront。S3用于存储静态数据,如js,CSS,图像等,具有足够的扩展性。CloudFront可对数据进行缓存。
使用Amazon SES来进行邮件发送。
使用CloudWatch进行监控。
对数据写入执行如下的策略:
联结 – 根据功能划分不同的数据库。
分表 – 把一个数据集分解到多个主机上。
把部分功能放到其他类型的数据库上(NoSQL,graph等)。
不断优化你的应用和整个架构堆栈,针对瓶颈进行分析并找出解决方法。
5. 2018-12-09基于AWS S3协议搭建个人云存储服务
基于AWS S3协议搭建个人云存储服务
su root
mkdir /data
mkdir /data/aws_s3
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
mv minio /usr/local/bin/
chmod +x /usr/local/bin/minio
minio server /data/aws_s3/
Endpoint: http://192.168.1.105:9000 http://127.0.0.1:9000
AccessKey: Q3RZEATLVD576K68LVEM
SecretKey: wshme+
Browser Access:
悄脊 http://192.168.1.105:9000 http://127.0.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://192.168.1.105:9000 Q3RZEATLVD576K68LVEM wshme+
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
java: https://docs.minio.io/docs/java-client-quickstart-guide
python: 谈运滚 https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
含余 .NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
6. Amazon AWS 使用心得(摸索篇一)
本文主要罩老胡讲述本人使用过程中,Amazon Aws 内常用模块说明。
1. 固定IP怎么配置?
答: EC2默认动态IP,每次实例重启,IP都会发生改变。这么做的好处,个人理解是鼓励大家不要使用免费实例。嘿嘿...
而如果选择收费实例时,可选择绑定IP,达到固定IP效果。具体配置如下图:
1.1. 分配弹性IP
1.2. 将弹性IP关联至EC2 实例
2. 负载均衡的使用?
答: 个人感觉使用AWS负载能减轻本人的运维工作,毕竟不是专业运维人员。比较明显的好处就是,不需要在服务器中安装nginx搭建负载了。
具体配置如下图:
2.1. 创建负载均衡器,选择Application Load Balancer。
2.2. 填写负载均衡器信息。
2.3. 选择EC2所在区
2.4. 选择或配置安全组,继续下一步;
2.5. 配置路由,填写完成继续下一步,具体如下图:
2.6. 选择应用所在EC2实例,并提交审核。
2.7. 等待负载均衡器安装完成,即可使用。
1. 访问权限问题
答: 如果是公开的S3存储桶,则忽略此项。要开启S3 API访问权限,需配置2步:
1.1. 配置阻止公有访问(存储桶设置),如下图:
1.2. 配置存储桶策略,内容大概:
2. 静态页面托管问题
答: S3自身除非公开存储物拦桶,否则无法含袭直接访问存储桶数据。如想通过存储桶来托管静态页面,目前知道的需注意以下2点:
2.1. 存储桶名词需与域名保持一致;
2.2. 为避免直连存储桶,可考虑使用CloudFront来实现转发达到目的。
7. 如果我自己在AWS上手动装一个redis数据库, 我是买EC2 还是S3实例来搭
如果直观的理解你的问题,那答案当然是EC2啦。
因为:
EC2就是弹性计算单元(也就是虚拟机的意思),用它来搭建Redis自然是没有什么问题的。
而S3是对象存储系统, 他是用来存放数据的(你可以简单的把他理解为移动硬盘),对象存储系统的确提供了简单的托管静态网站的功能,但这也基本上是它的极限了。
像redis这样严重依赖操作系统提供系统调用的应用程序,使用EC2服务才是正解。 当然AWS也提供了托管的redis服务(鼠标点几下,开箱即用),不过,这并不在你的问题的考虑范围内。
8. 【Minio】基于AWS S3协议搭建个人云存储服务
在2007年,GlusterFS演变为大型分布式存储方案后,任何配备合适硬件的公司,单位都可以利用个做分布式的流媒体,数据分析。在2011年,Red Hat收购了GlusterFS.
Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。
Minio 提供对象存储服务,兼容了 AWS S3 存储协议,用于非结构化的数据存。非结构化对象,比如图像,音、视频,日志文件,备份镜像…等等管理不方便,不定长,大小变化大、类型多,云端的访问复杂,minio就是来解决这种场景的。非结构化的文件从数KB到5TB都能很好的支持。开源并且用 Go 语言开发,有web操作界面,我们可以用它来搭建兼容S3协议的存储云服务。
Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
官网: https://minio.io
那么,如何自己搭建一个私有的S3存储云服务呢?
官方的话是推荐用Docker来搞,我们先用普通的二进制文件来直接解决了!
######################################################################################
# mkdir /data/aws_s3
# wget https://dl.minio.io/server/minio/release/linux-amd64/minio
# mv minio /usr/local/bin/
# chmod 755 /usr/local/bin/minio
# minio server /data/aws_s3
#############################################################
Created minio configuration file successfully at /root/.minio
Endpoint: http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey: /
Region: us-east-1
SQS ARNs:
Browser Access:
http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
################################################################
$ mc config host add myminio http://10.5.10.89:9000 U3XLU4IMXY3IDKHU268F /
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
Drive Capacity: 8.3 GiB Free, 9.1 GiB Total
##############################################################
我们就成功启动了minio的s3服务,默认端口9000,可以通过网页访问:
http://10.5.10.89:9000
http://127.0.0.1:9000
http://172.17.0.1:9000
注意 :第一次打开时候需要填写AccessKey和SecretKey才能进入,我们上面启动服务的时候,已经看到屏幕有输出:
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey:
把这两个Key填入,就能顺利进入,进入后展开页面如下:
这就是我们的S3云存储的管理页面了,看着是不是和七牛什么的提供云存储的产品页面挺像的,大家都是基于S3协议开发的!
上传个文件试试:
点击右下角的红色小加号按钮,弹出的菜单选择”create bucket”则会创建一个桶,输入名字”test”
点击刚才那个红色小加号按钮,这次选择”Upload file”上传文件,给这个桶上传了一个叫login.txt的文本文档
此时页面如下:
至此我们可以看到文件已经上传,要访问这个文件,可以点击文件右侧的三个点的按钮,选择分享就可以得到一个外链,在浏览器中访问这个外链就可以直接访问文件。
那么文件到底被存到哪里去了呢,我们启动命令中其实指定了工作路径/data/aws_s3/,所以到服务器这个目录下看看:
# ls /data/aws_s3/
test
# ls /data/aws_s3/test/
login.txt
桶名称test是一个目录,其下就有上传的login.txt文件。
如果想指定ip和端口,可以这样写:
# minio server /data/aws_s3 --address=0.0.0.0:9000
如果想让服务在后台运行:
# nohup minio server /data/aws_s3 --address=0.0.0.0:443 &
[1] 19882
// nohup: 忽略输入并把输出追加到启动命令的当前目录下的 "nohup.out"文件
minio可以用来搭建分布式存储系统 GlusterFS,这样就成了真正的云存储了,有时间再研究下把它从现在的单机测试,变成一朵存储云!
minio官网: https://minio.io
minio官方文档: https://docs.minio.io/docs/minio-docker-quickstart-guide
minio github主页: https://github.com/minio/minio
9. 如何使用Linux命令行访问Amazon S3云存储
在Ubuntu或者Debian上安装s3cm
$ sudo apt-get install s3cmd
在Fedora上安装s3cmd
$ sudo yum install s3cmd
在CentOS或者RHEL上安装s3cm
$ s3cmd put –acl-public 4.png s3://dev99 4.png -> s3://dev99/4.png [1 of 1] 30778 of 30778 100% in 8s 3.34 kB/s done
先从官方站点上下载rpm包,然后手工安装。64位CentOS或RHEL 6,用以下命令:
$ sudo rpm -ivh s3cmd-1.0.0-4.1.x86_64.rpm
配置s3cmd
第一次运行s3cmd需要运行下面的命令做配置:
$ s3cmd –configure
它将会问你一系列问题:
AWS S3的访问密钥和安全密钥
对AWS S3双向传输的加密密码和加密数据
为加密数据设定GPG程序的路径(例如,/usr/bin/gpg)
是否使用https协议
如果使用http代理,设定名字和端口
配置将以保存普通文本格式保存在 ~/.s3cfg.
10. 怎么用亚马逊的云服务 ec2 和s3
你可以使用aws console 来进行EC2 和 S3的配置。 EC2就是虚拟机,S3就是一个存储空间。
你要是想使用php的sdk,请参阅文档
http://docs.aws.amazon.com/aws-sdk-php-2/latest/
为了得到更优质的服务,推荐您在AWS论坛上求助:
https://forums.aws.amazon.com/index.jspa