搭建CGWire 发表于 2020-11-05 更新于 2024-04-26
字数总计: 1.4k 阅读时长: 6分钟 阅读量: 长沙
前言 国庆在家容易想些有的没的, 想着万一以后自己开了一个小型视效工作室, 该用什么来进行跟踪管理项目进度。
首先是想到的当然是诸如Shotgun, FTrack, CGTeamWork等这些项目管理平台。 但是价格上则让人却步,比如Shotgun收费标准是每人每月30刀。
这对于小型低成本工作室,也算是一笔不小的开销。 抱着能省则省的态度,在网上找到了开源免费 的项目管理平台CGWire
CGWire介绍 文字不如视频直观,下面是官方的视频介绍, 可以说是麻雀虽小,该有的功能都有。
https://youtu.be/EH3RbmHykrE
CGWire搭建 接下来就是无趣的代码部分了。 我这里使用的是Ubuntu 16.04版本进行的测试。 来源:https://zou.cg-wire.com/#deploying-kitsu
安装软件依赖 1 2 3 4 5 6 7 sudo apt-get update sudo apt-get install postgresql postgresql-client postgresql-server-dev-all sudo apt-get install redis-server sudo apt-get install python3 python3-pip sudo apt-get install git sudo apt-get install nginx sudo apt-get install ffmpeg
获取资源 创建一个zou用户
1 2 3 sudo useradd --home /opt/zou zou mkdir /opt/zou chown zou: /opt/zou
安装zou和其依赖
1 2 3 4 5 6 sudo pip3 install virtualenv cd /opt/zou sudo virtualenv zouenv . zouenv/bin/activate sudo zouenv/bin/pip3 install zou sudo chown -R zou:www-data .
创建存储预览的文件夹
1 2 sudo mkdir /opt/zou/previews sudo chown -R zou:www-data /opt/zou
创建临时存储目录
1 2 sudo mkdir /opt/zou/tmp sudo chown -R zou:www-data /opt/zou/tmp
安装Postgres数据库 在postgres中创建Zou数据库
1 2 sudo su -l postgres psql -c 'create database zoudb;' -U postgres
为postgres用户设置密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 输入命令 psql # 这里会进入postgres的交互模式 > >> psql (9.4.12) > >> Type "help" for help . # 输入下面命令进行密码创建 postgres=# \password postgres Enter new password: Enter it again: # 设置完成密码,退出交互模式 \q
如果不想使用交互式创建密码,可以用下面的方式。 如果已经创建了密码,跳过此步骤。
1 psql -U postgres -d postgres -c "alter user postgres with password 'mysecretpassword';"
最后,创建数据库表。 这里需注意已经退出了psql交互模式,并在zou虚拟环境下。
1 2 # Run it in your bash console. DB_PASSWORD=yourdbpassword zou init-db
准备键值存储
在这个文件末尾添加一行:
1 vm.overcommit_memory = 1
配置Gunicorn 需要通过Gunicorn运行该应用程序, Gunicorn是将zou作为守护程序运行的WSGI服务器。
创建配置文件夹
创建Gunicorn配置文件 路径: /etc/zou/gunicorn.conf
1 2 3 4 accesslog = "/opt/zou/logs/gunicorn_access.log" errorlog = "/opt/zou/logs/gunicorn_error.log" workers = 3 worker_class = "gevent"
创建日志文件夹
1 2 sudo mkdir /opt/zou/logs sudo chown zou: /opt/zou/logs
创建进程守护的配置文件 路径: /etc/systemd/system/zou.service
这里需要修改DB_PASSWORD和SECRET_KEY。 数据库的密码是之前设置的,而SECRET_KEY可以用pwgen来随机生成。
1 2 apt-get install pwgen pwgen 16
生成后可以复制其中一个给到SECRET_KEY
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [ Unit] Description=Gunicorn instance to serve the Zou API After=network.target [ Service] User=zou Group=www-data WorkingDirectory=/opt/zou # Append DB_USERNAME=username DB_HOST=server when default values aren't used # ffmpeg must be in PATH Environment="DB_PASSWORD=yourdbpassword" Environment="SECRET_KEY=yourrandomsecretkey" Environment="PATH=/opt/zou/zouenv/bin:/usr/bin" Environment="PREVIEW_FOLDER=/opt/zou/previews" ExecStart=/opt/zou/zouenv/bin/gunicorn -c /etc/zou/gunicorn.conf -b 127.0 .0 .1 : 5000 zou.app: app [ Install] WantedBy=multi-user.target
创建事件流API服务器配置 路径: /etc/zou/gunicorn-events.conf
1 2 3 4 accesslog = "/opt/zou/logs/gunicorn_events_access.log" errorlog = "/opt/zou/logs/gunicorn_events_error.log" workers = 1 worker_class = "geventwebsocket.gunicorn.workers.GeventWebSocketWorker"
通过Systemd来守护事件流API服务进程 路径: /etc/systemd/system/zou-events.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [ Unit] Description=Gunicorn instance to serve the Zou Events API After=network.target [ Service] User=zou Group=www-data WorkingDirectory=/opt/zou # Append DB_USERNAME=username DB_HOST=server when default values aren't used Environment="PATH=/opt/zou/zouenv/bin" ExecStart=/opt/zou/zouenv/bin/gunicorn -c /etc/zou/gunicorn-events.conf -b 127.0 .0 .1 : 5001 zou.event_stream: app [ Install] WantedBy=multi-user.target
配置Nginx 配置文件路径: /etc/nginx/sites-available/zou
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 server { listen 80; server_name server_domain_or_IP; location /api { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:5000/; client_max_body_size 500M; proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; send_timeout 600s; } location /socket.io { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass http://localhost:5001; } }
启用nginx
1 2 3 4 5 6 7 8 9 10 # 删除默认配置 sudo rm /etc/nginx/sites-enabled/default # 创建文件链接 sudo ln -s /etc/nginx/sites-available/zou /etc/nginx/sites-enabled # 重启nginx sudo service zou start sudo service zou-events start sudo service nginx restart
更新所有包 更新zou软件包
1 2 3 cd /opt/zou . zouenv/bin/activate sudo zouenv/bin/pip3 install --upgrade zou
更新数据路架构
1 2 # 这里输入数据库的密码 DB_PASSWORD=yourdbpassword zou upgrade-db
重启zou服务
1 2 3 sudo chown -R zou:www-data . sudo service zou restart sudo service zou-events restart
部署Kitsu 1 2 3 4 5 cd /opt/ sudo git clone -b build https://github.com/cgwire/kitsu cd kitsu sudo git checkout build sudo chown -R zou:www-data /opt/kitsu
部署完成后需要更新nginx的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 server { listen 80; server_name server_domain_or_IP; location /api { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://localhost:5000/; } location /socket.io { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass http://localhost:5001; } location / { autoindex on; root /opt/kitsu/dist; try_files $uri $uri/ /index.html; } }
重启nginx服务
1 sudo service nginx restart
到这一步就可以访问自己的ip或者域名来使用cgwire了。 当然,在此之前需要一个管理员账户来登陆cgwire。
创建cgwire管理员账户 1 2 3 4 5 6 7 8 9 # 首先进入zou环境 cd /opt/zou . zouenv/bin/activate # 创建管理员账户 create_admin后的参数 为自己的登陆邮箱 DB_PASSWORD=yourdbpassword zou create_admin adminemail@yourstudio.com # 初始化数据 DB_PASSWORD=yourdbpassword zou init-data
账户创建完成后,默认密码为default,第一次登陆后会强制让你修改密码。 最后请尽情的enjoy it。
(完)