Si të instaloni aplikacionin e buletinit të Mailtrain në CentOS 7


Mailtrain është një aplikacion buletini me burim të hapur, i vetë-pritur, i shkruar në Node.js. Ai përdor një Nodemailer shumë të njohur të bibliotekës Node.js për të dërguar emailet. Ai ofron automatizim dhe analitikë të jashtëzakonshme pa asnjë kosto. Mund të krijoni ose importoni lehtësisht një listë emaili prej një milion adresash emaili duke përdorur importimin e skedarëve CSV. Ai gjithashtu mbështet fushat dhe format e personalizuara. Ai siguron automatizim përmes nxitësve, të cilët mund t'u dërgojnë mesazhe specifike përdoruesve specifikë kur aktivizohet veprimi. Ju mund të përdorni çdo ofrues emaili për të dërguar buletinin i cili mbështet protokollin SMTP së bashku me mbështetjen për Amazon SES, ZoneMTA, SendGrid dhe Mailgun etj. Ai ofron redaktorë të shumtë WYSIWYG për të krijuar shabllone të bukur për gazetat.

Në këtë tutorial, ne do të instalojmë Mailtrain së bashku me të gjitha varësitë e kërkuara nga CentOS 7. Ne do të konfigurojmë gjithashtu Nginx si një përfaqësues të kundërt për të shërbyer aplikacionin në portin standard HTTP.

Kërkesat

Metabase kërkon të paktën 1 GB RAM. Të gjitha varësitë e kërkuara do të instalohen gjatë gjithë tutorialit. Do t'ju duhet një instalim minimal i CentOS 7 me qasje rrënjësore në të. Nëse jeni regjistruar si përdorues jo-root, mund të ekzekutoni sudo -i për të kaluar në përdorues rrënjë.

Përditëso sistemin bazë

Përpara se të instaloni ndonjë paketë, rekomandohet që të përditësoni paketat dhe depon duke përdorur komandën e mëposhtme.

yum -y update

Instaloni Node.js

Node.js kërkohet nga Mailtrain pasi është ndërtuar duke përdorur Nodemailer. Node.js është një kohë ekzekutimi shumë e njohur JavaScript dhe Nodemailer është një modul për aplikacionet Node.js për të dërguar email.

Shto depon Node.js 8.x:

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

Instaloni Node.js.

yum -y install nodejs

Instaloni MariaDB

Për të ruajtur bazën e të dhënave Mailtrain, do të na duhet të instalojmë MariaDB. MariaDB është një fork i MySQL
Instaloni depon e MariaDB në sistemin tuaj.

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

Shtoni linjat e mëposhtme në skedar.

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

Tani instaloni MariaDB duke ekzekutuar.

yum -y install mariadb-server mariadb

Për të nisur MariaDB dhe për ta aktivizuar atë që të fillojë në kohën e nisjes duke përdorur komandat e mëposhtme.

systemctl start mariadb
systemctl enable mariadb

Tani ekzekutoni komandat e mëposhtme për të siguruar instalimin tuaj MySQL ose MariaDB.

mysql_secure_installation

Do të ekzekutojë një skript të vogël i cili ju kërkon të jepni fjalëkalimin rrënjë për MariaDB. Meqë sapo kemi instaluar MariaDB, fjalëkalimi rrënjësor nuk është vendosur, thjesht shtypni enter për të vazhduar më tej. Do t'ju pyesë nëse dëshironi të vendosni një fjalëkalim rrënjësor për instalimin tuaj të MariaDB, zgjidhni y dhe vendosni një fjalëkalim të fortë për instalimin. Gjithashtu do t'ju kërkojë të hiqni bazat e të dhënave të testimit dhe përdoruesit anonimë. Shumica e pyetjeve janë vetë-shpjeguese dhe ju duhet t'i përgjigjeni po ose y të gjitha pyetjeve.

Mailtrain kërkon dy përdorues të bazave të të dhënave për të punuar, një për administrimin e bazës së të dhënave Mailtrain dhe një tjetër për gjenerimin e raporteve të punonjësve.

