如何在Ubuntu 18.04 LTS上安装MailTrain时事通讯应用程序

时间:2020-02-23 14:32:47  来源:igfitidea点击:

在本教程中,将介绍如何在Ubuntu 18.04 LTS上安装MailTrain时事通讯应用程序。
MailTrain是一个开源,从Node.js构建的开源,自托管的新闻通讯应用程序。
MailTrain是基于Nodemailer的顶部,它支持MySQL/MariaDB数据库后端。

MailTrain是商业电子邮件营销服务的替代品,如MailChimp,Sendgrid 等

MailTrain时事通讯应用程序的功能

以下是MailTrain时事通讯应用程序的最佳功能。

易于订阅者列表管理 - 我们可以管理订阅者列表,删除用户,手动添加用户或者通过API.Custom字段添加用户 - MailTrain支持自定义字段,如"数字","下拉","文本字段"复选框,"标记合并"和"自定义"表单.EMAIL模板 - MailTrain提供了许多模板,我们可以用于向订阅者发送电子邮件.Large邮件列表管理 - 我们可以管理多个AS> 100万用户。
我们可以使用CSV文件导入的大用户列表。
对于RSSAD系列:我们可以自动生成RSS Feed的时事通讯,并用于向订阅者发送电子邮件.List分段:仅发送消息以列出匹配预定义分段规则的订阅者。
无需创建具有小差异的单独列表.gpg加密:订阅者可以从列表中返回其GPG公钥以接收加密消息.Automation:我们可以在用户激活触发时发送自动化触发器以发送特定消息。

MailTrain以下硬件要求1 VCPU1024 MB RAM

我们有两个在Ubuntu 18.04上运行MailTrain的选项。
我们可以选择在Docker容器上运行MailTrain或者在Ubuntu 18.04实例上手动安装MailTrain。
我们将考虑后一种方法。

按照以下步骤在Ubuntu 18.04 LTS上安装MailTrain时事通讯应用程序。

第1步:更新系统和安装依赖项

首先,将系统包更新到最新版本。

sudo apt update
sudo apt -y install software-properties-common pwgen git dnsutils imagemagick build-essential python

第2步:在Ubuntu 18.04上安装Node.js

node.js是mailTrain的基本要求。
通过运行安装它:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash 
sudo apt -y install nodejs
sudo apt -y install gcc g++ make

第2步:在Ubuntu 18.04上安装Redis

使用MailTrain,我们可以使用Redis会话缓存。
Redis用于会话存储和多个进程之间的缓存状态。
如果在Ubuntu 18.04上安装了Redis,请在下面遵循我们的教程,安装它。

如何在Ubuntu 18.04/Debian 9上安装Redis

第4步:安装MariaDB/MySQL数据库服务器

MySQL/MariaDB用于存储MailTrain数据。
使用下面的文章之一安装MariaDB/MySQL数据库服务器:

在Ubuntu 18.04和Centos 7上安装MariaDB 10.x

如何在Ubuntu 18.04/16.04上安装MySQL 8.0

安装MariaDB/MySQL数据库服务器后,为MailTrain创建用户和数据库。

首先登录MySQL Shell作为root用户:

$mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 48
Server version: 10.3.11-MariaDB-1:10.3.11+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

我们将为每个服务器组件创建一个数据库。

CREATE DATABASE mailtrain;

创建数据库用户并授予创建的数据库的权限。

CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES  ON mailtrain.* TO 'mailtrain'@'localhost';

还授予监控用户 SELECT权限。

CREATE USER 'mailtrain_monitoring'@'localhost' IDENTIFIED BY 'StrongPassword'; 
GRANT  SELECT ON mailtrain.* TO 'mailtrain_monitoring'@'localhost';
FLUSH PRIVILEGES;

通过登录数据库确认访问 postal用户:

$mysql -u mailtrain -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.3.11-MariaDB-1:10.3.11+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| mailtrain          |
+--------------------+
4 rows in set (0.001 sec)
MariaDB [(none)]> QUIT
Bye

第4步:安装和配置Ubuntu 18.04上的MailTrain

确保安装了Git。

sudo apt -y install git

从github克隆邮箱 /srv/mailtrain

sudo git clone https://github.com/Mailtrain-org/mailtrain.git /srv/mailtrain

将MailTrain SQL Schema导入数据库。

mysql -u mailtrain -p mailtrain < /srv/mailtrain/setup/sql/mailtrain.sql

上面的导入将创建许多表。

$mysql -u mailtrain -p 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 53
Server version: 10.3.11-MariaDB-1:10.3.11+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> USE mailtrain;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mailtrain]> SHOW tables;
+---------------------+
| Tables_in_mailtrain |
+---------------------+
| attachments         |
| campaign            |
| campaign_tracker    |
| campaigns           |
| confirmations       |
| custom_fields       |
| custom_forms        |
| custom_forms_data   |
| import_failed       |
| importer            |
| links               |
| lists               |
| queued              |
| rss                 |
| segment_rules       |
| segments            |
| settings            |
| subscription        |
| templates           |
| trigger             |
| triggers            |
| tzoffset            |
| users               |
+---------------------+
23 rows in set (0.001 sec)
MariaDB [mailtrain]> QUIT
Bye

