在Debian 9上使用Elgg创建一个在线社交网络

在Debian 9上使用Elgg创建一个在线社交网络

本教程,我将向您展示如何在Debian 9上安装和配置最新的Elgg版本,以便创建一个免费的在线社交网络。

Elgg是一个用PHP编程语言编写的免费开源社交引擎框架软件。 Elgg框架可以帮助个人或组织在Apache / Nginx Web服务器,PHP和MySQL / MariaDB数据库管理系统(也称为LAMP或LEMP)下在Linux中创建强大的社交环境。 它还具有内置功能,可以为公共或私有内部网上的文件共享,博客,社交群组或教育平台提供支持。

为了在您的场所成功部署Elgg平台,您需要满足以下要求。

  • 由Debian 9提供支持的虚拟机或虚拟专用服务器,最好是最小安装
  • 通过服务器控制台或通过SSH远程管理直接访问root帐户或具有root权限的本地用户
  • 服务器需要为外部网络接口配置静态IP地址,以便通过其公共IP地址访问访问者
  • 您可能还需要为您的服务器配置公共或私人域名,以便访问者可以通过域名访问该平台,例如www.yourdomain.com,尽管您仍然可以通过您的服务器IP地址访问该平台。
  • 要通过电子邮件地址使用Elgg网站注册,或使用其他平台功能,您需要在您的场所部署邮件服务器或使用公共邮件服务器。

前要求

作为第一步,使用root权限或具有root权限的用户登录Debian 9服务器并发出以下命令,以便使用最新的安全修补程序,软件和内核更新来更新系统。

apt update
apt upgrade

接下来,确保通过执行以下命令配置机器的名称。 您应该替换此示例中使用的hostname变量以匹配您自己的域。

hostnamectl set-hostname www.socialnet.org

配置计算机主机名后,通过使用以下命令检查hosts文件,验证主机是否已正确配置。

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

最后,为了应用计算机主机名和内核更新,请通过发出以下命令重新引导系统。

systemctl reboot

系统重新启动后,登录回控制台并运行以下命令安装一些系统实用程序,以帮助我们通过Internet下载软件并提取一些存档文件类型

apt install wget zip unzip curl

安装LAMP

为了在我们的服务器上部署Elgg社交网络框架,我们需要安装LAMP组件。 我们将安装的第一个组件是RDBMS数据库 - MariaDB--流行的MySQL数据库的一个分支,作为数据库后端。 应用程序将使用MariaDB数据库来存储用户,会话,联系人,帖子,评论和其他信息。 要通过官方存储库在Debian 9中安装MariaDB数据库服务器和客户端软件,请在终端中发出以下命令。

apt install mariadb-server mariadb-client

数据库安装完成后,登录MySQL控制台并发出以下命令以保护数据库root帐户,默认情况下可以访问该帐户而不提供密码。

mysql -h localhost
Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(无)]>使用mysql;
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 [mysql]>更新用户设置插件=''其中user ='root';
Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0
MariaDB [mysql]>刷新权限;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]>退出
Bye

完成上述步骤后,执行Debian拉伸存储库提供的mysql_secure_installation脚本,以进一步保护MariaDB服务器并为数据库root帐户设置强密码。 主要是,在脚本的所有问题上回答“是”,例如:更改MySQL root密码,删除匿名用户,禁用远程root登录和删除测试数据库,如下面的脚本摘录所示。

mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we'll need the current

password for the root user.  If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] y

 ... Success!

 

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] y

 ... Success!

 

By default, MariaDB comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] y

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

要测试MariaDB安全性,请尝试从没有root密码的控制台登录数据库。 如果没有为root帐户提供密码,则应拒绝访问数据库,如以下命令摘录所示:

mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

如果提供了密码,则应将登录过程授予MySQL控制台,如命令示例所示:

mysql -h localhost -u root -p
Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 15

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

Bye

在安装并保护MariaDB数据库之后,是时候安装部署Elgg应用程序所需的下一个组件:Apache HTTP服务器和PHP编程语言处理网关。 为了安装Apache Web服务器和PHP解释器以及服务器将通过其执行应用程序脚本所需的所有PHP模块,请在服务器控制台中执行以下命令。

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-mysql

接下来,通过更改以下PHP变量来打开并修改PHP默认配置文件。 打开/etc/php/7.0/apache2/php.ini文件进行编辑并更改以下行。 最初,备份PHP配置文件。

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

php.ini配置文件中搜索,编辑和更改以下变量:

file_uploads = On
default_charset = UTF-8
memory_limit = 128M
upload_max_filesize = 100M
date.timezone = Europe/London

适当增加upload_max_file_size变量,以便为您的应用程序支持大型文件附件。 此外,通过查看PHP文档提供的时区列表,将PHP 时区设置更改为系统的地理位置, 网址为http://php.net/manual/en/timezones.php