Për të krijuar një bazë të dhënash, do të na duhet fillimisht të identifikohemi në linjën e komandës MySQL. Ekzekutoni komandën e mëposhtme për të njëjtën gjë.

mysql -u root -p

Kjo do t'ju kërkojë për fjalëkalimin, jepni fjalëkalimin rrënjësor të MySQL që keni vendosur më herët. Tani ekzekutoni pyetjen e mëposhtme për të krijuar një bazë të dhënash të re për instalimin tuaj të Mailtrain.

CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;

Pyetja e mësipërme do të krijojë një bazë të dhënash të quajtur mailtrain. Sigurohuni që të përdorni pikëpresje në fund të çdo pyetjeje pasi pyetja përfundon gjithmonë me pikëpresje. Pasi të krijohet baza e të dhënave, mund të krijoni një përdorues të ri dhe t'i jepni të gjitha lejet përdoruesit për bazën e të dhënave. Përdorimi i përdoruesit rrënjë nuk rekomandohet për bazat e të dhënave. Për të krijuar një përdorues të ri të bazës së të dhënave, ekzekutoni pyetjen e mëposhtme.

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

Pyetja e mësipërme do të krijojë një përdorues me emër përdoruesi mailtrain. Ju mund të përdorni çdo emër përdoruesi të preferuar në vend të mailtrain. Zëvendësoni StrongPassword me një fjalëkalim të fortë. Tani jepni privilegjet e duhura për përdoruesit e bazës së të dhënave mbi bazën e të dhënave që keni krijuar. Ekzekutoni komandën e mëposhtme.

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

Tani krijoni një përdorues të ri për Mailtrain RO.

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

Siguroni akses leximi për përdoruesin RO mbi bazën e të dhënave Mailtrain.

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

Tani ekzekutoni komandën e mëposhtme për të aplikuar menjëherë ndryshimet në privilegjet e bazës së të dhënave.

FLUSH PRIVILEGES;

Dilni nga prompt MySQL duke përdorur komandën e daljes.

EXIT;

Instaloni Dependencies

Mailtrain kërkon pak më shumë varësi për të funksionuar. Instaloni varësitë duke ekzekutuar:

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

ImageMagick është një mjet për të përpunuar imazhet Bitmap dhe Git do të përdoret për të klonuar depon e projektit të aplikacionit. Redis është një aplikacion shumë i njohur për cache-in e sesioneve dhe Python, bind-utils, gcc-c++ dhe make do të përdoren për të përpiluar skedarët e aplikacioneve.

Nisni Redis dhe aktivizoni që të fillojë automatikisht:

systemctl start redis
systemctl enable redis

Shkarkoni dhe instaloni Mailtrain

Klononi skedarët e instalimit të Mailtrain duke përdorur Git.

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

Krijoni një përdorues të ri Mailtrain për të ekzekutuar demonin e Mailtrain. Kjo do të sigurojë që Mailtrain të funksionojë në një mjedis të izoluar.

adduser mailtrain -d /opt/mailtrain

Komanda e mësipërme do të krijojë një mailtrain të ri përdoruesi dhe /opt/mailtrain do të përdoret si direktoria kryesore.

Kalo në drejtorinë Mailtrain duke ekzekutuar:

cd /opt/mailtrain

Përpara se të vazhdoni më tej, duhet të krijoni një varg të rastësishëm i cili do të përdoret për të enkriptuar të dhënat e sesionit. Për të gjeneruar vargun e rastësishëm, mund të përdorni mjetin pwgen.

Ekzekutoni yum -y install pwgen për të instaluar programin pwgen. Ekzekutoni pwgen -1 64 për të gjeneruar një varg me gjatësi 64 karaktere. Do ta shohësh:

[ mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied

Krijo një skedar të ri konfigurimi production.toml. Konfigurimi i dhënë në këtë skedar anashkalon skedarin e paracaktuar të konfigurimit default.toml. Ne nuk duhet të modifikojmë skedarin e konfigurimit të paracaktuar. Krijo një skedar të ri production.toml për të ruajtur konfigurimin mbizotërues.

nano config/production.toml

Plotësoni skedarin me konfigurimin e mëposhtëm.

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

Konfigurimi i mësipërm mundëson që Mailtrain të ekzekutohet si përdoruesi i postës së përdoruesit dhe përdoruesi i Mailtrain Reports Worker të funksionojë si përdorues askush. Më tej, ai konfiguron serverin e integruar për të dëgjuar localhost në portin 3000. Ne do të konfigurojmë Nginx si një përfaqësues të kundërt, në mënyrë që ndërfaqja në internet Mailtrain të mund të aksesohet përmes portit standard HTTP.

Zëvendësoni RandomString in secret= me vargun e rastësishëm të krijuar më sipër. Cakto proxy në true pasi ne do të ekzekutojmë serverin e integruar Mailtrain pas përfaqësuesit Nginx.

Vendosni emrin e përdoruesit, fjalëkalimin dhe emrin e bazës së të dhënave të bazës së të dhënave që keni krijuar për të ruajtur të dhënat e Mailtrain.

Gjithashtu, krijoni një skedar të ri për të ruajtur konfigurimin e prodhimit për Raportet e Punëtorëve.

nano workers/reports/config/production.toml

Plotësoni skedarin me konfigurimin e mëposhtëm.

[log]
level="error"

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

Tani ulni varësitë e nevojshme të Node.js dhe instaloni softuerin:

npm install --production

Pasi të instalohet aplikacioni, mund ta filloni menjëherë duke përdorur:

NODE_ENV=production npm start

Nëse serveri po funksionon, atëherë duhet të shihni daljen e mëposhtme.

[ mailtrain]# NODE_ENV=production npm start

>  start /opt/mailtrain
> node index.js
    
info Using local auth

Por në vend që të nisim aplikacionin drejtpërdrejt, ne do të përdorim një shërbim systemd. Ndaloni ekzekutimin duke shtypur ctrl+C.

Jepni pronësinë e skedarëve përdoruesit e Mailtrain dhe hiqni të gjitha lejet mbi konfigurimin nga përdoruesit e tjerë jo-root të sistemit:

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

Vendosja e Shërbimit të Sistemit

Krijo një skedar të ri shërbimi Systemd. Përdorimi i Systemd në vend të një komande të drejtpërdrejtë për të ekzekutuar serverin do të sigurojë që serveri të fillojë automatikisht në rast dështimi dhe të rindizet. E bën shumë të lehtë menaxhimin e shërbimit.

nano /etc/systemd/system/mailtrain.service

Plotësoni skedarin me konfigurimin e mëposhtëm.

[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

Nisni Mailtrain dhe aktivizoni që të fillojë automatikisht në kohën e nisjes:

systemctl enable mailtrain
systemctl start mailtrain

Për të kontrolluar statusin e shërbimit, ekzekutoni:

systemctl status mailtrain

Ju duhet të shihni që shërbimi po funksionon në mënyrë aktive.

[ ~]# 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

Konfiguro Logrotate

Logrotate është një mjet shumë i dobishëm për të rifreskuar regjistrat e vjetëruar. Kur një shërbim funksionon vazhdimisht, ai gjeneron një sasi të madhe regjistrash. Skedarët që përmbajnë regjistrat konsumojnë shumë hapësirë në disk. Logrotate fshin periodikisht regjistrat e vjetër në mënyrë që shënimet e regjistrit të mund të zëvendësohen me regjistra të rinj.

Krijoni një skedar të ri konfigurimi logrotate:

nano /etc/logrotate.d/mailtrain

Plotësoni skedarin me konfigurimin e mëposhtëm:

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

Vendosni Nginx si përfaqësues të kundërt

Ne kemi konfiguruar ndërfaqen e integruar të uebit të Mailtrain për të dëgjuar localhost në portin 3000, pasi është e rëndësishme të ekzekutoni një server në internet të prodhimit për t'i shërbyer uebsajtit përdoruesve. Në këtë tutorial, ne do të përdorim Nginx si përfaqësuesin e kundërt në mënyrë që aplikacioni të mund të aksesohet përmes portit standard HTTP. Instaloni serverin në internet Nginx:

yum -y install nginx

Krijoni një host të ri virtual për skedarin e bllokut të serverit për Nginx:

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

Plotësoni skedarin me:

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;
    }
}

