使用django-swiftbrowser实现swift的web访问
来源:互联网 发布:python脚本服务器部署 编辑:程序博客网 时间:2024/06/01 18:46
这个利用django-swiftbrowser来实现,步骤如下:
参考:https://github.com/cschwede/django-swiftbrowser
效果如下
登陆页(这里使用keystone验证)
登陆以后可以浏览container,继续点击就是object,可以下载、上传、生成tempurl
1、 安装swiftbrowser
pip installdjango-swiftbrowser
2、 配置swift-proxy,确保开启temurl和formpost这两个中间件,验证即可以使用authtoken也可以使用tempauth,配置分别如下:
使用authtoken
[pipeline:main]
pipeline = catch_errors healthcheck cache tempurl formpost authtoken keystone proxy-server
使用tempauth
[pipeline:main]
pipeline = catch_errors healthcheck cache tempurl formpost tempauth proxy-server
其他参考配置项
[root@host-10-10-2-41swift]# vim proxy-server.conf-swiftbrwser-tempauth
use =egg:swift#keystoneauth
operator_roles= admin, _member_,SwiftOperator
#operator_roles= admin, SwiftOperator
reseller_admin_role=admin
is_admin= false
cache =swift.cache
[filter:authtoken]
paste.filter_factory= keystoneclient.middleware.auth_token:filter_factory
admin_tenant_name= service
admin_user= swift
admin_password= swift
auth_host= 10.10.1.8
auth_port= 35357
auth_protocol= http
delay_auth_decision= true
#signing_dir= /tmp/keystone-signing-swift
reseller_prefix=AUTH_
[filter:tempurl]
use =egg:swift#tempurl
[filter:formpost]
use =egg:swift#formpost
[filter:tempauth]
use =egg:swift#tempauth
user_admin_admin= admin .admin .reseller_admin
user_test_tester= testing .admin
user_test2_tester2= testing2 .admin
user_test_tester3= testing3
auth_prefix= /auth/
[filter:staticweb]
use =egg:swift#staticweb
[filter:account_quotas]
use =egg:swift#account_quotas
[filter:container_quotas]
use =egg:swift#container_quotas
3、 配置django的setting文件
使用authtoken
[root@host-10-10-2-41swift]# cat /usr/lib/python2.6/site-packages/swiftbrowser/settings.py
"""Settings for Django project """
import os
SESSION_ENGINE= 'django.contrib.sessions.backends.signed_cookies'
USE_L10N= True
USE_TZ =True
TEMPLATE_LOADERS= (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
PROJECT_PATH= os.path.realpath(os.path.dirname(__file__))
TEMPLATE_DIRS= ( os.path.join(PROJECT_PATH, 'templates'),)
MIDDLEWARE_CLASSES= (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.http.ConditionalGetMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
ROOT_URLCONF= 'swiftbrowser.urls'
INSTALLED_APPS= (
'django.contrib.sessions',
'django.contrib.staticfiles',
'swiftbrowser',
)
SWIFT_AUTH_URL= 'http://10.10.1.8:35357/v2.0'
SWIFT_AUTH_VERSION= 2 # 2 for keystone
STORAGE_URL= 'http://192.168.1.160:8080/v1/'
BASE_URL= 'http://192.168.1.160:8000' # defaultif using built-in runserver
SWAUTH_URL= 'http://192.168.1.160:8080/auth/v2'
TIME_ZONE= 'Europe/Berlin'
LANGUAGE_CODE= 'de-de'
SECRET_KEY= 'DONT_USE_THIS_IN_PRODUCTION'
STATIC_URL= "http://cdnjs.cloudflare.com/ajax/libs/"
ALLOWED_HOSTS= ['127.0.0.1','*']
使用tempauth
[root@host-10-10-2-41swift]# cat/usr/lib/python2.6/site-packages/swiftbrowser/settings.py-swiftbrowser-tempauth
"""Settings for Django project """
import os
SESSION_ENGINE= 'django.contrib.sessions.backends.signed_cookies'
USE_L10N= True
USE_TZ =True
TEMPLATE_LOADERS= (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
PROJECT_PATH= os.path.realpath(os.path.dirname(__file__))
TEMPLATE_DIRS= ( os.path.join(PROJECT_PATH, 'templates'),)
MIDDLEWARE_CLASSES= (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.http.ConditionalGetMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
ROOT_URLCONF= 'swiftbrowser.urls'
INSTALLED_APPS= (
'django.contrib.sessions',
'django.contrib.staticfiles',
'swiftbrowser',
)
SWIFT_AUTH_URL= 'http://127.0.0.1:8080/auth/v1.0'
SWIFT_AUTH_VERSION= 1 # 2 for keystone
STORAGE_URL= 'http://127.0.0.1:8080/v1/'
BASE_URL ='http://127.0.0.1:8000' # default ifusing built-in runserver
SWAUTH_URL= 'http://127.0.0.1:8080/auth/v2'
TIME_ZONE= 'Europe/Berlin'
LANGUAGE_CODE= 'de-de'
SECRET_KEY= 'DONT_USE_THIS_IN_PRODUCTION'
STATIC_URL= "http://cdnjs.cloudflare.com/ajax/libs/"
ALLOWED_HOSTS= ['127.0.0.1', 'insert_your_hostname_here']
4、 使用django server:
django-admin runserver 0.0.0.0:8000 --settings=swiftbrowser.settings
使用浏览器访问即可
用户名形式: tenant:username
密码: password
5、 使用http server,相关文件及内容如下
[root@host-10-10-2-41conf.d]# pwd
/etc/httpd/conf.d
[root@host-10-10-2-41conf.d]# cat wsgi.conf
LoadModulewsgi_module modules/mod_wsgi.so
[root@host-10-10-2-41conf.d]#
[root@host-10-10-2-41conf.d]# cat swiftbrowser.conf
WSGISocketPrefixrun/wsgi
WSGIScriptAlias/ /usr/lib/python2.6/site-packages/swiftbrowser/swiftbrowser.wsgi
#Alias/static /opt/horizon/static
<Directory/usr/lib/python2.6/site-packages/swiftbrowser/swiftbrowser.wsgi>
Order allow,deny
Allow from all
</Directory>
以及
[root@host-10-10-2-41swiftbrowser]# pwd
/usr/lib/python2.6/site-packages/swiftbrowser
[root@host-10-10-2-41swiftbrowser]#
[root@host-10-10-2-41swiftbrowser]# cat swiftbrowser.wsgi
importlogging
import os
importsys
importdjango.core.handlers.wsgi
fromdjango.conf import settings
# Addthis file path to sys.path in order to import settings
sys.path.insert(0,os.path.join(os.path.dirname(os.path.realpath(__file__)), '.'))
os.environ['DJANGO_SETTINGS_MODULE']= 'settings'
sys.stdout= sys.stderr
DEBUG =False
application= django.core.handlers.wsgi.WSGIHandler()
6、 重启http 服务,用浏览器访问
有问题,就查看http的日志/var/log/httpd/error_log
- 使用django-swiftbrowser实现swift的web访问
- 使用handler对web service进行访问的认证实现
- django访问静态web资源
- 【iOS】Web Color 的 Swift 实现
- UIActivityViewController的使用(Swift实现)
- django的访问途径
- swift的访问控制
- 如何独立使用django的数据库访问功能
- django 使用中间件 访问request里面的内容
- Django实现的Web的增删查改
- Swift - 使用访问系统的通讯录交互界面
- Django实现RESTful web service
- Web服务数据库访问中间件的实现
- Web服务数据库访问中间件的实现
- 使用Django从事web开发需要具备的知识。
- 使用Django搭建一个简单的Python Web工程
- 在python的web框架Django中使用SQL Server
- VBOX使用NAT端口转发实现宿主机器访问genymotion上的web服务
- FaceBoundingBoxInInfraredSpace 得到的深度空间的数值为空
- uva10635 Prince and Princess LCS 变 lIS
- c#笔试练习
- 推荐几部技术售前的读物
- linux 命令之 netstat
- 使用django-swiftbrowser实现swift的web访问
- UML包图
- Pat(Advanced Level)Practice--1098( Insertion or Heap Sort)
- 特征简约(feature reduce)方法比较
- C/C++面试题集合(3)
- 黑马程序员-流程结构-学习笔记
- 第10周项目3点类派生直线类
- gsoap_2.8.8与2.8.17 编译生成onvif框架
- 树莓派驱动学习-字符设备驱动(LED)