提供通过CVMFS存储库上载和分发软件的接口。

stfc_stratum_uploader的Python项目详细描述


##上传程序

[![生成状态](https://travis ci.org/mknapik/uploader.png)(https://travis ci.org/mknapik/uploader)

##先决条件

+**python**2.7.3
+**[virtualenv](http://www.virtualenv.org/en/latest/)**1.7.1.2-
使用PIP或从分发包安装。

``bash
sudo pip install virtualenv
````
<;!---
+**virtualenvwrapper**4.1.1

``bash
sudo pip安装virtualenvwrapper
source/usr/local/bin/virtualenvwrapper.sh
````
-->;
+**postgresql**9.1.9
+apache**httpd**2.2.22



一个环境变量:

``bash
export-app-dir=/var/www/t1student0.esc.rl.ac.uk
````

使用正确的"chmod"创建空数据库文件:

``bash
触摸$app-dir/db/uploader.sqlite3
chmod 600$app-dir/db/uploader.sqlite3
```
2。设置"db"目录安全性:
``bash
chmod 770$app_dir/db
chgrp www data$app_dir/db
````

postgresql

1。登录到"psql":

``bash
su postgres-c psql
````
2。创建新的数据库用户"django"(也可以使用现有的数据库用户):

``sql
create user django with password'password';
````
3。使用已创建的所有者创建新的数据库"上载程序":

``sql
create database uploader with owner=django;
```

virtualenv

1。为项目创建新的"virtualenv"。您可以选择从中读取"httpd"的任何位置。如果使用postgresql,则添加"--系统站点包"选项。

`` bash
virtualenv/opt/venv/uploader
````
2。激活已创建的"virtualenv"(必须对每个要使用任何python命令的终端窗口执行此操作)

``bash
source/opt/venv/uploader/bin/activate
````

web应用程序

>1。拿到申请表。这个应用程序可以放在任何地方,但我们将使用`/var/www/t1student0.esc.rl.ac.uk`.
+解压缩'uploader.tar.gz`:

``bash
`mkdir$app dir
tar xvf uploader.tar.gz--剥离组件1-c$app dir
```
`+或使用` git`:

``` bash
git克隆https://github.com/mknapik/uploader.git$app-dir
```
3。使用"pip"安装应用程序依赖项。
1。确保您刚刚激活了"virtualenv"。
2.使用以下方法之一安装依赖项:
+provided bundle

``bash
pip install production.pybundle
````
+或从Internet下载包

``bash
`pip install-rrequirements.txt
```

配置上传程序

1。打开"archer/settings/production.py",并设置数据库连接凭据
+sqlite3:

``python
databases={
'default':{
'engine':'django.db.backends.sqlite3',
'名称':'%s/db/uploader.sqlite3'%common.project戡root,
'用户':'',
'密码':'',
'主机':'',
'端口':'',
},
}
````
+postgresql:

`` python
数据库={
'默认值':{
'引擎':'django.db.backends.postgresql_psycopg2',
'名称':'上载程序',
'用户':DJango',
"密码":"密码",
"主机":"本地主机",通过域套接字的本地主机为空,通过TCP的本地主机为"127.0.0.1"。
"端口":",默认设置为空字符串。
},
}
````

>2.打开"archer/settings/common.py"并设置目录路径。
2.更改"secret_key"(仅限生产):

`` python
secret_key='apksigo!7nco7y2biavj=0fxd0b3@2的uh4gth!ax6*rb29fq=w'
```
9。根据需要定制:
1.将"project_root"设置为应用程序目录(`$app_dir`):

``python
project_root='/var/www/t1student0.esc.rl.ac.uk/'
```
1。设置"host name":

``python
hostname=get_host_name()
```
1。修改"media_root"以设置文件系统上上载文件的位置:

`` python
`保存用户上载文件的目录的绝对文件系统路径。
示例:"/var/www/example.com/media/"
media_root=join(project_root,‘uploads/’)
```
2.修改"media_root"以设置上载文件的URL:

``处理从media_root提供的媒体的python
请确保使用
尾随斜杠。
示例:"http://example.com/media/"、"http://media.example.com/"
media悻url='http://t1student0.esc.rl.ac.uk/uploads/'
``
3。将"static_root"修改为…

``` python
`应将静态文件收集到的目录的绝对路径。
不要自己将任何内容放入此目录;将静态文件存储在应用程序的"static/"子目录和static files目录中。
将"static_url"修改为…

`` python
`静态文件的url前缀。
示例:"http://example.com/static/","http://static.example.com/"
static_url='/static/'
```

9。…

httpd

1。确保"mod_wsgi"已安装并启用。
+检查"mod_wsgi"是否可用:

``bash
apache2ctl-m grep wsgi
````
+如果"mod_wsgi"不存在,请从分发包安装它
+确保"mod_wsgi"已启用:
+使用'a2enmod':

```bash
a2enmod wsgi
`````
+或者如果'a2enmod'不可用,只需创建符号链接:

``bash
`cd/etc/apache2/mods enabled
ln-s../mods available/wsgi.load
ln-s../mods available/wsgi.conf
````


2.将"httpd.uploader.conf"链接到"httpd"的"可用站点"

``bash
ln-s$app-dir/httpd.uploader.conf/etc/apache2/sites-available/uploader.conf
```
3。设置证书的路径:
1。设置主机证书
2。设置主机私钥
3。设置证书目录的路径

``apache
sslcertificatefile/path/hostcert.pem
sslcertificatekeyfile/path/hostkey.pem
sslcertificatepath/path/certificates
```
3。设置正确的"wsgipythonpath"。它应该像`$app_dir:$venv_dir/lib/$python_version/site package`.
4.如果使用的路径与本指南中不同,请通过更改路径来调整此站点的配置。
1。…<Br/>5。启用站点
+使用"a2ensite":

``` bash
a2ensite uploader.conf
```
+或ir`a2ensite`不可用,只需创建符号链接:

```bash
cd/etc/apache2/sites enabled
ln-s../sites available/uploader.conf
```
6。为"media"、"uploads"和"cvmfs"目录设置正确的"chmod"和"chown"。



数据库可以用"manage.py"初始化:
1。创建数据库结构:

``` bash
django_configuration=production python manage.py syncdb
django_configuration=production python manage.py migrate
```
2。加载示例数据:

`` bash
django_configuration=production python manage.py load data fixtures/auth.json
django_configuration=production python manage.py loaddata fixtures/custom_au auth.json
django_configuration=production python manage.pyloaddata fixtures/guardian.json
django_configuration=production python manage.py loaddata fixtures/projects.json
django_configuration=production python manage.py sync_perms
`````

``development

dev.pybundle-r requirements.txt
```

2.0版("许可证");
除非符合许可证的要求,否则您不得使用此文件。
您可以在http://www.apache.org/licenses/license-2.0


http://www.apache.org/licenses/license-2.0

根据许可证进行分发是在"按原样"的基础上进行的,
无任何明示或暗示的保证或条件。
请参阅许可证,以了解管辖许可权的特定语言和许可证下的限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java理解泛型   java Guava:如何自定义减少多重映射?   java无法构建实体管理器工厂JPA/Hibernate   不区分大小写的LDAP搜索   在java中同时调用所有类对象中的方法   java做高级数字计算?2.1k等于2100等。。?   java Camel netty组件:未能创建选择器   exceljava。lang.ClassCastException:ExcelStreamAction无法强制转换为com。开放交响乐团。xwork2。行动   java避免对嵌套a4j:区域进行验证   java如何使一帧在1秒内显示50次,每次显示时消失   java一个HashMap的遍历,我得到NullPointerException   windows HP Stream 8平板电脑。。。Java swing JScrollPane滚动在触摸屏上不工作   java如何在运行时根据用户/程序员的需要自动增加数组的大小?