GNU/Linux >> Linux の 問題 >  >> Debian

Debian9でElggを使用してオンラインソーシャルネットワークを作成する

このチュートリアルでは、無料のオンラインソーシャルネットワークを作成するために、Debian9に最新のElggバージョンをインストールして設定する方法を紹介します。

Elggは、PHPプログラミング言語で記述された無料のオープンソースソーシャルエンジンフレームワークソフトウェアです。 Elggフレームワークは、個人または組織がLinuxでApache / Nginx Webサーバー、PHP、およびMySQL / MariaDBデータベース管理システム(LAMPまたはLEMPスタックとも呼ばれる)の下で強力なソーシャル環境を作成するのに役立ちます。また、パブリックネットワークまたはプライベートネットワークでのファイル共有、ブログ、ソーシャルグループ、または教育プラットフォームを強化できる機能が組み込まれています。

Elggプラットフォームを構内に正常に展開するには、次の要件を満たす必要があります。

  • Debian 9を搭載した仮想マシンまたは仮想プライベートサーバー、できれば最小限のインストール
  • サーバーコンソールまたはSSHを介したリモート管理を介したrootアカウントまたはroot権限を持つローカルユーザーへの直接アクセス
  • サーバーは、パブリックIPアドレスを介して訪問者にアクセスするために、外部ネットワークインターフェイス用に構成された静的IPアドレスを必要とします
  • サーバーにパブリックドメイン名またはプライベートドメイン名を設定して、訪問者がwww.yourdomain.comなどのドメイン名を介してプラットフォームにアクセスできるようにする必要がある場合もありますが、サーバーのIPアドレスを介してプラットフォームにアクセスすることはできます。
  • 電子メールアドレスを介してElggWebサイト登録を使用する、または他のプラットフォーム機能を使用するには、構内にメールサーバーを展開するか、パブリックメールサーバーを使用する必要があります。
前提条件

最初のステップとして、root権限またはroot権限を持つユーザーでDebian 9サーバーにログインし、次のコマンドを発行して、システムを最新のセキュリティパッチ、ソフトウェア、およびカーネルの更新で更新します。

apt update
apt upgrade

次に、次のコマンドを実行して、マシンの名前を構成していることを確認してください。この例で使用されているホスト名変数を、独自のドメインに一致するように置き換える必要があります。

hostnamectl set-hostname www.socialnet.org

マシンのホスト名を構成した後、次のコマンドでhostsファイルを確認して、ホストが適切に構成されているかどうかを確認します。

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

最後に、マシンのホスト名とカーネルの更新を適用するには、次のコマンドを発行してシステムを再起動します。

systemctl reboot

システムが再起動したら、コンソールに再度ログインし、次のコマンドを実行して、インターネット経由でソフトウェアをダウンロードし、いくつかのアーカイブファイルタイプを抽出するのに役立ついくつかのシステムユーティリティをインストールします

apt install wget zip unzip curl

LAMPスタックをインストールする

Elggソーシャルネットワークフレームワークをサーバーにデプロイするには、LAMPスタックコンポーネントをインストールする必要があります。最初にインストールするコンポーネントは、データベース(MariaDB)で、データベースバックエンドとして人気のあるMySQLデータベースのフォークです。 MariaDBデータベースは、ユーザー、セッション、連絡先、投稿、コメント、その他の情報を保存するためにアプリケーションによって使用されます。公式リポジトリを介してDebian9にMariaDBデータベースサーバーとクライアントソフトウェアをインストールするには、ターミナルで以下のコマンドを発行します。

apt install mariadb-server mariadb-client

データベースのインストールが完了したら、MySQLコンソールにログインし、次のコマンドを発行して、パスワードを指定しなくてもデフォルトでアクセスできるデータベースルートアカウントを保護します。

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]> update user set plugin ='' where 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

上記の手順を完了したら、 mysql_secure_installationを実行します MariaDBサーバーをさらに保護し、データベースのルートアカウントに強力なパスワードを設定するために、Debianストレッチリポジトリによって提供されるスクリプト。主に、以下のスクリプトの抜粋に示すように、MySQLルートパスワードの変更、匿名ユーザーの削除、リモートルートログインの無効化、テストデータベースの削除など、スクリプトで尋ねられるすべての質問に「はい」と答えます。

>
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アプリケーションのデプロイに必要な次のコンポーネントであるApacheHTTPサーバーとPHPプログラミング言語処理ゲートウェイをインストールします。サーバーがアプリケーションスクリプトを実行するために必要なすべてのPHPモジュールとともに、Apache Webサーバーと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のタイムゾーンを変更します 次のリンクhttp://php.net/manual/en/timezones.php

でPHPドキュメントによって提供されるタイムゾーンのリストを参照して、システムの地理的な場所に設定します。

PHP7で使用可能なOPCacheプラグインを有効にして、PHPインタープリター構成ファイルの下部の [opcache] の下に次のOPCache設定を追加して、Webサイトの読み込み速度を上げます。 以下に詳述するステートメント:

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
ファイアウォールを構成する

HTTPトラフィックがシステムファイアウォールを通過できるようにするために必要なUFWファイアウォールアプリケーションルールを追加するには、サーバーコンソールで次のコマンドを発行します。

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

ApacheWebサーバーを構成する

次のステップで、以下のコマンドを発行して、.htacccessファイルを介してWebサーバー構成をオンザフライで変更するために必要なApacheリライトモジュールと、HTTPトランザクションを保護するために必要なTLSモジュールを有効にします。

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のデフォルトのWebページにリダイレクトするには、警告を受け入れます。

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情報スクリプトファイルにアクセスします。

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サーバーによってwebrootパスにインストールされたデフォルトのindex.htmlファイルと、以下のコマンドを発行して以前に作成したinfo.phpファイルを削除します。

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