启用适用于PHP7的OPCache插件,以便通过在[opcache]语句下面的PHP解释器配置文件底部附加以下OPCache设置来提高网站加载速度,详情如下:

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

完成上述所有更改后,保存并关闭php.ini配置文件,重新启动Apache Web服务器以通过发出以下命令来应用PHP解释器更改。

systemctl restart apache2

配置防火墙

要添加所需的UFW防火墙应用程序规则以允许HTTP流量通过系统防火墙,请在服务器控制台中发出以下命令。

ufw allow WWW

要么

ufw allow 80/tcp

如果您通过SSH远程连接到服务器,请添加以下规则以打开防火墙中的SSH端口22。

ufw allow 22/tcp

如果您通过iptables原始规则管理Debian服务器中的防火墙规则,请添加以下规则以允许端口80和22入站流量通过防火墙,以便外部客户端可以访问该应用程序。 仅当您通过SSH远程连接到服务器时才打开端口22 / TCP。

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service

配置Apache Web服务器

在下一步中,通过发出以下命令,启用通过.htacccess文件和保护HTTP事务所需的TLS模块即时更改Web服务器配置所需的Apache重写模块。

a2enmod rewrite ssl
a2ensite default-ssl.conf

接下来,打开Apache默认SSL站点配置文件,使用您喜欢的文本编辑器进行编辑,并在DocumentRoot指令之后添加以下URL重写规则:

nano /etc/apache2/sites-enabled/default-ssl.conf

SSL站点配置文件摘录:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

此外,将下面显示的更改显示在VirtualHost行中,使其看起来像下面的摘录中显示的内容:

<VirtualHost *:443>

通过打开/etc/apache2/sites-enabled/000-default.conf文件进行编辑,将相同的更改添加到Apache默认配置文件中。 在DocumentRoot语句之后插入以下代码行,如下例所示。

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory

最后,重新启动Apache守护程序以应用到目前为止配置的所有规则,并通过HTTP协议访问您的域或服务器IP地址。

systemctl restart apache2

由于您在安装时使用Apache发出的自动自签名证书对,因此对于浏览器不受信任的证书,应在浏览器中显示错误警告。 接受警告以接受不受信任的证书并继续重定向到Apache默认网页,如下图所示。

HTTPS://yourdomain.tld

为了允许HTTPS流量通过UFW防火墙,您应该通过发出以下命令添加以下规则以允许传入的443 / TCP流量。

ufw allow 'WWW Full'

要么

ufw allow 443/tcp

如果iptables是为在网络级别保护Debian系统而安装的默认防火墙应用程序,请添加以下规则以允许防火墙中的端口443入站流量,以便访问者可以浏览您的域名。

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent

最后,通过执行以下命令在Web服务器文档根路径中创建PHP信息文件。

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

通过以下URL打开浏览器访问PHP info脚本文件:

HTTPS://yourdomain.tld/info.php

验证PHP设置并向下滚动到日期配置以检查PHP时区配置。

安装Elgg软件

要在您的系统中部署Elgg社交网络平台,请首先访问位于https://elgg.org/about/download的Elgg官方下载页面,然后通过发出以下命令获取最新的zip包压缩存档。

wget -O elgg-2.3.5.zip https://elgg.org/getelgg.php?forward=elgg-2.3.5.zip
ls

接下来,将Elgg zip存档文件解压缩到当前工作目录,并通过发出以下命令列出解压缩的文件。

unzip elgg-2.3.5.zip
ls -al elgg-2.3.5

在下一步中,通过发出以下命令,将Apache Web服务器安装的默认index.html文件删除到webroot路径和之前创建的info.php文件。

rm /var/www/html/index.html
rm /var/www/html/info.php

接下来,通过发出以下命令,将提取的Elgg目录的所有内容(包括隐藏的.htaccess文件)复制到Web服务器文档根路径中。