安装所需节点依赖项

# cd /srv/mailtrain
# npm install --production
# npm audit fix

创建生产MailTrain配置文件

sudo cp /srv/mailtrain/config/default.toml /srv/mailtrain/config/production.toml
sudo vim /srv/mailtrain/config/production.toml

配置HTTP端口以侦听,协议和侦听地址:

[www]
# HTTP port to listen on
port=3000
# HTTP interface to listen on
host="0.0.0.0"
# Enable HTTPS
https=false

我们可以将端口3000更改为其他自定义端口,然后选择启用或者禁用HTTPS。
如果我们选择启用HTTPS,请确保为证书私钥和证书文件提供路径。

为签署会话ID cookie生成随机秘密。

sudo apt -y install pwgen
pwgen 32

在文件上设置生成的秘密。

secret="du6yahghohnu2lu8nee4ahmaithooWa2"

还提供数据库连接详细信息。

[mysql]
host="localhost"
user="mailtrain"
password="StrongPasword"
database="mailtrain"

如果已安装和配置Redis,请提供连接详细信息。

[redis]
# enable to use Redis session cache or disable if Redis is not installed
enabled=true
host="localhost"
port=6379
db=5
# Uncomment if your Redis installation requires a password
#password=""

更改其他设置,如我们所见适合并保存文件。
完成后,为报告工作者创建一个配置文件。

sudo  cp /srv/mailtrain/workers/reports/config/default.toml /srv/mailtrain/workers/reports/config/production.toml
sudo vim /srv/mailtrain/workers/reports/config/production.toml

提供先前创建的报告/监视数据库用户。

[mysql]
host="localhost"
user="mailtrain_monitoring"
password="StrongPassword"
database="mailtrain"
port=3306
charset="utf8mb4"
timezone="local"

Cate下面的系统服务单元文件 /etc/systemd/system/目录。

sudo vim /etc/systemd/system/mailtrain.service

将以下内容粘贴到文件中:

[Unit]
Description=Mailtrain server
Requires=mysql.service
After=syslog.target network.target
[Service]
Environment="NODE_ENV=production"
WorkingDirectory=/srv/mailtrain
ExecStart=/usr/bin/node index.js
Type=simple
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target

重新加载系统并启动服务。

systemctl daemon-reload
sudo systemctl enable --now mailtrain

检查服务状态,它应该返回运行状态。

$systemctl status mailtrain.service
* mailtrain.service - Mailtrain server
   Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2016-12-23 05:15:35 PST; 19s ago
 Main PID: 22340 (mailtrain)
    Tasks: 20 (limit: 2319)
   CGroup: /system.slice/mailtrain.service
           |-22340 mailtrain
           `-22370 /usr/bin/node /srv/mailtrain/services/sender.js
Dec 23 05:15:37 ubuntu-01 node[22340]: info sql Update 28 applied
Dec 23 05:15:37 ubuntu-01 node[22340]: info sql Update 29 applied
Dec 23 05:15:38 ubuntu-01 node[22340]: info sql Update 30 applied
Dec 23 05:15:38 ubuntu-01 node[22340]: info sql Update 31 applied
Dec 23 05:15:38 ubuntu-01 node[22340]: info sql Update 32 applied
Dec 23 05:15:38 ubuntu-01 node[22340]: info sql Update 33 applied
Dec 23 05:15:38 ubuntu-01 node[22340]: info sql Database check completed
Dec 23 05:15:38 ubuntu-01 node[22340]: info Express WWW server listening on port 3000
Dec 23 05:15:38 ubuntu-01 node[22340]: verb UTC Updating timezone offsets
Dec 23 05:15:38 ubuntu-01 node[22340]: info Service All services started

一旦发言机运行。
除非我们在配置文件中更改它,否则它应该绑定到端口3000。

# ss -tunelp | grep 3000 
tcp   LISTEN  0       128  0.0.0.0:3000  0.0.0.0:*  users:(("mailtrain",pid=22340,fd=14)) ino:77855 sk:48 <->

配置nginx反向代理

我们可以将nginx使用nginx来提交给MailTrain服务的请求。

sudo apt -y install nginx
sudo cp /srv/mailtrain/setup/mailtrain-nginx.conf /etc/nginx/conf.d/

编辑文件以设置域名。

server_name example.com www.example.com;

验证nginx配置。

$sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

启动并启用Nginx服务

sudo systemctl restart nginx
sudo systemctl enable nginx

访问MailTrain URL http://example.com

默认登录是:

Username: admin
Password: test

登录admin>帐户后更改密码

提供旧密码和新密码,然后单击"更新"按钮。