如何在CentOS 7上安装Mailtrain新闻通讯应用程序
使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。
Mastodon是一款开源的自托管微博客和社交网络服务器。它提供类似Twitter的功能;但它不是由单个公司控制,而是由分散的服务器联合而成,它们相互连接在一起构成整个社交网络系统。小型团队可以启动其Mastodon服务器实例,以在彼此之间以及与联盟社区的其他用户进行通信。它还使您能够选择自己的隐私和审核策略,并定义如何与其他服务器的其他用户进行通信。单个用户创建和订阅的内容托管在创建其帐户的服务器上。即使用户不在同一服务器上,他们也可以彼此跟随。Mastodon网络中的每个用户都有其唯一的名称或ID,该名称或ID位于@[email protected]格式。Mastodon的客户端应用程序可用于几乎所有平台。
注意:我们将使用social.example.comMastodon实例作为域名。用social.example.com您要用于Mastodon应用程序的实际域名替换所有出现的。
如有必要,请使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装所需的依赖项。
Mastodon需要几个依赖项才能起作用。安装的最新版本Node.js,该版本将用于编译JavaScript文件。
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs
Install Yarn,这是一个快速,可靠和安全的依赖项管理器应用程序。我们将使用Yarn安装Node.js依赖项。
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn
安装Redis。Redis是一个内存中的数据结构存储和缓存应用程序。
sudo yum -y install redis
启动Redis并使其能够在启动时自动启动。
sudo systemctl start redis
sudo systemctl enable redis
安装一些其他的依赖关系,这些依赖关系是构建Ruby安装所需的,还需要其他依赖关系。
sudo yum -y install ImageMagick git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel
您还需要安装开发工具。
sudo yum -y groupinstall 'Development Tools'
PostgreSQL是一个对象关系数据库系统。您将需要将PostgreSQL存储库添加到系统中,因为默认yum存储库包含较旧版本的应用程序。
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
安装PostgreSQL数据库服务器。
sudo yum -y install postgresql96-server postgresql96-contrib postgresql96-devel
初始化数据库。
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
编辑pg_hba.conf文件以启用MD5基于身份验证。
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
找到以下行,并改变peer对trust和ident对md5。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
更新后,配置应如下所示。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
启动PostgreSQL服务器,并使其能够在启动时自动启动。
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
更改默认PostgreSQL用户的密码。
sudo passwd postgres
以PostgreSQL用户身份登录到外壳。
sudo su - postgres
PostgreSQL为Mastodon 创建一个新用户。
createuser mastodon
PostgreSQL提供了psql在数据库上运行查询的外壳。通过运行切换到PostgreSQL Shell。
psql
为Mastodon数据库的新创建的用户设置密码,并提供添加新数据库的权限。
ALTER USER mastodon WITH ENCRYPTED password 'DBPassword' CREATEDB;
替换DBPassword为强密码。从psql外壳退出:
\q
切换到sudo用户。
exit
安装更多必需的PostgreSQL依赖项。
sudo yum -y install libpqxx-devel protobuf-devel
为Mastodon创建一个新用户,然后切换到新创建的用户。
sudo adduser mastodon -d /opt/mastodon
sudo su - mastodon
我们将使用Ruby Version Manager或RVM安装最新版本的Ruby。它用于安装和管理Ruby的多个版本。
将GPGRVM 的密钥添加到您的服务器。
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
安装RVM。
curl -sSL https://get.rvm.io | bash -s stable
source /opt/mastodon/.rvm/scripts/rvm
现在获取可用的Ruby版本列表。
rvm list known
您将看到以下输出。
[mastodon@vultr ~]$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head
...
现在,从列表中安装最新版本的Ruby。
rvm install 2.4
使用已安装的Ruby版本。
rvm use 2.4
您应该能够验证其版本。
ruby -v
您应该看到类似的输出。
[mastodon@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Install bundler,它是Ruby应用程序的依赖项管理器。
gem install bundler
现在切换到Mastodon用户的主目录,并从Github克隆应用程序存储库文件。
cd ~
git clone https://github.com/tootsuite/mastodon.git app
移动应用程序目录并签出应用程序的最新版本。
cd ~/app
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
配置,bundle以将自定义路径用于PostgreSQL配置。另外,安装Ruby依赖项。
bundle config build.pg --with-pg-config=/usr/pgsql-9.6/bin/pg_config
bundle install --deployment --without development test
使用Yarn安装Node.js依赖项。
yarn install --pure-lockfile
您将需要为Mastodon应用程序创建一个配置文件。复制样本配置文件。
cd ~/app
cp .env.production.sample .env.production
编辑文件之前,请secrets通过运行以下命令三次来生成三种不同的文件。您将需要在配置文件中设置这些机密。
RAILS_ENV=production bundle exec rake secret
您应该得到类似的输出。
[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake secret
0f17dab1cf4a07f6fac671ecd5815adcb59d012b338dae9350c66402250c6c729dccd6182b1a8f75c4fde55453ce283ea66e07ed4466cdc6d4d6974c98512967
使用nano编辑器编辑配置文件。
nano .env.production
查找以下行并相应地更改值。
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
根据您在PostgreSQL安装过程中创建的数据库用户,提供数据库凭据。为数据库名称提供任何名称,因为Mastodon将使用您提供的名称自动创建数据库。
DB_HOST=127.0.0.1
DB_USER=mastodon
DB_NAME=mastodon
DB_PASS=DBPassword
DB_PORT=5432
设置应用程序的域名。
LOCAL_DOMAIN=social.example.com
找到以下几行并将其值设置为您生成的机密。
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=
保存文件并退出编辑器。
现在,运行以下命令来生成Web Push VAPID密钥。如果尚未在上述配置文件中设置机密,则在生成Web Push VAPID密钥时会出现错误。
RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key
您应该看到以下输出。
[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key
VAPID_PRIVATE_KEY=DCMQdSPkdm-mepsNh4F3suc-UIvsABCvwFd03jSVemM=
VAPID_PUBLIC_KEY=BMMVcVXmqnV0C8S_ybZ7eQH-MXBEX2exqfdPSYQiMMUF2rRxfhoEtVF931i26ebMgmslHB_nvVadOdcBPhaFEjw=
再次打开配置文件,并在各自的行中设置生成的密钥。
VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=
最后,提供SMTP邮件服务器的信息,以便应用程序可以向用户发送电子邮件。使用有效的SMTP服务器非常重要,因为新注册后,将向用户发送一封带有激活链接的电子邮件。新用户将必须单击激活链接来激活其帐户。
SMTP_SERVER=mail.example.com
SMTP_PORT=456
[email protected]
SMTP_PASSWORD=MailPassword
[email protected]
SMTP_TLS=true
完成后,保存文件并退出编辑器。您已完成Mastodon实例的基本配置。
首次设置PostgreSQL数据库。
RAILS_ENV=production bundle exec rails db:setup
首先,以上命令将使用配置中提到的名称创建一个新数据库。然后,它将根据配置写入数据库。
预编译所有CSS和JavaScript文件以创建缓存。
RAILS_ENV=production bundle exec rails assets:precompile
Mastodon现在已安装在您的服务器上。现在,您将需要设置一个NginxWeb服务器来为应用程序Systemd提供服务,并需要设置服务来运行Mastodon服务。
从现在开始,我们将需要使用sudo用户来执行命令。
我们将Nginx Web服务器用作反向代理,以向用户提供应用程序。我们还将从Let's Encrypt获取并安装SSL证书。
安装Nginx和Certbot。Certbot是Let's Encrypt CA的官方证书颁发客户端。
sudo yum -y install nginx certbot
调整防火墙设置,以允许标准HTTP和HTTPS端口通过防火墙,因为Certbot需要建立HTTP连接来验证域权限。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
注意:要从Let's Encrypt CA获得证书,必须确保要为其生成证书的域指向服务器。如果不是,请对您域的DNS记录进行必要的更改,并等待DNS传播,然后再次提出证书请求。Certbot在提供证书之前会检查域权限。
现在,使用Certbot中的内置Web服务器为您的域生成证书。
sudo certbot certonly --standalone -d social.example.com
生成的证书很可能存储在/etc/letsencrypt/live/social.example.com/目录中。SSL证书将保留为fullchain.pem,私钥将另存为privkey.pem。
“加密”证书将在90天后过期,因此建议使用Cron作业为证书设置自动续订。Cron是一项系统服务,用于运行定期任务。
打开cron作业文件。
sudo crontab -e
添加以下行。
0 0 * * * /usr/bin/certbot renew --quiet
上面的cron工作将每天在午夜运行。如果证书到期,它将自动更新证书。
现在为Mastodon站点创建一个新的Nginx服务器块。
sudo nano /etc/nginx/conf.d/mastodon.conf
以此填充文件。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name social.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name social.example.com;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_certificate /etc/letsencrypt/live/social.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/social.example.com/privkey.pem;
keepalive_timeout 70;
sendfile on;
client_max_body_size 0;
root /opt/mastodon/app/public;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
add_header Strict-Transport-Security "max-age=31536000";
location / {
try_files $uri @proxy;
}
location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
add_header Cache-Control "public, max-age=31536000, immutable";
try_files $uri @proxy;
}
location @proxy {
proxy_set_header Host $host;
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 Proxy "";
proxy_pass_header Server;
proxy_pass http://127.0.0.1:3000;
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
tcp_nodelay on;
}
location /api/v1/streaming {
proxy_set_header Host $host;
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 Proxy "";
proxy_pass http://127.0.0.1:4000;
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
tcp_nodelay on;
}
error_page 500 501 502 503 504 /500.html;
}
确保更改域名和SSL证书的路径。
现在,您可以启动Nginx Web服务器,并使它能够在启动时自动启动。
sudo systemctl start nginx
sudo systemctl enable nginx
您还需要允许端口4000通过防火墙,因为该端口将提供流API服务。
sudo firewall-cmd --permanent --zone=public --add-port=4000/tcp
sudo firewall-cmd --reload
提供Mastodon目录的执行权限。
sudo chmod +x /opt/mastodon
您将需要启动三个不同的过程来成功启动Mastodon服务器。使用Systemd服务将确保Mastodon服务器在启动时自动启动并处理故障。
创建一个新的systemd服务以运行Mastodon Web服务。该服务将在port上启动内置的Web服务器3000。
sudo nano /etc/systemd/system/mastodon-web.service
用以下内容填充文件。
[Unit]
Description=Mastodon Web Service
After=network.target
[Service]
Type=simple
User=mastodon
Group=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb'
TimeoutSec=15
Restart=always
[Install]
WantedBy=multi-user.target
创建第二个Systemd服务以运行Mastodon后台队列服务。Mastodon队列服务负责所有后台任务。
sudo nano /etc/systemd/system/mastodon-queue.service
用以下内容填充文件。
[Unit]
Description=Mastodon Queue Service
After=network.target
[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="DB_POOL=5"
ExecStart=/bin/bash -lc 'bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push'
TimeoutSec=15
Restart=always
[Install]
WantedBy=multi-user.target
最后,为Mastodon流API服务创建最后一个服务文件。
sudo nano /etc/systemd/system/mastodon-api.service
用以下内容填充文件。
[Unit]
Description=Mastodon Streaming
After=network.target
[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="NODE_ENV=production"
Environment="PORT=4000"
ExecStart=/bin/npm run start
TimeoutSec=15
Restart=always
[Install]
WantedBy=multi-user.target
启用Mastodon服务以在启动时自动启动。
sudo systemctl enable mastodon-web mastodon-queue mastodon-api
要启动Mastodon服务,您可以运行此程序。
sudo systemctl start mastodon-web mastodon-queue mastodon-api
要检查服务的状态,可以运行此程序。
sudo systemctl status mastodon-web mastodon-queue mastodon-api
现在,您可以通过访问Mastodon应用程序https://social.example.com。在服务器上创建一个新的用户帐户,并通过打开电子邮件中发送的链接来验证用户帐户。要为刚创建的帐户提供管理员特权,请运行此命令。
sudo su - mastodon && cd ~/app
RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=<user_name>
替换<user_name>为您在Mastodon界面中用于创建帐户的实际用户名。
Mastodon实例现已安装并配置为运行。首先邀请您的朋友加入您的实例,并探索Mastodon提供的功能。您可以通过��载可用于各种平台的任何应用程序来在移动设备中使用社交网站。
使用其他系统?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 機器變磚。閱讀這篇文章以了解更多信息