cp -rf elgg-2.3.5/* /var/www/html/
cp elgg-2.3.5/.htaccess /var/www/html/

将Elgg安装文件复制到域webroot路径后,通过发出以下命令,为域名webroot创建一个名为data for Elgg application的目录。 Elgg应用程序将使用数据目录来存储各种用户相关文件。 可以在服务器文件系统层次结构中的任何位置创建此数据目录,并注释必须向Apache运行时用户授予对此目录的写入权限。

mkdir  /var/www/data
chown www-data:www-data /var/www/data

接下来,执行以下命令,以便为Apache运行时用户授予对Web根路径的完全写入权限。 使用ls命令列出位于/ var / www / html /目录中的应用程序安装文件的权限。

chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

在通过Web浏览器开始安装过程之前,通过发出以下命令,登录MariaDB数据库控制台并创建Elgg数据库和具有用于管理此数据库的密码的用户。 确保相应地替换本教程中使用的数据库名称,用户和密码。

mysql –u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(无)]>创建数据库elgg_db;
Query OK, 1 row affected (0.00 sec) 
MariaDB [(无)]>将elgg_db。*的所有权限授予'elgg_user'@'localhost',由'password1234'标识;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(无)]>刷新权限;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(无)]>退出
Bye 

现在,让我们继续安装Elgg。 首先打开浏览器并通过HTTPS协议导航到服务器的IP地址或域名或服务器FQDN。

HTTPS://yourdomain.tld

在欢迎屏幕上,安装程序将显示一条介绍消息,通知您Elgg平台软件需要执行六个步骤才能安装应用程序。 只需按下Next按钮即可开始安装过程,如下面的屏幕截图所示。

接下来,Elgg安装程序将解析您的系统并检查是否满足安装应用程序的PHP和Web服务器要求。 单击下一步按钮,继续安装过程,如下面的屏幕截图所示。

在下一个安装屏幕中,通过提供MySQL数据库名称,服务器主机(如果数据库安装在同一节点上使用localhost ),数据库用户名和先前为安装Elgg而创建的密码来配置MySQL数据库设置。 使用数据库表前缀作为默认值,或者如果要为应用程序添加额外的安全层,请更改它。 最后,选择应用程序的默认时区设置,然后单击“下一步”按钮移动到下一个安装屏幕。 使用以下屏幕截图作为配置此步骤的指南。

在下一步中,通过添加站点名称和用于用户通信的电子邮件地址来配置Elgg网站。 此外,如果未正确检测到站点URL地址,请更改站点URL地址,并添加网站数据目录的完整路径。 最后,为新手设置默认网站访问级别,然后单击“下一步”按钮继续安装过程。

接下来,通过在显示名称字段中填入管理员帐户的名称,为您的网站创建第一个管理员帐户。 此外,添加管理员帐户电子邮件地址,用户名和密码,如下图所示。 完成此步骤后,单击“下一步”按钮继续并完成安装过程。

安装过程完成后,点击“转到站点”按钮,以便重定向到Elgg管理仪表板。

登录到Elgg仪表板后,从右侧面板导航到Configure - > Plugins菜单,然后点击所选插件的Activate按钮开始启用所需的Elgg插件。

您还可以通过HTTPS协议导航到您的服务器IP地址或域名来访问Elgg应用程序。 在安装过程中使用为admin帐户配置的凭据,以便登录Elgg社交引擎应用程序,如下面的屏幕截图所示。

HTTPS://yourdomain.tld

最后一步,如果您想强制访问者通过加密服务器和客户端浏览器之间流量的HTTPS协议安全地浏览Elgg网站,请返回Debian服务器控制台并编辑位于您网站文档根路径中的.htaccess文件,通过发出以下命令。

nano /var/www/html/.htaccess

在.htaccess文件中,搜索<IfModule mod_rewrite.c>行并在RewriteEngine On语句后添加以下规则,以便自动将所有域流量重定向到HTTPS。

RewriteEngine On
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

在这里,您还可以为您的网站更改一些PHP变量。 搜索<IfModule mod_php7.c>指令并在此行下添加您自己的PHP设置,例如:增加域的文件上载大小或禁用某些服务器默认的PHP配置,如下面的摘录所示:

# Alter web server PHP settings
php_value session.use_trans_sid 0
php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M

为了让Elgg应用程序发送排队通知,在数据库中轮换系统日志并在数据库中收集垃圾(通过删除不再需要的条目来压缩数据库),使用以下配置创建crontab文件。 此外,此crontab作业必须由Apache运行时用户拥有和执行。

crontab -u www-data –e

Crontab文件摘录。 每个作业的cron任务输出将被丢弃到Linux / dev / null blackhole文件中。 相应地替换此脚本中使用的域名变量( $ ELGG )。

GET="curl -k"
ELGG="https://www.socialnet.org/"

OUT=" > /dev/null 2>&1"

* * * * * $GET ${ELGG}cron/minute/${OUT}
*/5 * * * * $GET ${ELGG}cron/fiveminute/${OUT}
15,30,45,59 * * * * $GET ${ELGG}cron/fifteenmin/${OUT}
30,59 * * * * $GET ${ELGG}cron/halfhour/${OUT}
@hourly $GET ${ELGG}cron/hourly/${OUT}
@daily $GET ${ELGG}cron/daily/${OUT}
@weekly $GET ${ELGG}cron/weekly/${OUT}
@monthly $GET ${ELGG}cron/monthly/${OUT}
@yearly $GET ${ELGG}cron/yearly/${OUT}
@reboot $GET ${ELGG}cron/reboot/${OUT}

恭喜! Elgg社交媒体平台已在Debian 9服务器上成功安装和配置。 如果您使用注册的公共域名将Elgg应用程序公开给面向公众的访问者,您应该考虑购买由可信证书颁发机构颁发的SSL证书,或者从Let's Encrypt CA获取免费证书对。

要进一步管理Elgg应用程序,请访问以下地址的文档页面: http//learn.elgg.org/en/stable/index.html

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