Taiga部署教程
项目管理工具Taiga部署步骤。
Taiga Docker
ℹ️ 如果您已经在使用taiga-docker,请按照这个迁移指南使用新的基于.env
的部署方式。
注意:您可以访问旧版本的Docker安装指南,仅适用于早期版本的Taiga(6.6.0之前的版本)。
入门
本节旨在通过Docker和Docker Compose,用简单的两步让Taiga运行起来。
如果您没有安装Docker,请从docker.com安装Docker(版本19.03.0以上)。
此外,您需要熟悉Docker、Docker Compose以及Docker仓库。
注意:stable
分支用于生产环境的Taiga部署,main
分支则用于开发目的。
启动应用程序
$ ./launch-taiga.sh
几秒钟后,当应用程序启动时,您可以使用以下脚本创建超级用户:
$ ./taiga-manage.sh createsuperuser
taiga-manage.sh
脚本允许在后台实例中运行manage.py
命令:
$ ./taiga-manage.sh [COMMAND]
如果您是在自己的机器上测试它,可以通过http://localhost:9000
访问应用程序。如果您是在服务器上部署,则需要按照后文配置主机和Nginx。
文档
我们目前有三个主要的文档中心:
- API:用于开发Taiga API的API文档和参考。
- 文档:如果您需要在自己的服务器上安装Taiga,可以在这里找到一些指南。
- Taiga社区:这是为用户提供支持参考页面的地方。
Bug报告
如果您在Taiga中发现Bug,可以通过以下方式报告:
- 在Taiga问题页面(推荐方式)
- 在GitHub问题页面
- 如果是与
tree.taiga.io
相关的Bug,请发送邮件至support@taiga.io - 如果是安全Bug,请发送邮件至security@taiga.io
我们的一位Taiga开发者会尽快查找并修复问题。
在报告Bug之前,请详细描述如何重现问题、您的操作系统、浏览器及版本,并尽可能提供截图。有时开发者了解如何找到Bug会节省修复时间。
社区
如果您需要帮助设置Taiga,想讨论一些有趣的功能增强,或者有其他问题,请访问Taiga社区。
如果您希望了解版本发布、重要变更等信息,可以订阅我们的新闻通讯(您可以在https://taiga.io页面下滚动找到)并关注我们的Twitter账号@taigaio。
贡献Taiga
有多种方式可以为Taiga平台做出贡献,从补丁到文档及UI增强,请找到最符合您技能的方式。请查看我们的详细贡献指南。
行为准则
帮助我们保持Taiga社区的开放性和包容性。请阅读并遵守我们的行为准则。
许可证
所有提交到Taiga代码库的代码补丁都以MPL 2.0许可。您必须注意不要包含任何不能使用此许可证的代码。
请仔细阅读我们的许可证,如果有任何问题以及贡献政策,请随时联系我们。
配置
我们已经将Taiga的基本配置设置暴露到.env
文件中。我们强烈建议您更改或至少审查其内容,以避免使用默认值。
docker-compose.yml
和docker-compose-inits.yml
都会从此文件读取环境变量,因此,通常情况下您不需要更改它们。只有在需要启用其他自定义或高级配置时,才编辑这些文件。
基本配置
在.env
文件中,您会找到基本配置变量。如前所述,我们鼓励您编辑这些值,尤其是影响安全性的部分。
数据库设置
这些变量用于创建Taiga的数据库并连接到它。
- POSTGRES_USER=taiga # 连接PostgreSQL的用户
- POSTGRES_PASSWORD=taiga # 数据库用户的密码
URL设置
这些变量设置Taiga实例的服务位置及通信层的安全协议。
- TAIGA_SCHEME=http # 使用"HTTP"或"HTTPS"(安全)连接提供Taiga服务
- TAIGA_DOMAIN=localhost:9000 # Taiga的基础URL
- SUBPATH="" # 它将附加到TAIGA_DOMAIN(使用""或"/subpath")
- WEBSOCKETS_SCHEME=ws # 事件连接协议(使用"ws"或"wss")
默认配置假定Taiga在子域中提供。例如:
- TAIGA_SCHEME=https
- TAIGA_DOMAIN=taiga.mycompany.com
- SUBPATH=""
- WEBSOCKETS_SCHEME=wss
如果Taiga在子路径中提供而不是子域,配置应如下所示:
- TAIGA_SCHEME=https
- TAIGA_DOMAIN=mycompany.com
- SUBPATH="/taiga"
- WEBSOCKETS_SCHEME=wss
密钥设置
此变量允许您在Taiga中设置密钥,用于加密签名。
- SECRET_KEY="taiga-secret-key" # 请更改为不可预测的值!
邮件设置
默认情况下,电子邮件将打印在标准输出中(EMAIL_BACKEND=console)。如果您有自己的SMTP服务,请将其更改为EMAIL_BACKEND=smtp并使用您的SMTP提供商提供的值配置这些变量:
- EMAIL_BACKEND=console # 使用SMTP服务器或在控制台中显示电子邮件("smtp"或"console")
- EMAIL_HOST=smtp.host.example.com # SMTP服务器地址
- EMAIL_PORT=587 # 默认SMTP端口
- EMAIL_HOST_USER=user # 连接SMTP服务器的用户
- EMAIL_HOST_PASSWORD=password # SMTP用户的密码
- EMAIL_DEFAULT_FROM=changeme@example.com # 自动发送邮件的电子邮件地址
- EMAIL_USE_TLS/EMAIL_USE_SSL 是互斥的(只能将其中一个设置为
True
)。 - EMAIL_USE_TLS=True # 使用TLS(安全)连接到SMTP服务器
- EMAIL_USE_SSL=False # 使用隐式TLS(安全)连接到SMTP服务器
队列管理器设置
这些变量用于在RabbitMQ服务中传递消息。
- RABBITMQ_USER=taiga # 连接RabbitMQ的用户
- RABBITMQ_PASS=taiga # RabbitMQ用户的密码
- RABBITMQ_VHOST=taiga # RabbitMQ虚拟主机名称
- RABBITMQ_ERLANG_COOKIE=secret-erlang-cookie # 共享给所有连接RabbitMQ实例的唯一值
附件设置
您可以通过更改令牌的过期时间来配置附件的可访问时长。超出指定秒数后,令牌将过期,但您可以使用有效的令牌获取新的附件URL。
- ATTACHMENTS_MAX_AGE=360 # 令牌的有效时间(以秒为单位)
遥测设置
为了了解Taiga的使用情况并基于真实场景改进平台,会收集匿名数据。您可以启用此功能,帮助我们改进未来的Taiga版本。
- ENABLE_TELEMETRY=True
您可以通过将此变量设置为False
来选择退出。默认情况下为True
。
其他自定义选项
所有这些自定义选项默认情况下都是禁用的,您需要在docker-compose.yml
中编辑相应的服务部分(或在&default-back-environment
组中)并提供有效值以启用它们。请不要修改这些设置,除非您知道自己在做什么。
Django管理员的会话Cookie
Taiga API不使用会话Cookie,因为它是无状态的。然而,Django Admin(/admin/
)使用会话Cookie进行身份验证。默认情况下,Taiga配置为在HTTPS后工作。如果您使用的是HTTP(尽管强烈建议不要这样做),您需要配置以下环境变量才能访问Admin后台:
将以下配置添加到&default-back-environment
环境中:
- SESSION_COOKIE_SECURE: "False"
- CSRF_COOKIE_SECURE: "False"
更多关于这些变量的信息可以在这里找到。
公共注册
默认情况下,公共注册是禁用的。如果您想允许公开注册,您需要同时在前端和后端启用它。
注意:在这些设置中区分大小写非常重要。对于后端,我们使用True
,而对于前端,我们使用true
(这不是拼写错误,否则将无法正常工作)。
将以下配置添加到&default-back-environment
环境中:
- PUBLIC_REGISTER_ENABLED: "True"
将以下配置添加到taiga-front
服务环境中:
- PUBLIC_REGISTER_ENABLED: "true"
重要提示:
Taiga的默认配置在未启用公共注册选项时,会禁用Gitlab或Github的OAuth按钮。要使用Github/Gitlab登录/注册,确保在您的Taiga实例中已启用公共注册。
GitHub OAuth登录
此功能默认禁用。您可以通过在GitHub上创建一个OAuth应用来启用此功能,详细步骤请参阅GitHub - 创建OAuth应用。在保存应用后,GitHub会显示ID和密钥。
注意:后端使用True
,前端使用true
。确保GITHUB_API_CLIENT_ID
和GITHUB_CLIENT_ID
的值相同。
将以下配置添加到&default-back-environment
环境中:
- ENABLE_GITHUB_AUTH: "True"
- GITHUB_API_CLIENT_ID: "github-client-id"
- GITHUB_API_CLIENT_SECRET: "github-client-secret"
- PUBLIC_REGISTER_ENABLED: "True"
将以下配置添加到taiga-front
服务环境中:
- ENABLE_GITHUB_AUTH: "true"
- GITHUB_CLIENT_ID: "github-client-id"
- PUBLIC_REGISTER_ENABLED: "true"
GitLab OAuth登录
此功能默认禁用。您可以通过在GitLab上配置OAuth 2.0身份提供商来启用此功能,详细步骤请参阅GitLab OAuth文档。
注意:后端使用True
,前端使用true
。确保GITLAB_API_CLIENT_ID
、GITLAB_CLIENT_ID
和GITLAB_URL
的值相同。
将以下配置添加到&default-back-environment
环境中:
- ENABLE_GITLAB_AUTH: "True"
- GITLAB_API_CLIENT_ID: "gitlab-client-id"
- GITLAB_API_CLIENT_SECRET: "gitlab-client-secret"
- GITLAB_URL: "gitlab-url"
- PUBLIC_REGISTER_ENABLED: "True"
将以下配置添加到taiga-front
服务环境中:
- ENABLE_GITLAB_AUTH: "true"
- GITLAB_CLIENT_ID: "gitlab-client-id"
- GITLAB_URL: "gitlab-url"
- PUBLIC_REGISTER_ENABLED: "true"
Slack集成
此功能默认禁用。您可以通过以下步骤在您的Taiga实例中启用Slack集成。
注意:后端使用True
,前端使用true
。
将以下配置添加到&default-back-environment
环境中:
- ENABLE_SLACK: "True"
将以下配置添加到taiga-front
服务环境中:
- ENABLE_SLACK: "true"
GitHub导入器
启用此功能后,您将能够从GitHub导入项目。您可以按照GitHub OAuth应用创建文档获取客户端ID和密钥。
注意:后端使用True
,前端使用true
。
将以下配置添加到&default-back-environment
环境中:
- ENABLE_GITHUB_IMPORTER: "True"
- GITHUB_IMPORTER_CLIENT_ID: "client-id-from-github"
- GITHUB_IMPORTER_CLIENT_SECRET: "client-secret-from-github"
将以下配置添加到taiga-front
服务环境中:
- ENABLE_GITHUB_IMPORTER: "true"
Jira导入器
启用此功能后,您将能够从Jira导入项目。您可以按照Jira OAuth 1.0a文档获取消费者密钥和公私钥证书。
注意:后端使用True
,前端使用true
。
将以下配置添加到&default-back-environment
环境中:
- ENABLE_JIRA_IMPORTER: "True"
- JIRA_IMPORTER_CONSUMER_KEY: "consumer-key-from-jira"
- JIRA_IMPORTER_CERT: "cert-from-jira"
- JIRA_IMPORTER_PUB_CERT: "pub-cert-from-jira"
将以下配置添加到taiga-front
服务环境中:
- ENABLE_JIRA_IMPORTER: "true"
Trello导入器
启用此功能后,您将能够从Trello导入项目。配置Trello有两种方式:
- 访问Trello开发者页面,获取您的开发API密钥和密钥。
- 使用新的方法,创建一个Power-Up并生成API密钥和密钥。
注意:后端使用True
,前端使用true
。
将以下配置添加到&default-back-environment
环境中:
- ENABLE_TRELLO_IMPORTER: "True"
- TRELLO_IMPORTER_API_KEY: "api-key-from-trello"
- TRELLO_IMPORTER_SECRET_KEY: "secret-key-from-trello"
将以下配置添加到taiga-front
服务环境中:
- ENABLE_TRELLO_IMPORTER: "true"
高级配置
高级配置会忽略docker-compose.yml
或docker-compose-inits.yml
中的环境变量。如果您正在使用环境变量,可以跳过此部分。
它需要将taiga-back
和taiga-front
服务的配置文件映射到本地文件,以解锁更多配置选项。
映射config.py
文件
从taiga-back
下载settings/config.py.prod.example
文件并重命名:
mv settings/config.py.prod.example settings/config.py
编辑config.py
,根据您的配置需求修改以下内容:
- Taiga密钥:更改密钥值,并确保与
taiga-events
和taiga-protected
中的密钥一致。 - Taiga URLs:配置Taiga的服务地址,使用
TAIGA_URL
、SITES
和FORCE_SCRIPT_NAME
(见以下示例
配置示例如下:
- 子域名配置示例:
TAIGA_SITES_SCHEME = "https"
TAIGA_SITES_DOMAIN = "taiga.mycompany.com"
FORCE_SCRIPT_NAME = ""
- 子路径配置示例:
TAIGA_SITES_SCHEME = "https"
TAIGA_SITES_DOMAIN = "mycompany.com"
FORCE_SCRIPT_NAME = "/taiga"
检查配置文件的其余部分,如果您需要启用一些高级功能。
将此文件映射到/taiga-back/settings/config.py
路径下。请注意,您需要在docker-compose.yml
和docker-compose-inits.yml
中同时映射此文件。您可以查看docker-compose.yml
中的x-volumes
部分,以获得映射示例。
映射conf.json
文件
从taiga-front
下载dist/conf.example.json
文件并重命名:
mv dist/conf.example.json dist/conf.json
根据您的配置需求编辑此文件:
- Taiga URLs:配置Taiga的服务地址,使用
api
、eventsUrl
和baseHref
(见以下示例)。 - 子域名配置的
conf.json
示例:
{
"api": "<https://taiga.mycompany.com/api/v1/>",
"eventsUrl": "wss://taiga.mycompany.com/events",
"baseHref": "/"
}
- 子路径配置的
conf.json
示例:
{
"api": "<https://mycompany.com/taiga/api/v1/>",
"eventsUrl": "wss://mycompany.com/taiga/events",
"baseHref": "/taiga/"
}
检查配置文件的其余部分,以确定是否需要启用某些高级功能。
将此文件映射到/taiga-front/dist/conf.json
路径下。
配置管理员用户
- 启动服务:
$ docker compose up -d
- 使用以下命令创建超级用户:
$ docker compose -f docker-compose.yml -f docker-compose-inits.yml run --rm taiga-manage createsuperuser
启动与运行
完成所有安装后,启动所有服务并检查结果:
$ docker compose up -d
配置代理
您的主机配置需要将请求代理到http://localhost:9000
。
- 如果Taiga在子域中提供服务:
server {
server_name taiga.mycompany.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_pass <http://localhost:9000/>;
}
# 事件
location /events {
proxy_pass <http://localhost:9000/events>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
# TLS:按照您公司内部的最佳实践进行配置
# 日志及其他配置
}
- 如果Taiga在子路径中提供服务:
server {
server_name mycompany.com;
location /taiga/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_pass <http://localhost:9000/>;
}
# 事件
location /taiga/events {
proxy_pass <http://localhost:9000/events>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
# TLS:按照您公司内部的最佳实践进行配置
# 日志及其他配置
}
在子路径与子域之间切换
如果您将Taiga的配置从默认的子域名(例如https://taiga.mycompany.com
)切换到子路径(例如http://mycompany.com/subpath
),或反之,除了调整前述配置外,还应考虑更改TAIGA_SECRET_KEY,以便用户刷新页面时能正常工作。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)