如何在CentOS 7上安装Mailtrain新闻通讯应用程序
使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。
Wekan是使用Meteor JavaScript框架构建的看板。它被认为是Trello的开源和自托管替代方案,提供几乎相同的功能。它允许您创建基于卡的“待办事项”管理列表。在协作环境中工作时,Wekan对于提高生产力非常有帮助。Wekan具有完全响应的Web界面,并且可以多种语言进行主动翻译。
在本教程中,我们将使用wekan.example.com指向Vultr实例的域名作为域名。请确保将所有示例域名都替换为实际的示例域名。
使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装依赖项。
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是免费的开源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提供了一个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" ] }
在新版发行非常频繁的情况下,请在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 Web服务器和Certbot,这是Let's Encrypt CA的客户端应用程序。
sudo yum -y install certbot nginx
在可以请求SSL证书之前,您将需要允许端口80并443通过防火墙。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
请确保替换username和password。
向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看板。
使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。
Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,
FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o
在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ
使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比
欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件
简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置
使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示
使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供
使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用
MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商
H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器
在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫
使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能
MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:
使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装
使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的
使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是
使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智
使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件
在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。
快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。
学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。
使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。
了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息