次に、非表示の .htaccess を含む、抽出されたElggディレクトリのすべてのコンテンツをコピーします。 次のコマンドを発行して、ファイルをWebサーバーのドキュメントルートパスに挿入します。

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

Elggインストールファイルをドメインのウェブルートパスにコピーしたら、 dataという名前のディレクトリを作成します Elggアプリケーションの場合、次のコマンドを発行して、ドメインのウェブルートを1つ上に移動します。データディレクトリは、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/

ウェブブラウザを介したインストールプロセスを開始する前に、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 [(none)]>データベースelgg_dbを作成します;

Query OK, 1 row affected (0.00 sec) 

MariaDB [(none)]>「password1234」で識別される「elgg_user」@「localhost」にelgg_db。*のすべての権限を付与します;

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プラットフォームソフトウェアがアプリケーションをインストールするために6つのステップに従う必要があることを通知する紹介メッセージを表示します。以下のスクリーンショットに示すように、インストールプロセスを開始するには、[次へ]ボタンを押すだけです。

次に、Elggインストーラーがシステムを解析し、アプリケーションをインストールするためのPHPとWebサーバーの要件が満たされているかどうかを確認します。下のスクリーンショットに示すように、[次へ]ボタンをクリックして、インストールプロセスを続行します。

次のインストール画面で、MySQLデータベース名、サーバーホストを指定してMySQLデータベース設定を構成します( localhost を使用) データベースが同じノードにインストールされている場合)、Elggをインストールするために以前に作成されたデータベースのユーザー名とパスワード。データベーステーブルプレフィックスをデフォルトとして使用するか、アプリケーションのセキュリティレイヤーを追加する場合は変更します。最後に、アプリケーションのデフォルトのタイムゾーン設定を選択し、[次へ]ボタンをクリックして次のインストール画面に移動します。このステップを構成するためのガイドとして、以下のスクリーンショットを使用してください。

次のステップでは、サイトの名前とユーザー通信用の電子メールアドレスを追加して、ElggWebサイトを構成します。また、正しく検出されなかった場合はサイトのURLアドレスを変更し、ウェブサイトのデータへのフルパスを追加します。 ディレクトリ。最後に、初心者向けのデフォルトのWebサイトアクセスレベルを設定し、[次へ]ボタンをクリックしてインストールプロセスを続行します。

次に、[表示名]フィールドに管理者アカウントの名前を入力して、ウェブサイトの最初の管理者アカウントを作成します。また、次の図に示すように、管理者アカウントの電子メールアドレス、ユーザー名、およびパスワードを追加します。この手順を完了したら、[次へ]ボタンをクリックして続行し、インストールプロセスを終了します。

インストールプロセスが完了したら、[サイトに移動]ボタンをクリックして、Elgg管理ダッシュボードにリダイレクトします。

Elggダッシュボードにログインしたら、右側のパネルから[設定]-> [プラグイン]メニューに移動し、選択したプラグインの[アクティブ化]ボタンをクリックして、必要なElggプラグインの有効化を開始します。

HTTPSプロトコルを介してサーバーのIPアドレスまたはドメイン名に移動して、Elggアプリケーションにアクセスすることもできます。以下のスクリーンショットに示すように、Elggソーシャルエンジンアプリケーションにログインするには、インストールプロセス中に管理者アカウント用に構成されたクレデンシャルを使用します。

https://yourdomain.tld

最後のステップとして、サーバーとクライアントブラウザ間のトラフィックを暗号化するHTTPSプロトコルを介して訪問者にElgg Webサイトを安全に閲覧させる場合は、Debianサーバーコンソールに戻って .htaccessを編集します。 以下のコマンドを発行して、Webサイトのドキュメントルートパスにあるファイル。

nano /var/www/html/.htaccess

.htaccessファイルで、 を検索します RewriteEngine On の後に、以下のルールを追加します。 すべてのドメイントラフィックをHTTPSに自動的にリダイレクトするためのステートメント。

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

ここでは、WebサイトのいくつかのPHP変数を変更することもできます。 を検索します ディレクティブとこの行の下に、次のような独自の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 ブラックホールファイル。ドメイン名変数を置き換えます( $ 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ソーシャルメディアプラットフォームは、Debian9サーバーの構内に正常にインストールおよび構成されています。登録済みの公開ドメイン名を使用してElggアプリケーションを公開する訪問者に公開する場合は、信頼できる認証局によって発行されたSSL証明書を購入するか、Let’sEncryptCAから無料の証明書ペアを取得することを検討してください。

Elggアプリケーションをさらに管理するには、次のアドレスのドキュメントページにアクセスしてください:http://learn.elgg.org/en/stable/index.html


Debian
  1. Debian –依存関係のみを持つ.debパッケージを作成しますか?

  2. Debian9にZabbixをインストールする方法

  3. Debian9でPostfixAdminを使用してメールサーバーを設定する

  1. Debianにリモートデータベースを使用してWordPressをインストールする

  2. Debian9でCSFを使用してファイアウォールを構成する方法

  3. ElggソーシャルネットワークをDebian9にインストールする方法

  1. Debian9でVSFTPDを使用してFTPサーバーをセットアップする方法

  2. Debian11にFlarumフォーラムをインストールする方法

  3. RundeckをDebian8(Jessie)サーバーにインストールする方法