如何在CentOS 7上安装Oxwall
Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,
Matrix是用于分散式实时通信的开放标准通信协议。Matrix被实现为分布在Internet上的家庭服务器;因此,没有任何控制或故障点。Matrix提供了一个RESTful HTTP API,用于创建和管理分布式聊天服务器,包括发送和接收消息,邀请和管理聊天室成员,维护用户帐户以及提供高级聊天功能(例如VoIP和视频通话等)。Matrix还建立了一个全球分布的家庭服务器之间的安全同步。
Synapse是由Matrix团队编写的Matrix家用服务器的实现。Matrix生态系统由遍布全球的许多联合家庭服务器网络组成。Matrix用户使用聊天客户端连接到家庭服务器,该家庭服务器又连接到Matrix网络。家庭服务器存储该特定用户的聊天记录和登录信息。
在本教程中,我们将使用matrix.example.com
Matrix Synapse作为域名。将所有出现的替换为matrix.example.com
要用于Synapse主服务器的实际域名。
使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装Python。
Matrix Synapse需要Python 2.7才能工作。在所有CentOS服务器实例中预装了Python 2.7。您可以检查已安装的Python版本。
python -V
您应该得到类似的输出。
[user@vultr ~]$ python -V
Python 2.7.5
更改默认版本的Python可能会破坏YUM存储库管理器。但是,如果您需要最新版本的Python,则可以进行替代安装,而无需替换默认的Python。
在Development tools
编译安装程序文件所需的组中安装软件包。
sudo yum groupinstall -y "Development tools"
安装更多所需的依赖项。
sudo yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel
安装Python pip。Pip是Python软件包的依赖管理器。
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
为Synapse应用程序创建虚拟环境。Python虚拟环境用于为Python项目创建隔离的虚拟环境。虚拟环境包含其自己的安装目录,并且不与全局和其他虚拟环境共享库。
sudo virtualenv -p python2.7 /opt/synapse
向当前用户提供目录的所有权。
sudo chown -R $USER:$USER /opt/synapse/
现在激活虚拟环境。
source /opt/synapse/bin/activate
请确保您有最新版本的pip
和setuptools
。
pip install --upgrade pip
pip install --upgrade setuptools
使用pip安装最新版本的Synapse。
pip install https://github.com/matrix-org/synapse/tarball/master
上面的命令在提取并安装最新版本的Synapse以及Github存储库中的所有依赖项时,将需要一些时间来执行。
Synapse使用SQLite作为默认数据库。SQLite将数据存储在数据库中,并作为平面文件保存在磁盘上。使用SQLite非常简单,但不建议用于生产环境,因为与PostgreSQL相比,它非常慢。
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
初始化数据库。
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
编辑/var/lib/pgsql/9.6/data/pg_hba.conf
以启用基于MD5的身份验证。
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
找到以下行,并改变peer
对trust
和idnet
对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 idnet
# IPv6 local connections:
host all all ::1/128 idnet
更新后,配置应如下所示。
# 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
登录。
sudo su - postgres
为Synapse创建一个新的PostgreSQL用户。
createuser synapse
PostgreSQL提供了psql
在数据库上运行查询的外壳。通过运行切换到PostgreSQL Shell。
psql
为新创建的Synapse数据库用户设置密码。
ALTER USER synapse WITH ENCRYPTED password 'DBPassword';
替换DBPassword
为强密码并记录下来,因为稍后我们将使用该密码。为PostgreSQL数据库创建一个新数据库。
CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;
从psql
外壳退出。
\q
sudo
从当前postgres
用户切换到该用户。
exit
您还需要安装Synapse与PostgreSQL数据库服务器通信所需的软件包。
sudo yum -y install postgresql-devel libpqxx-devel.x86_64
source /opt/synapse/bin/activate
pip install psycopg2
Synapse需要配置文件才能启动。配置文件存储服务器设置。切换到虚拟环境并为Synapse生成配置。
source /opt/synapse/bin/activate
cd /opt/synapse
python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
替换matrix.example.com
为您的实际域名,并确保服务器名称可解析为Vultr实例的IP地址。提供--report-stats=yes
是否要让服务器生成报告,提供--report-stats=no
以禁用报告和统计信息的生成。
您应该看到类似的输出。
(synapse)[user@vultr synapse]$ python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
A config file has been generated in 'homeserver.yaml' for server name 'matrix.example.com' with corresponding SSL keys and self-signed certificates. Please review this file and customise it to your needs.
If this server name is incorrect, you will need to regenerate the SSL certificates
默认情况下,将homeserver.yaml
配置为使用SQLite数据库。我们需要对其进行修改,以使用我们之前创建的PostgreSQL数据库。
编辑新创建的 homeserver.yaml
。
nano homeserver.yaml
查找使用SQLite3的现有数据库配置。注释掉以下行。另外,为PostgreSQL添加新的数据库配置。确保使用正确的数据库凭据。
# Database configuration
#database:
# The database engine name
#name: "sqlite3"
# Arguments to pass to the engine
#args:
# Path to the database
#database: "/opt/synapse/homeserver.db"
database:
name: psycopg2
args:
user: synapse
password: DBPassword
database: synapse
host: localhost
cp_min: 5
cp_max: 10
默认情况下,从Web界面注册新用户是禁用的。要启用注册,您可以设置enable_registration
为True
。您还可以设置一个秘密注册密钥,即使禁用了注册,该密钥也允许任何人注册拥有该密钥的人。
enable_registration: False
registration_shared_secret: "YPPqCPYqCQ-Rj,ws~FfeLS@maRV9vz5MnnV^r8~pP.Q6yNBDG;"
保存文件并退出编辑器。现在,您将需要注册您的第一个用户。但是,在注册新用户之前,您将需要先启动该应用程序。
source /opt/synapse/bin/activate && cd /opt/synapse
synctl start
您应该看到以下几行。
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - SynapseSite starting on 8008
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - Starting factory <synapse.http.site.SynapseSite instance at 0x44bbc68>
2017-09-05 11:10:41,921 - synapse.app.homeserver - 201 - INFO - - Synapse now listening on port 8008
2017-09-05 11:10:41,922 - synapse.app.homeserver - 442 - INFO - - Scheduling stats reporting for 3 hour intervals
started synapse.app.homeserver('homeserver.yaml')
注册一个新的Matrix用户。
register_new_matrix_user -c homeserver.yaml https://localhost:8448
您应该看到以下内容。
(synapse)[user@vultr synapse]$ register_new_matrix_user -c homeserver.yaml https://localhost:8448
New user localpart [user]: admin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success.
最后,在使用Homeserver之前,您需要允许端口8448通过防火墙。端口8448
用作安全联盟端口。家庭服务器使用此端口相互安全通信。您还可以通过此端口使用内置的Matrix Web聊天客户端。
sudo firewall-cmd --permanent --zone=public --add-port=8448/tcp
sudo firewall-cmd --reload
现在,您可以https://matrix.example.com:8448
通过喜爱的浏览器登录Matrix网络聊天客户端。由于使用的证书是自签名的,因此您将看到有关SSL证书的警告。我们不会使用此网络聊天客户端,因为它已经过时且不再维护。只需尝试检查您是否可以使用刚刚创建的用户帐户登录。
可以使用“让我们加密免费的SSL”代替使用自签名证书保护联盟端口的安全。我们可以通过名为Certbot的官方Let's Encrypt客户端获得免费的SSL。
安装Certbot。
sudo yum -y install 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 matrix.example.com
生成的证书可能存储在中/etc/letsencrypt/live/matrix.example.com/
。SSL证书将存储为fullchain.pem
,私钥将存储为privkey.pem
。
复制证书。
sudo cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
sudo cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem
您将需要从homeserver.yaml
文件更改证书和密钥的路径。编辑配置。
nano /opt/synapse/homeserver.yaml
找到以下几行并修改路径。
tls_certificate_path: "/opt/synapse/letsencrypt-fullchain.pem"
# PEM encoded private key for TLS
tls_private_key_path: "/opt/synapse/letsencrypt-privkey.pem"
保存文件并退出编辑器。重新启动Synapse服务器,以使更改生效。
source /opt/synapse/bin/activate && cd /opt/synapse
synctl restart
让我们加密证书的有效期限为90天,因此建议您使用cron作业为证书设置自动续订。Cron是一项系统服务,用于运行定期任务。
创建新脚本来续订证书,并将续订的证书复制到Synapse目录。
sudo nano /opt/renew-letsencypt.sh
填充文件。
#!/bin/sh
/usr/bin/certbot renew --quiet --nginx
cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem
提供执行权限。
sudo chmod +x /opt/renew-letsencypt.sh
打开cron作业文件。
sudo crontab -e
在文件末尾添加以下行。
30 5 * * 1 /opt/renew-letsencypt.sh
上述cron作业将在每个星期一的5:30 AM运行。如果证书到期,它将自动续订它们。
现在您可以访问https://matrix.example.com:8448
。您将看到连接前没有SSL警告。
除了安全的联合端口外8448
,Synapse还侦听不安全的客户端端口8008
。现在,我们将Nginx配置为Synapse应用程序的反向代理。
sudo yum -y install nginx
创建一个新的配置文件。
sudo nano /etc/nginx/conf.d/synapse.conf
用以下内容填充文件。
server {
listen 80;
server_name matrix.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name matrix.example.com;
ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/synapse.access.log;
location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
重新启动并启用Nginx以在启动时自动启动。
sudo systemctl restart nginx
sudo systemctl enable nginx
最后,您可以验证是否可以通过反向代理访问Synapse。
curl https://matrix.example.com/_matrix/key/v2/server/auto
您应该获得类似的输出。
[user@vultr ~]$ curl https://matrix.example.com/_matrix/key/v2/server/auto
{"old_verify_keys":{},"server_name":"matrix.example.com","signatures":{"matrix.example.com":{"ed25519:a_ffMf":"T/Uq/UN5vyc4w7v0azALjPIJeZx1vQ+HC6ohUGkTSqiFI4WI/ojGpb2763arwSSQLr/tP/2diCi1KLU2DEnOCQ"}},"tls_fingerprints":[{"sha256":"eorhQj/kubI2PEQZyBZvGV7K1x3EcQ7j/AO2MtZMplw"}],"valid_until_ts":1504876080512,"verify_keys":{"ed25519:a_ffMf":{"key":"Gc1hxkpPmQv71Cvjyk+uzR5UtrpmgV/UwlsLtosawEs"}}}
建议使用Systemd服务来管理Synapse服务器进程。使用Systemd将确保服务器在系统启动和故障时自动启动。
创建一个新的Systemd服务文件。
sudo nano /etc/systemd/system/matrix-synapse.service
填充文件。
[Unit]
Description=Matrix Synapse service
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/synapse/
ExecStart=/opt/synapse/bin/synctl start
ExecStop=/opt/synapse/bin/synctl stop
ExecReload=/opt/synapse/bin/synctl restart
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=synapse
[Install]
WantedBy=multi-user.target
现在,您可以快速启动Synapse服务器。
sudo systemctl start matrix-synapse
使用以下命令停止或重新启动服务器。
sudo systemctl stop matrix-synapse
sudo systemctl restart matrix-synapse
您可以检查服务状态。
sudo systemctl status matrix-synapse
Matrix Synapse服务器现在已在您的服务器上安装和配置。由于Matrix的内置Web客户端已过时,因此您可以从各种可用于聊天的客户端应用程序中进行选择。Riot是最受欢迎的聊天客户端,几乎所有平台上都可以使用。您可以使用Riot的网络聊天客户端的托管版本,也可以在自己的服务器上托管其副本。除此之外,您还可以使用Riot的桌面和移动聊天客户端,它们可用于Windows,Mac,Linux,IOS和Android。
如果您希望托管自己的Riot Web客户端副本,则可以进一步阅读以获取在服务器上安装Riot的说明。对于托管的台式机和移动客户端,您可以使用用户名和密码直接登录到家庭服务器。只需my Matrix ID
从Sign In
选项的下拉菜单中进行选择,然后提供您在注册新用户期间创建的用户名和密码即可。单击,Custom server
然后使用您的Synapse实例的域名。由于我们已经配置了Nginx,因此我们可以仅用https://matrix.example.com
作Home服务器和https://matrix.org
Identity Server URL。
Riot也是开源的,可以免费托管在您自己的服务器上。它不需要任何数据库或依赖项。由于我们已经在运行Nginx服务器,因此我们可以将其托管在同一服务器上。
您用于Synapse和Riot的域或子域必须不同,以避免跨站点脚本编写。但是,您可以使用同一域的两个子域。在本教程中,我们将
riot.example.com
用作Riot应用程序的域。用riot.example.com
Riot应用程序的实际域或子域替换所有出现的。
在服务器上下载Riot。
cd /opt/
sudo wget https://github.com/vector-im/riot-web/releases/download/v0.12.3/riot-v0.12.3.tar.gz
您始终可以在Riot的Github上找到最新版本的链接。
提取档案。
sudo tar -xzf riot-v*.tar.gz
重命名目录以方便处理。
sudo mv riot-v*/ riot/
因为我们已经安装了Certbot,所以我们可以直接生成证书。确保您使用的域或子域指向服务器。
sudo systemctl stop nginx
sudo certbot certonly --standalone -d riot.example.com
生成的证书很可能存储在/etc/letsencrypt/live/riot.example.com/
目录中。
为Riot应用程序创建虚拟主机。
sudo nano /etc/nginx/conf.d/riot.conf
填充文件。
server {
listen 80;
server_name riot.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name riot.example.com;
ssl_certificate /etc/letsencrypt/live/riot.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/riot.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
root /opt/riot;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/riot.access.log;
}
复制样本配置文件。
sudo cp /opt/riot/config.sample.json /opt/riot/config.json
现在,编辑配置文件以进行少量更改。
sudo nano /opt/riot/config.json
找到以下几行。
"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",
将默认家庭服务器URL的值替换为Matrix服务器的URL。对于身份服务器URL,可以使用默认选项,也可以将其值提供给Matrix身份服务器,即https://matrix.org
。
"default_hs_url": "https://matrix.example.com",
"default_is_url": "https://matrix.org",
保存文件并退出。向Nginx用户提供文件的所有权。
sudo chown -R nginx:nginx /opt/riot/
重新启动Nginx。
sudo systemctl restart nginx
您可以在上访问Riot https://riot.example.com
。现在,您可以使用之前创建的用户名和密码登录。您可以使用默认服务器进行连接,因为我们已经为应用程序更改了默认Matrix服务器。
现在,您已启动并正在运行Matrix Synapse家庭服务器。您还拥有Riot的托管副本,可以使用该副本使用其Matrix ID,电子邮件或手机号码向其他人发送消息。首先在服务器上创建一个聊天室,然后在Matrix上邀请您的朋友加入您创建的聊天室。
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的开源组件软件。它的功能包括电子邮件通信,事件
使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。