Rinisni serverin në internet Nginx dhe aktivizoni që të fillojë automatikisht në kohën e nisjes:

systemctl restart nginx
systemctl enable nginx

Konfiguro Firewall dhe SELinux

Nëse po ekzekutoni një mur zjarri në serverin tuaj, do t'ju duhet të konfiguroni murin e zjarrit për të vendosur një përjashtim për shërbimin HTTP. Lejo që përfaqësuesi i kundërt Nginx të lidhet nga jashtë rrjetit.

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

Nëse e keni të aktivizuar SELinux në sistemin tuaj, atëherë do t'ju duhet të shtoni disa përjashtime në politikat SELinux.

Për të kontrolluar nëse SELinux është i aktivizuar, ekzekutoni:

getenforce

Nëse keni të aktivizuar SELinux, atëherë ekzekutoni:

setsebool -P httpd_can_network_connect 1

Hyrja në ndërfaqen e internetit

Instalimi i Mailtrain tani ka përfunduar. Tani mund të përdorni serverin Mailtrain në http://news.example.com. Do të shihni ndërfaqen e mëposhtme.

Klikoni në butonin e hyrjes dhe identifikohuni duke përdorur emrin e përdoruesit dhe testin e fjalëkalimit.

Shfleto seksionin Llogaria në panelin e kontrollit dhe përditëso adresën e emailit dhe fjalëkalimin. Është shumë e rëndësishme të përditësoni fjalëkalimin sa më shpejt të jetë e mundur.

Gjithashtu, është e rëndësishme të përditësoni cilësimet përpara se të përdorni Mailtrain.

Përditësoni URL-në e faqes dhe emailin e administratorit. Ju gjithashtu mund të siguroni ID-në e gjurmimit të Google Analytics për të gjurmuar njohuritë nëpërmjet Google analitics. Ju mund të vendosni një kod HTML i cili do të shfaqet në faqen kryesore të serverit tuaj.

Vendosni parazgjedhjet e fushatës, të tilla si emri Sander, adresa e parazgjedhur, Default nga emri, emaili dhe URL-ja etj. Gjatë dërgimit të emaileve, nëse këto opsione nuk janë konfiguruar, atëherë do të përdoren parazgjedhjet.

Së fundi, konfigurimi më i rëndësishëm është sigurimi i kredencialeve të serverit të postës elektronike. Ju mund të përdorni çdo server SMTP ose Amazon SES (Simple Email Service). Nëse jeni duke përdorur SMTP se, jepni emrin e hostit të serverit të postës, portin, emrin e përdoruesit dhe fjalëkalimin e serverit tuaj SMTP. Nëse jeni duke përdorur Amazon SES, jepni çelësin API dhe kredencialet e tjera.

Ju gjithashtu mund të konfiguroni serverin tuaj SMTP. thjesht ndiqni ndonjë nga këto udhëzues:

  • Si të krijoni një server të postës plotësisht të veçuar duke përdorur Postar
  • Ndërtoni një server poste me funksione të plota në CentOS 6 me Postfix, Dovecot, PostgreSQL
  • Konfigurimi i një serveri të postës duke përdorur Exim4, Clamav, Dovecot, SpamAssassin dhe shumë më tepër në Debian

Ju keni një server Mailtrain që funksionon plotësisht të instaluar në serverin tuaj CentOS 7 tani. Krijoni listën tuaj të parë dhe filloni t'u dërgoni buletinet abonentëve. Mund të krijoni një shabllon interaktiv duke përdorur redaktorin WYSIWYG dhe të dërgoni emailet duke përdorur fushatat. Mailtrain gjithashtu ofron raporte të emaileve të dërguara dhe të hapura. Ju mund të përdorni skedën Automatizimi për të krijuar aktivizues që dërgojnë email kur kryhet një veprim specifik. Ju gjithashtu mund të konfiguroni enkriptimin GPG. Nëse një listë ka një fushë të personalizuar për një grup çelësash publik GPG, atëherë pajtimtarët mund të ngarkojnë çelësin e tyre publik GPG për të marrë mesazhe të koduara nga lista.