如何在CentOS 7上安装Mailtrain时事通讯应用程序

Mailtrain是一个基于Node.js编写的开源自托管时事通讯应用程序。它使用一个非常流行的Node.js库Nodemailer来发送电子邮件。它免费提供出色的自动化和分析功能。您可以使用CSV文件导入轻松创建或导入包含一百万个电子邮件地址的电子邮件列表。它还支持自定义字段和表单。它通过触发器提供自动化,触发器可以在触发操作时向特定用户发送特定消息。您可以使用任何电子邮件提供商发送支持SMTP协议以及支持Amazon SES、ZoneMTA、SendGrid和Mailgun等的时事通讯。它提供多个所见即所得编辑器,为新闻稿创建精美的模板。

在本教程中,我们将在CentOS 7上安装Mailtrain以及所有必需的依赖项。我们还将把Nginx设置为反向代理,以便在标准HTTP端口上为应用程序提供服务。

必要条件
元数据库需要至少1GB的RAM。所有必需的依赖项都将在整个教程中安装。你需要安装一个具有root权限的CentOS 7。如果你以非root用户身份登录,你可以运行sudo-i切换到root用户。

更新基础系统
在安装任何软件包之前,建议您使用以下命令更新软件包和存储库。

yum -y update

安装Node.js
Mailtrain需要Node.js,因为它是使用Nodemailer构建的。Node.js是一个非常流行的JavaScript运行时环境,Nodemailer是Node.js应用程序发送电子邮件的模块。

添加Node.js 8.x存储库:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

安装Node.js。

yum -y install nodejs

安装MariaDB
要存储Mailtrain数据库,我们需要安装MariaDB。MariaDB是MySQL的一个分支
将MariaDB存储库安装到您的系统中。

nano /etc/yum.repos.d/mariadb.repo

将以下行添加到文件中。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

现在通过运行安装MariaDB。

yum -y install mariadb-server mariadb

使用以下命令启动MariaDB并使其在启动时启动。

systemctl start mariadb
 systemctl enable mariadb

现在运行以下命令来保护MySQL或MariaDB的安装。

mysql_secure_installation

它将运行一个小脚本,要求您提供MariaDB的根密码。由于我们刚刚安装了MariaDB,因此没有设置root密码,只需按enter键继续。它会询问您是否要为MariaDB安装设置根密码,选择y并为安装设置强密码。它还将要求您删除测试数据库和匿名用户。大多数问题都是不言自明的,你应该对所有问题都回答“是”或“是”。

Mailtrain需要两个数据库用户才能工作,一个用于管理Mailtrain数据库,另一个用于生成worker报告。

要创建数据库,我们需要先登录MySQL命令行。运行以下命令。

mysql -u root -p

这将提示您输入密码,提供您之前设置的MySQL根密码。现在运行以下查询为Mailtrain安装创建一个新数据库。

CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;

上述查询将创建一个名为mailtrain的数据库。确保在每个查询的末尾使用分号,因为查询总是以分号结尾。创建数据库后,您可以创建一个新用户,并将数据库的所有权限授予该用户。不建议对数据库使用root用户。要创建新的数据库用户,请运行以下查询。

CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';

上述查询将创建一个用户名为mailtrain的用户。您可以使用任何首选用户名而不是mailtrain。将StrongPassword替换为强密码。现在,在您创建的数据库上为您的数据库用户提供适当的权限。运行以下命令。

GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';

现在为Mailtrain RO创建一个新用户。

CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';

通过Mailtrain数据库为RO用户提供读取权限。

GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';

现在运行以下命令以立即应用对数据库权限的更改。

FLUSH PRIVILEGES;

使用Exit命令退出MySQL提示符。

EXIT;

再进行
Mailtrain需要更多的依赖项才能工作。通过运行以下命令安装依赖项:

yum -y install ImageMagick git python redis bind-utils gcc-c++ make

ImageMagick是一个处理位图图像的工具,Git将用于克隆应用程序项目存储库。Redis是一个非常流行的会话缓存应用程序,Python、bind-utils、gcc-c++和make将用于编译应用程序文件。

