如何在CentOS 7上安装Wekan(开源看板)

Wekan是使用Meteor JavaScript框架构建的看板。它被认为是Trello的开源和自托管替代方案,提供几乎相同的功能。它允许您创建基于卡的“待办事项”管理列表。在协作环境中工作时,Wekan对于提高生产力非常有帮助。Wekan具有完全响应的Web界面,并且可以多种语言进行主动翻译。

先决条件

在本教程中,我们将使用wekan.example.com指向Vultr实例的域名作为域名。请确保将所有示例域名都替换为实际的示例域名。

使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装依赖项。

安装Node.js

Wekan仅支持Node.js LTS version 4.8。要安装Node.js,我们将使用节点版本管理器。安装nvm运行安装程序脚本。

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash

要立即开始使用nvm,请运行此程序。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

如果nvm已成功安装,则您应该能够检查其版本。

[user@vultr ~]$ nvm --version
0.33.4

安装Node.js。

nvm install v4.8

设置Node.js的默认版本。

nvm use node

如果Node.js已成功安装,则您应该能够检查其版本。

node -v

您将看到此输出。

[user@vultr ~]$ node -v
v4.8.4

NVM仅为当前用户安装Node.js。为了使Node.js可以全局访问,请运行此命令。

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr

Node.js的在现在作为/bin/node

[user@vultr ~]$ sudo which node
/bin/node

安装MongoDB

MongoDB是免费的开源NoSQL数据库服务器。与使用表来组织数据的传统数据库不同,MongoDB是面向文档的,并且使用不带模式的类似JSON的文档。Wekan使用MongoDB来存储其数据。

Wekan仅与兼容MongoDB version 3.2。MongoDB在默认YUM存储库中不可用,因此您需要创建一个新的存储库文件。

sudo nano /etc/yum.repos.d/mongodb-org-3.2.repo

��以下内容填充文件。

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

安装MongoDB。

sudo yum install -y mongodb-org

启动MongoDB服务器,并使它自动启动。

sudo systemctl start mongod
sudo systemctl enable mongod

保护MongoDB实例

默认情况下,MongoDB服务器中未启用身份验证。任何有权访问服务器终端的用户都将具有MongoDB安装的全部特权。为了保护数据库服务器并限制非特权用户的访问,我们将需要在服务器上设置身份验证。

MongoDB提供了一个mongo外壳程序,用于在MongoDB上运行查询。mongo通过键入切换到外壳。

mongo

使用root特权创建一个新的MongoDB用户。您可以使用您选择的任何用户名。请确保替换密码

db.createUser(
  {
    user: "admin",
    pwd: "StrongAdminPassword",
    roles: [ { role: "root", db: "admin" } ]
  }
)

您应该看到以下输出。

[user@vultr ~]$ mongo
MongoDB shell version: 3.2.17
connecting to: test
Welcome to the MongoDB shell.

...

2017-09-29T20:42:29.042+0000 I CONTROL  [initandlisten]
> db.createUser(
...   {
...     user: "admin",
...     pwd: "StrongAdminPassword",
...     roles: [ { role: "root", db: "admin" } ]
...   }
... )
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}

通过按“ Ctrl+C” 将MongoDB命令界面退出到Linux终端。

编辑MongoDB配置文件。

sudo nano /etc/mongod.conf

在文件末尾添加以下行。

security:
 authorization: enabled

重新启动MongoDB,以使配置更改生效。

sudo systemctl restart mongod

现在已经启用了安全性,您可以通过使用mongo命令再次切换到mongo shell来测试其是否正常工作。这次,如果您运行查询(例如show dbs显示数据库列表),则会看到一条消息,报告授权失败。sudo在以刚创建的新用户身份测试登录后,再次退出该用户。

administrator您刚创建的用户身份登录。

mongo -u admin -p

提供用户密码以成功登录。为Wekan数据库创建一个新用户,该用户将用于存储Wekan数据。

use wekan
db.createUser(
    {
      user: "wekan",
      pwd: "StrongPassword",
      roles: ["readWrite"]
    }
 ) 

确保StrongPassword使用强密码更改。您将看到以下输出。

[user@vultr ~]$ mongo -u admin -p
MongoDB shell version: 3.2.17
Enter password:
connecting to: test

...

2017-09-29T20:52:32.450+0000 I CONTROL  [initandlisten]
>
> use wekan
switched to db wekan
> db.createUser(
...     {
...       user: "wekan",
...       pwd: "StrongPassword",
...       roles: ["readWrite"]
...     }
...  )
Successfully added user: { "user" : "wekan", "roles" : [ "readWrite" ] }

安装Wekan

新版发行非常频繁的情况下,请在Github上查看指向Wekan发行版的最新链接。从Github下载最新版本的Wekan,替换指向安装程序包的链接。

cd ~
wget https://github.com/wekan/wekan/releases/download/v0.41/wekan-0.41.tar.gz

将下载的档案解压缩到名为的新目录中wekan

mkdir wekan
tar xzvf wekan-*.tar.gz -C wekan

安装Bzip2,这是提取Node.js依赖项所必需的。

sudo yum -y install bzip2

安装Node.js依赖项。

cd wekan/bundle/programs/server && npm install

Wekan服务器从环境变量读取配置。运行以下命令以将配置设置为环境变量。

export MONGO_URL='mongodb://wekan:[email protected]:27017/wekan?authSource=wekan'
export ROOT_URL='http://wekan.example.com'
export MAIL_URL='smtp://user:[email protected]:25/'
export MAIL_FROM='[email protected]'
export PORT=4000

