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