启动Redis并使其自动启动:

systemctl start redis
 systemctl enable redis

下载并安装Mailtrain
使用Git克隆Mailtrain安装文件。

git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrain

创建一个新的Mailtrain用户来运行Mailtrain守护进程。这将确保Mailtrain在隔离的环境中运行。

adduser mailtrain -d /opt/mailtrain

上面的命令将创建一个新的用户mailtrain,/opt/mailtrain将用作主目录。

通过运行以下命令切换到Mailtrain目录:

cd /opt/mailtrain

在继续之前,您应该生成一个随机字符串,用于加密会话数据。要生成随机字符串,可以使用pwgen实用程序。

运行yum-y install pwgen以安装pwgen实用程序。运行pwgen-1 64以生成长度为64个字符的字符串。您将看到:

yum -y install pwgen
[root@liptan-pc mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied

创建一个新的配置文件production.toml。此文件中提供的配置将覆盖默认配置文件default.toml。我们不应该修改默认配置文件。创建一个新的文件production.toml来存储覆盖配置。

nano config/production.toml

使用以下配置填充文件。

language="en"

user="mailtrain"
group="mailtrain"
rouser="nobody"
rogroup="nobody"

[log]
level="error"

[www]
host="localhost"
port="3000"
secret="RandomString"
remember=604800
proxy=true
tmpdir="/tmp"

[mysql]
user="mailtrain"
password="StrongPassword"
database="mailtrain"
port=3306
charset="utf8"


[redis]
enabled=true

[queue]
processes=5

[reports]
enabled=true

上述配置使Mailtrain能够以用户Mailtrain身份运行,Mailtrain Reports Worker用户能够以用户nobody身份运行。此外,它将内置服务器配置为在端口3000上监听localhost。我们将把Nginx设置为反向代理,以便可以通过标准HTTP端口访问Mailtrain web界面。

将secret=中的RandomString替换为上面生成的随机字符串。将代理设置为true,因为我们将在Nginx代理后面运行Mailtrain内置服务器。

设置您为存储Mailtrain数据而创建的数据库的用户名、密码和数据库名称。

此外,创建一个新文件来存储Worker Reports的生产配置。

nano workers/reports/config/production.toml

使用以下配置填充文件。

[log]
level="error"

[mysql]
host="localhost"
user="mailtrain_ro"
password="StrongROPassword"
database="mailtrain"
port=3306
charset="utf8"
timezone="local"

现在,删除所需的Node.js依赖项并安装软件:

npm install --production

安装应用程序后,您可以立即使用以下命令启动它:

NODE_ENV=production npm start

如果服务器正在运行,那么您应该看到以下输出。

[root@liptan-pc mailtrain]# NODE_ENV=production npm start

> [email protected] start /opt/mailtrain
> node index.js
    
info Using local auth

但是,我们将使用systemd服务,而不是直接启动应用程序。按ctrl+C停止执行。

将文件的所有权提供给Mailtrain用户,并删除系统其他非root用户对配置的所有权限:

chown -R mailtrain:mailtrain /opt/mailtrain
 chmod o-rwx /opt/mailtrain/config

设置系统服务
创建新的Systemd服务文件。使用Systemd而不是直接命令来运行服务器将确保服务器在故障和重新启动时自动启动。这使得管理服务变得非常容易。

nano /etc/systemd/system/mailtrain.service

使用以下配置填充文件。

[Unit]
Description=Mailtrain Server
Requires=mariadb.service
After=syslog.target network.target

[Service]
user=mailtrain
group=mailtrain
Environment="NODE_ENV=production"
WorkingDirectory=/opt/mailtrain
ExecStart=/usr/bin/node index.js
Type=simple
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mailtrain

[Install]
WantedBy=multi-user.target

启动Mailtrain并使其在启动时自动启动:

systemctl enable mailtrain
 systemctl start mailtrain

要检查服务的状态,请运行:

systemctl status mailtrain

您应该看到服务正在积极运行。

[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Mailtrain Server
   Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-10-09 11:15:40 UTC; 9s ago
 Main PID: 18092 (mailtrain)
   CGroup: /system.slice/mailtrain.service
           ??18092 mailtrain
           ??18105 /usr/bin/node /opt/mailtrain/services/executor.js
           ??18112 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18117 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18125 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18131 /usr/bin/node /opt/mailtrain/services/sender.js
           ??18136 /usr/bin/node /opt/mailtrain/services/sender.js

Oct 09 11:15:40 liptan-pc systemd[1]: Started Mailtrain Server.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Mailtrain Server...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth

设置日志
Logrotate是一个非常有用的工具,用于刷新过时的日志。当一个服务持续运行时,它会生成大量的日志。包含日志的文件会占用大量磁盘空间。Logrotate会定期删除旧日志,以便日志条目可以被新日志替换。

创建新的logrotate配置文件:

nano /etc/logrotate.d/mailtrain

使用以下配置填充文件:

/var/log/mailtrain.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate
nomail
}

将Nginx设置为反向代理
我们已经配置了Mailtrain内置的web界面,以监听端口3000上的localhost,因为运行生产web服务器为用户提供网站服务非常重要。在本教程中,我们将使用Nginx作为反向代理,以便可以通过标准HTTP端口访问应用程序。安装Nginx web服务器:

yum -y install nginx

为Nginx的服务器块文件创建一个新的虚拟主机:

nano /etc/nginx/conf.d/mailtrain.conf

用以下内容填充文件:

server {
    listen 80;
    listen [::]:80;

    server_name news.example.com www.news.example.com ;
    access_log /var/log/nginx/mailtrain.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:3000;
        proxy_redirect off;
    }
}