确保替换wekan已创建用户的MongoDB密码。另外,根据您的SMTP服务器设置更新邮件URL。如果您尚未准备好邮件服务器,则以后可以随时更改此配置。打开防火墙以允许端口4000通过防火墙。

sudo firewall-cmd --zone=public --add-port=4000/tcp --permanent
sudo firewall-cmd --reload

立即启动应用程序。

cd ~/wekan/bundle
node main.js

现在,您可以转到来访问该应用程序http://wekan.example.com:4000。您将看到用于登录Wekan看板的界面。

对于生产用途,建议设置反向代理以在标准HTTP端口上为应用程序systemd提供服务,并提供用于管理应用程序过程的服务。在本教程中,我们将使用Nginx Web服务器作为反向代理,并使用免费加密的Let's Encrypt进行保护。

设置Nginx反向代理

安装Nginx Web服务器和Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo yum -y install certbot nginx

在可以请求SSL证书之前,您将需要允许端口80443通过防火墙。Certbot将在颁发证书之前检查域授权。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

现在,我们在标准HTTPS端口上运行Wekan ,我们不需要允许端口4000通过防火墙。调整防火墙以删除端口4000

sudo firewall-cmd --zone=public --remove-port=4000/tcp --permanent
sudo firewall-cmd --reload

注意:用于从Let's Encrypt CA获得证书的域名必须指向服务器。客户端在颁发证书之前验证域权限

生成SSL证书。

sudo certbot certonly --standalone -d wekan.example.com

生成的证书很可能存储在/etc/letsencrypt/live/wekan.example.com/目录中。SSL证书将存储为fullchain.pem,而私钥将存储为privkey.pem

让我们加密证书在90天后过期,因此建议使用Cronjob设置证书的自动续订。Cron是一项系统服务,用于运行定期任务。

打开cron作业文件。

sudo crontab -e

在文件末尾添加以下行。

30 5 * * * /usr/bin/certbot renew --quiet

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新它们。

创建一个新的虚拟主机。

sudo nano /etc/nginx/conf.d/wekan.example.com.conf

用以下内容填充文件。

upstream wekan {
        server 127.0.0.1:4000;
}
server {
        listen  80;
        listen [::]:80;
        server_name  wekan.example.com;

        location / {
                if ($ssl_protocol = "") {
                        rewrite     ^   https://$server_name$request_uri? permanent;
                }
        }
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name wekan.example.com;

        add_header Strict-Transport-Security "max-age=15768000";

        ssl_certificate /etc/letsencrypt/live/wekan.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/wekan.example.com/privkey.pem;

        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;

        ssl_stapling on;
        ssl_stapling_verify on;

        error_page 497  https://$host:$server_port$request_uri;
        location / {
            proxy_pass http://wekan;
            proxy_http_version 1.1;
            proxy_set_header Host $host:$server_port;
            proxy_set_header Referer $http_referer;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header X-Nginx-Proxy true;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            proxy_redirect off;

            proxy_send_timeout 86400;
            proxy_read_timeout 86400;
        }
}

wekan.example.com在上述配置中,用您的实际域名替换。

重新启动Nginx,以使更改生效。

sudo systemctl restart nginx

启用Nginx以在启动时自动启动。

sudo systemctl enable nginx

设置系统服务

为该过程创建一个新用户。

sudo adduser wekan -s /usr/sbin/nologin -d /opt/wekan

现在将所有文件移动到/opt/wekan目录。

sudo mv ~/wekan/* /opt/wekan/

向新创建的用户提供文件的所有权。

sudo chown -R wekan:wekan /opt/wekan

Wekan不从任何配置文件中获取数据。而是从环境变量访问它。我们将创建一个新文件来存储环境变量。包含环境变量的文件将通过Systemd服务传递。

创建一个新文件来存储环境变量。

 sudo nano /opt/wekan/config.env

用以下内容填充文件。

MONGO_URL='mongodb://wekan:[email protected]:27017/wekan?authSource=wekan'
ROOT_URL='http://wekan.example.com'
MAIL_URL='smtp://user:[email protected]:25/'
MAIL_FROM='[email protected]'
PORT=4000
HTTP_FORWARDED_COUNT=1

请确保替换usernamepassword

wekan用户提供所有权。

sudo chown -R wekan:wekan /opt/wekan/config.env

为Wekan systemd服务创建一个新的服务文件。

sudo nano /etc/systemd/system/wekan.service

用以下内容填充文件。

[Unit]
Description=Wekan Server
After=syslog.target
After=network.target

[Service]
Type=simple
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
RestartSec=10
ExecStart=/bin/node /opt/wekan/bundle/main.js
EnvironmentFile=/opt/wekan/config.env
ExecReload=/bin/kill -USR1 $MAINPID
RestartSec=10
User=wekan
Group=wekan
WorkingDirectory=/opt/wekan
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Wekan

[Install]
WantedBy=multi-user.target

保存文件并退出编辑器。现在,您可以轻松启动Wekan。

sudo systemctl start wekan

使Wekan能够在启动时自动启动。

sudo systemctl enable wekan

查看Wekan服务状态。

sudo systemctl status wekan

包起来

现在,您可以在上访问Wekan实例https://wekan.example.com。首先创建一个新帐户。创建帐户后,您可以对新创建的用户启用管理访问权限。以管理用户身份登录MongoDB Shell。

mongo -u wekan -p --authenticationDatabase "wekan"

现在选择wekan数据库并更新对象以将用户提升为admin用户。

use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})

请确保将其替换admin_user为您创建的用户的实际用户名。从管理界面,您将能够禁用自我注册并更新SMTP设置。

恭喜,您已经在您的Vultr CentOS实例上成功安装了Wekan看板。



Leave a Comment

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息