跳转到: 导航, 搜索

Stackalytics/HowToRun

先决条件

Stackalytics 依赖于以下应用程序

* Python-pip Python Package Index
* libpython2.7-dev - development C headers for Python
* libssl-dev - SSL development libraries, header files and documentation
* Git - used to retrieve project repos and get their log 
* Memcached - used to store commits
* Nginx - scalable web server
* Uwsgi, uwsgi-plugin-python - application container for Nginx and plugin for Python

Web 控制面板基于 Flask 框架构建。典型的 Flask 应用程序部署使用 nginx 作为前端服务器,uwsgi 作为应用程序容器。为了开发目的,Stackalytics 可以在 DevStack 上运行。该项目不需要 OpenStack requirements 项目中未列出的任何库。

安装

Stackalytics 的部署已经在 Ubuntu 和 CentOS 上得到验证,但是首选前者,因为它具有所有必要的组件作为系统包。

1. 安装必要的应用程序

具体的命令取决于 Linux 发行版。以下是基于 Debian 系统的示例

 sudo apt-get install libpython2.7-dev libssl-dev python-pip git memcached nginx uwsgi uwsgi-plugin-python

2. 配置 memcached

在启动脚本中添加两个选项

 -M Disable automatic removal of items from the cache when out of memory. Additions will not be possible until adequate space is freed up.
 -m 1024 Use <num> MB memory max to use for object storage; the default is 64 megabytes.

注意:在 Debian/Ubuntu 系统中使用 memcached 包时,此配置存储在 /etc/memcached.conf 中

3. 创建 stackalytics 用户和组

sudo useradd -U stackalytics

4. 创建 Stackalytics 所需的文件夹

 mkdir /opt/stack/
 chown stackalytics.stackalytics /opt/stack
 mkdir /var/local/stackalytics 
 chown stackalytics.stackalytics /var/local/stackalytics

最后一个文件夹是检出所有仓库的地方。'stackalytics' 是将用于 Git 和 Gerrit 轮询的帐户。

5. 检出 Stackalytics 代码

 cd /opt/stack/
 git clone https://github.com/openstack/stackalytics.git

6. 安装 Stackalytics

 cd /opt/stack/stackalytics
 sudo pip install .

这将安装 Stackalytics 和所有必要的库到系统中。

注意:在 Debian/Ubuntu 系统上,包 cffi 的依赖项需要安装发行版包 libffi-dev,包 cryptography 需要安装发行版包 libssl-dev。否则,pip install 命令将失败。

7. 配置 OpenStack gerrit 访问

StackAlytics 需要一个帐户才能访问 Gerrit 代码审查系统。有关设置帐户的详细信息,请参阅 开发者指南

用于验证 Gerrit 的私钥和 SSH 用户名在文件 /opt/stack/stackalytics/etc/stackalytics.conf 中配置,参数如下

# SSH key for gerrit review system access
# ssh_key_filename = /home/user/.ssh/id_rsa

# SSH username for gerrit review system access
# ssh_username = user

8. 处理所有已注册的仓库

 stackalytics-processor

此命令检出所有仓库并解析它们。可以通过传递 --debug 参数(用于错误调试,--verbose)来启用调试

如果使用了自定义配置选项,请务必在命令行中指定配置文件,如下所示

stackalytics-processor --config-file /opt/stack/stackalytics/etc/stackalytics.conf

9. 在开发模式下运行控制面板

 stackalytics-dashboard

此命令启动控制面板以侦听 localhost 的 8080 端口。可以通过 --listen-port 参数更改端口。

生产部署

生产部署通过 uwsgi 和 nginx 完成。

uwsgi 配置

<uwsgi>
    <socket>/tmp/stackalytics.sock</socket>
    <pythonpath>/opt/stack/stackalytics/dashboard/</pythonpath>
    <module>web:app</module>
    <plugins>python27</plugins>
    <env>STACKALYTICS_CONF=/usr/local/etc/stackalytics/stackalytics.conf</env>
</uwsgi>

注意:在使用本机 uwsgi 包安装的 Debian/Ubuntu 系统上,此配置应写入 /etc/uwsgi/apps-enabled/stackalytics.xml。然后需要使用 'sudo service uwsgi restart' 重新启动 uwsgi


nginx 配置

server {
	listen   80; 
	location / {
        	uwsgi_pass  unix:///tmp/stackalytics.sock;
        	include     uwsgi_params;
	}
	location  /static/ {
        	alias  /opt/stack/stackalytics/stackalytics/dashboard/static/;
	}
}

注意:在使用本机 nginx 包安装的 Debian/Ubuntu 系统上,此配置应写入 /etc/nginx/sites-available/default,或 /etc/nginx/sites-available/ 中的单独配置文件。然后需要使用 'sudo service nginx restart' 重新启动 nginx