重新启动Nginx web服务器,并使其在启动时自动启动:

systemctl restart nginx
 systemctl enable nginx

配置防火墙和SELinux
如果您在服务器上运行防火墙,则需要配置防火墙为HTTP服务设置例外。允许Nginx反向代理从网络外部连接。

firewall-cmd --zone=public --permanent --add-service=http
 firewall-cmd --reload

如果您的系统上启用了SELinux,那么您将需要在SELinux策略中添加一些异常。

要检查SELinux是否已启用,请运行:

getenforce

如果您启用了SELinux,请运行:

setsebool -P httpd_can_network_connect 1

访问Web界面
安装Mailtrain现已完成。您现在可以访问Mailtrain服务器http://news.example.com.您将看到以下界面。

图片[1]_如何在CentOS 7上安装Mailtrain时事通讯应用程序_马特资源网

点击登录按钮,使用用户名admin和密码测试登录。

图片[2]_如何在CentOS 7上安装Mailtrain时事通讯应用程序_马特资源网

浏览仪表板的“帐户”部分并更新电子邮件地址和密码。尽快更新密码非常重要。

图片[3]_如何在CentOS 7上安装Mailtrain时事通讯应用程序_马特资源网

此外,在使用Mailtrain之前更新设置也很重要。

图片[4]_如何在CentOS 7上安装Mailtrain时事通讯应用程序_马特资源网

更新网站URL和管理员电子邮件。您还可以提供Google Analytics跟踪ID,通过Google Analytics跟踪洞察。您可以放置一些HTML代码,这些代码将显示在服务器的主页上。

图片[5]_如何在CentOS 7上安装Mailtrain时事通讯应用程序_马特资源网

设置活动默认值,如您的Sander名称、默认地址、默认发件人姓名、电子邮件和URL等。在发送电子邮件时,如果未配置这些选项,则将使用默认值。

最后,最重要的配置是提供电子邮件服务器凭据。您可以使用任何SMTP服务器或Amazon SES(简单电子邮件服务)。如果您使用的是SMTP,请提供SMTP服务器的邮件服务器主机名、端口、用户名和密码。如果您正在使用Amazon SES,请提供API密钥和其他凭据。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容