Reddit、Facebook、Twitterなどのソーシャルメディアプラットフォームや、discordなどのオンラインチャットプラットフォームの台頭に伴い、オンライン掲示板フォーラムのコミュニティは減少しています。個人的には、先ほど申し上げたように、彼らは新しい追加をめぐって特定のニッチコミュニティでゆっくりと復活しています。 phpBBは、市場で最も拡張されたオープンソースのフォーラム掲示板ソフトウェアの1つです。
phpBB 唯一の選択肢ではありません。 VBulletin、Nodebb、Xenforoなどの他のものもありますが、これらのほとんどは混合レビューで支払われます。 VBulletinはかつては大国でしたが、今ではかつての自分の影になっています。 Xenforoは、最も高額なソフトウェアの1つです。ただし、これは私の個人的な意見ですが、無料のオープンソースであり、新しい開発者と最初から存在している開発者の両方の優れたサードパーティのオープンソース開発者がいるため、常にphpBBを最初に選択します。
次のチュートリアルでは、 LEMPをインストールする方法、最新のパッケージに調整する方法、およびAlmalinux8を初めて使用するためにphpBBを設定する方法を学習します。
- 推奨OS: AlmaLinux8。
- ユーザーアカウント: sudo特権を持つユーザーアカウント またはrootアクセス(suコマンド) 。
オペレーティングシステムの更新
AlmaLinuxを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo dnf upgrade --refresh -y
チュートリアルでは、sudoコマンドを使用します およびsudoステータスがあると仮定 。
アカウントのsudoステータスを確認するには:
sudo whoami
sudoステータスを示す出力例:
[joshua@localhost ~]$ sudo whoami
root
既存または新規のsudoアカウントを設定するには、AlmaLinuxでSudoersにユーザーを追加する方法のチュートリアルにアクセスしてください。 。
rootアカウントを使用するには 、rootパスワードを指定して次のコマンドを使用してログインします。
su
Nginxのインストール–(LEMPスタック)
最初のタスクは、LEMPインストールの一部としてNginxをインストールすることです。
まず、AlmaLinux8.5以降 、1.14バージョンではなくNginxバージョン1.20を有効にします。
sudo dnf module enable nginx:1.20 -y
次に、次のコマンドを実行してNginxをインストールします。
sudo dnf install nginx
出力例:

ビルドバージョンを確認してインストールを確認します:
nginx -v
出力例:
nginx version: nginx/1.20.0
NginxはAlmaLinux8.5を使用してインストールされていることに注意してください。 8.4ユーザーは古いバージョンに気付くかもしれません。
デフォルトでは、Rocky LinuxにNginxをインストールすると、有効になりません。起動時に有効にして起動するには、次を使用します。
sudo systemctl enable nginx --now
(シンボリックリンク)を正常に有効にした例 :
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
次に、次のターミナルコマンドを使用して、Nginxサービスのステータスを確認します。
systemctl status nginx
すべてが正常であるという出力例:

これで、 HTTP:// server-ip と入力して、Nginxウェブサーバーが動作していることを確認できます。 またはHTTP:// domain-name インターネットブラウザで、次の情報を取得する必要があります:

このページにアクセスできない場合は、次のセクションで説明するファイアウォール設定を構成する必要がある場合があります。
ファイアウォールルールの構成
Nginxのインストール時に、ファイアウォールルールが標準ポート80または443ポートに自動的に追加されることはありません。続行する前に、次のルールを設定する必要があります。これは、使用するポートによって異なりますが、すべてのオプションが一覧表示されています。
ポート80またはHTTPを開く:
sudo firewall-cmd --permanent --zone=public --add-service=http
ポート443またはHTTPSを開く:
sudo firewall-cmd --permanent --zone=public --add-service=https
ファイアウォールをリロードして変更を有効にします
sudo firewall-cmd --reload
MariaDB(LEMP STACK)をインストールします
次に、MariaDBをインストールします。まず、MariaDB 10.5に変更することをお勧めします。これは、Almalinux8Appストリームでも利用できます。デフォルトは10.3です。
ターミナルで、切り替える場合にのみ次のコマンドを実行します。
sudo dnf module enable mariadb:10.5 -y
次に、次のコマンドを使用してMariaDBをインストールします。
sudo dnf install mariadb-server mariadb
出力例:

「Y」と入力します 次に、「ENTERKEY」を押します。 インストールを続行します。
MariaDBのインストールを確認し、インストールされているビルドを確認するには、次のコマンドを入力します。
mysql --version
出力例:
mysql Ver 15.1 Distrib 10.5.9-MariaDB, for Linux (x86_64) using EditLine wrapper
MariaDBサーバーのステータスを確認する
デフォルトでは、MariaDBステータスはオフになっています。 MariaDBを起動するには、次のコマンドを使用します。
sudo systemctl enable mariadb --now
これでMariaDBをインストールして有効にしたので、次のsystemctlコマンドでステータスを確認します。
systemctl status mariadb
ここでステータスを再確認すると、次のようになります。

MariaDBを停止するには:
sudo systemctl stop mariadb
システムの起動時にMariaDBを有効にするには:
sudo systemctl enable mariadb
システムの起動時にMariaDBを無効にするには:
sudo systemctl disable mariadb
MariaDBサービスを再起動するには:
sudo systemctl restart mariadb
セキュリティスクリプトでMariaDBを保護する
MariaDBをインストールする場合 新鮮なデフォルト設定は、ほとんどの標準で弱いと見なされており、侵入を許可したり、ハッカーを悪用したりする可能性があるという懸念を引き起こします。解決策は、 MariaDBに付属のインストールセキュリティスクリプトを実行することです。 インストール。
まず、次のコマンドを使用して(mysql_secure_installation)を起動します :
sudo mysql_secure_installation
次に、(MariaDBルートパスワード)の入力を求めるプロンプトが表示されます。今のところ、(ENTER)を押します ルートパスワードとしてのキーはまだ以下のように設定されていません:
次に、(Y)と入力します Enterキーを押して、(ルート)を設定します 以下のパスワード:
安全に(ENTER)を押すことができる次の一連の質問 、答えます(Y) (匿名ユーザーを削除し、リモートrootログインを無効にし、テストデータベースを削除する)を求める後続のすべての質問に 。 (Y)に注意してください は大文字です。つまり、(ENTER)を押したときのデフォルトの回答です。 キー。
以下の例:

上記で行うべきことの概要:
- rootのパスワードを設定する アカウント。
- ローカルホストの外部からアクセスできるルートアカウントを削除します。
- 匿名ユーザーアカウントの削除。
- テストデータベースを削除します。デフォルトでは、匿名ユーザーがアクセスできます。
この手順はMariaDBデータベースのセキュリティに不可欠であり、何をしているかを理解していない限り、変更したりスキップしたりしないでください。
PHPとPHP-FPM(LEMP STACK)のインストール
名前が示すように、phpBBはPHPで実行されます。 AlmaLinuxアプリストリームにあるデフォルトバージョンはバージョン7.2です。理想的には、掲示板ソフトウェアがこのバージョンで非常にうまく機能し、パフォーマンス上の利点が7.2よりも飛躍的に向上しているため、これをPHP7.4に変更する必要があります
PHP 7.4 dnfモジュールを有効にするには、次のコマンドを使用します。
sudo dnf module enable php:7.4 -y
注:PHP-7.3などを有効にできます dnfmoduleresetコマンドに従う 代わりに、 dnf module enable php:7.3コマンドを使用します。 を選択します アプリケーションに必要なバージョン。これは、選択したPHPの最新バージョンを使用した例にすぎません。
PHPとPHP-FPMのインストール
次に、サーバーにPHPをインストールします。 PHPのバージョンに応じて、出力は異なります。ただし、コマンドは同じままです。
sudo dnf install php php-fpm php-mysqli php-cli php-common php-gd php-intl php-opcache php-xml php-soap php-mbstring
出力例:

「Y」と入力します 次に、「ENTERKEY」を押します。 インストールを続行します。 「Y」と入力するように求められる場合があります。
インストールを確認し、バージョンとビルドを確認します:
php -v
出力例:

現在、デフォルトでは、PHP-FPMはオフであり、起動時に有効になっていません。起動時に有効にしてサービスを開始するには、次のsystemctlコマンドを使用します :
sudo systemctl enable php-fpm --now
PHP-FPMが実行されていることを確認するには、次のsystemctlコマンドを使用します。 :
systemctl status php-fpm
出力例:

PHP 8.0を使用する必要はなく、不明な場合は調査を行う必要はありません。さらに良いのは、現在最も効果的なphpBBコミュニティフォーラムで質問することです。ただし、プロセスは、dnfモジュールリストのデフォルトバージョンまたは他の代替バージョンを使用するコマンドと同じです。
LEMPが設定されたので、実際のphpBBのインストールに進みます。
パート1.phpBBバックエンドのインストール
LEMPスタックをインストールしたので、phpBBフォーラムのインストールに進むことができます。このチュートリアルの時点では、phpBB 3.3.4が最新バージョンですが、ほとんどの場合と同様に、およそ6か月ごとにリリースされるため、これは変更されます。ダウンロードページをチェックして、バージョンリンクがまだ有効であることを確認してください。
ダウンロードとディレクトリの設定
最初にphpBBをダウンロード:
cd /tmp && wget https://download.phpbb.com/pub/release/3.3/3.3.5/phpBB-3.3.5.zip
unzip phpBB-3.3.5.zip
sudo mv phpBB3 /var/www/html/phpbb
次に、NGINXのディレクトリ権限を変更する必要があります:
sudo chown -R nginx /var/www/html/phpbb
sudo chmod -R 755 /var/www/html/phpbb
Selinuxの構成
デフォルトでは、SelinuxはAlmaLinuxサーバーにphpBBを正常にインストールして実行することを拒否します。これを修正するには、SELinuxを設定する必要があります。
Selinuxを無効にすることはお勧めしません。代わりに、以下のコードをコピーして許可を与えます。
sudo chcon -R -t httpd_sys_content_rw_t /var/www/html/phpbb/
それだけです、そしてあなたはもうそれをする必要はありません。将来、新しい場所にphpBBを再インストールする場合は、コマンドを再実行してください。
MariaDBの構成
次に、phpBBのインストールと将来の掲示板用のデータベースの作成に進みます。
まず、MariaDBターミナルインスタンスをrootとして起動します:
sudo mysql -u root -p
フォーラムのデータベースを作成します:
例:
CREATE DATABASE phpbbdb;
phpbbuserというデータベースユーザーを作成します 新しいパスワードで:
例:
CREATE USER 'phpbbuser'@'localhost' IDENTIFIED BY 'new_password_here';
次に、次の手順を実行して、ユーザーにデータベースへのフルアクセスを許可します。
例:
GRANT ALL PRIVILEGES ON phpbbdb.* TO phpbbuser@localhost IDENTIFIED BY 'new_password_here';
権限をフラッシュして、変更を有効にします:
FLUSH PRIVILEGES;
終了します:
EXIT;
これでphpBBのデータベースの準備が整いました。チュートリアルのウェブUIインストール部分を取得したら、詳細を入力します。
PHP構成
phpBBを正常にインストールし、将来にわたって適切に運用するには、php.ini構成ファイルのいくつかのオプションを増やす必要があります。
まず、php.iniファイルを開きます:
sudo nano /etc/php.ini
次に、phpBBで動作するための推奨設定を見つけます。設定と行を見つけて、次のように変更する必要があります。
max_execution_time = 180 (located on line 338)
max_input_time = 90 (located on line 398)
memory_limit = 256M (located on line 409)
upload_max_filesize = 64M (located on line 846)
オプションで、セキュリティ設定が強化されています。これはスキップできます:
cgi.fix_pathinfo=0
session.use_strict_mode = 1
session.use_cookies = 1
session.cookie_secure = 1
session.use_only_cookies = 1
session.name = LCCookies (Change the name, example: POPme)
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain = example.com (example only)
session.cookie_httponly = 1
session.cookie_samesite = Strict
完了したら、 CTRL + O 保存してからCTRL+ X ファイルを終了します。
(www-data)を使用するDebian/UbuntuへのLEMPインストールとは異なり ユーザーの場合、これはRhel /RockyLinuxのインストールには当てはまりません。 Rocky Linuxのデフォルトでは、PHP-FPMサービスは(Apache)で実行されるように設計されています。 ユーザー。Nginxを使用しているため正しくありません。これを修正する必要があります。
まず、次の(www.conf)を開きます 構成ファイル:
sudo nano /etc/php-fpm.d/www.conf
次に、(Apache)を置き換えます (Nginx)のユーザーとグループ ユーザーとグループ:

保存するには、(CTRL + O)を押します 次に、(CTRL + X)を終了します 。
変更を有効にするには、PHPを再起動する必要があります:
sudo systemctl restart php-fpm
Nginxの構成
Nginxサーバーブロックで、PHPのアップストリームを宣言してから、PHPの場所を宣言する必要があります。
フォーラムやコミュニティなどのサブドメインを使用して、新しいサーバーブロックを作成するための最良の方法。
この例を以下に示します。ニーズに合わせて変更してください:
まず、サーバーブロックを作成します:
sudo nano /etc/nginx/conf.d/phpbb.conf
次に、以下をコピーしてサーバーブロックに貼り付け、ドメイン名、SSL、ルートパスなど、必要に応じて変更します。自分が何をしているのかを理解していない限り、場所とPHP自体に触れないでください。
例のみ:
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
root /var/www/html/phpbb;
index index.php index.html index.htm;
access_log /var/log/nginx/forums-access.log;
error_log /var/log/nginx/forums-error.log;
location / {
try_files $uri $uri/ @rewriteapp;
# Pass the php scripts to FastCGI server specified in upstream declaration.
location ~ \.php(/|$) {
include fastcgi.conf;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
try_files $uri $uri/ /app.php$is_args$args;
fastcgi_intercept_errors on;
}
# Deny access to internal phpbb files.
location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
deny all;
# deny was ignored before 0.8.40 for connections over IPv6.
# Use internal directive to prohibit access on older versions.
internal;
}
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
# Correctly pass scripts for installer
location /install/ {
try_files $uri $uri/ @rewrite_installapp =404;
# Pass the php scripts to fastcgi server specified in upstream declaration.
location ~ \.php(/|$) {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
try_files $uri $uri/ /install/app.php$is_args$args =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_intercept_errors on;
}
}
location @rewrite_installapp {
rewrite ^(.*)$ /install/app.php/$1 last;
}
# Deny access to version control system directories.
location ~ /\.svn|/\.git {
deny all;
internal;
}
gzip on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
gzip_disable "msie6";
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
# assets, media
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
expires 90d;
access_log off;
}
# svg, fonts
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
expires 90d;
access_log off;
}
}
「fastcgi_passunix:/run/php-fpm/www.sock;」の行に注意してください。 不可欠です。それがないと、FPMは通信できません。
有効にすると、Nginxサービスのクイックドライランテストを実行して、すべてが正しく機能していることを確認できます。
sudo nginx -t
すべてが正しく機能している場合の出力例:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
次に、phpBBのNginxサービスを再起動して、WebUIからアクセスできるようにします。
sudo systemctl restart nginx
オプション– SSLFreeCertificateを暗号化してNginxを保護
理想的には、SSL証明書を使用したHTTPSでNginxを実行することをお勧めします。 。これを行う最良の方法は、 Let’s Encryptを使用することです。 非営利のインターネットセキュリティ研究グループ(ISRG)が運営する無料の自動化されたオープンな認証局 。
まず、 EPELをインストールします リポジトリとmod_ssl より良く更新されたパッケージとセキュリティのためのパッケージ。
sudo dnf install epel-release mod_ssl -y
次に、certbotパッケージをインストールします 次のように:
sudo dnf install python3-certbot-nginx -y
インストールしたら、次のコマンドを実行して証明書の作成を開始します。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d forums.example.com
これは、強制HTTPS 301リダイレクト、Strict-Transport-Securityヘッダー、およびOCSPステープリングを含む理想的なセットアップです。電子メールとドメイン名を要件に合わせて調整してください。
これで、URLは https://forums.example.comになります HTTP://forums.example.comの代わりに 。
古いHTTPURLを使用する場合は注意してください 、自動的に HTTPSにリダイレクトされます 。
オプションで、証明書を自動的に更新するようにcronジョブを設定できます。 Certbotはこれを自動的に行うスクリプトを提供しており、最初にドライランを実行してすべてが機能していることを確認するためのテストを行うことができます。
sudo certbot renew --dry-run
すべてが機能している場合は、次のターミナルコマンドを使用してcrontabウィンドウを開きます。
sudo crontab -e
次に、自動更新する時刻を指定します。これは少なくとも毎日チェックする必要があり、証明書を更新する必要がある場合、スクリプトは証明書を更新しません。設定するのに適した時間を見つけるのに助けが必要な場合は、crontab.guru無料ツールを使用してください。
00 00 */1 * * /usr/sbin/certbot-auto renew
保存(CTRL + O) 次に、(CTRL + X)、を終了します cronジョブが自動的に有効になります。
パート2.phpBBWebUIのインストール
すべてが正常に機能した場合は、新しくインストールしたphpBBフォーラムの指定アドレスに移動します。この例では、チュートリアルの例ではhttps://forums.linuxcapable.comであり、成功すると、phpBBのメインインストールページが表示されます。
ページが表示されたら、[インストール]ボタンをクリックします 左上にあるグラフィックインストールを開始します。
例:

次に、最小仕様やその他の技術情報をアドバイスする次の画面に移動します。読んで再確認した後、インストールボタンをクリックします ページの下部にあります。
例:

次の画面で、phpBBの管理者アカウントを作成する必要があります 。これは、特にリカバリにとって重要であるため、これが正しく入力され、強力なパスワードが入力されていることを確認してください。
例:

これで、管理者を入力しました 詳細が正常に完了すると、データベースの詳細画面が表示されます。まず、デフォルトのMySQLiExtensionを使用したMySQLを維持します localhostと入力します データベースが別のサーバーにある場合を除き、デフォルトから変更された場合は、代わりにサーバーIPをポートとともに配置します。
次にチュートリアルの例では、サンプルデータベースの名前は phpbb、です。 phpbbuserを使用 phpBBにアクセスするためにroot以外にアクセスできるユーザー名であること データベース。最後に、プレフィックスはデフォルトで phpbb _ 、 これは同じままにすることができますが、複数のフォーラムをインストールする場合は、プレフィックスをクリーンで分離した状態に保つためにこれを変更することをお勧めします。
これらを入力して、送信をクリックします 続行します。
例:

サーバー構成を設定します。 SSLを実行していない場合は、デフォルト設定で十分です。 SSLを実行している場合は、ニーズに合わせてSSLを変更してください。
例:

次のページでは、 SMTPを設定できます 入力する設定がある場合。そうでない場合は、デフォルトのままにして、[次へ]をクリックします。
例:

ボード名/タイトルと言語を設定します 。フォーラムの名前がわからない場合は、デフォルトのままにして[送信]をクリックしてください。これらの設定は後で変更できます。
例:

[送信]をクリックすると、フォーラムがインストールされた以下のような最終画面と、ACPパネルに移動するためのリンクが表示されます。ステップとして参照してエラーが発生した場合は、許可が失われている可能性があります。
phpBBのインストール後
インストールディレクトリの削除
この部分に到達しておめでとうございます。初めてACPパネルにログインすると、インストールディレクトリを削除するか名前を変更するように指示するわかりやすい大きな赤いアラートが表示されます。ディレクトリを移動するのではなく、削除することをお勧めします。これを行うには、端末で次のコマンドを使用します。
sudo rm -R /var/www/html/phpbb/install
CHMODパーミッションの修正(重要なステップ)
ターミナルコマンドをアクティブに実行している間は、インストール後に正しいchmod権限を設定することが重要です。 。これに関する公式のphpBBガイドはここにあります。これをスキップすると、重大なセキュリティリスクが発生する可能性があるため、より適切なテクニックを使用しているが、デフォルトの権限を残さないでください!!
sudo find /var/www/html/phpbb -type d -exec chmod 755 {} \;
sudo find /var/www/html/phpbb -type f -exec chmod 644 {} \;
その後、次のようにのみ、いくつかのフォルダ/ファイルに特別なアクセス許可を与える必要があります。
sudo chmod 777 -R /var/www/html/phpbb/files
sudo chmod 777 -R /var/www/html/phpbb/cache
sudo chmod 777 -R /var/www/html/phpbb/store
sudo chmod 777 -R /var/www/html/phpbb/images/avatars/upload
これを怠ると、ボードの機能が損なわれます。これらのパスに厳密に従うようにしてください。そうしないと、誤ってphpBBディレクトリ全体に完全な読み取りおよび書き込みアクセス権を公開して、セキュリティ上の問題を引き起こす可能性があります。
phpBBのCronjobを設定する(推奨)
ガイドの最後の最後のステップは、cronジョブを設定することです。忙しくて遅いフォーラムでは、phpBB標準で5分ごとに実行されるcronジョブを設定するためにcronジョブをお勧めします。
crontabを起動します:
sudo crontab -e
最初のcronジョブオプション:
*/5 * * * * /usr/bin/php /var/www/html/phpbb/bin/phpbbcli.php cron:run > /dev/null 2>&1
例:

保存するには、 CTRL + O 次に、 CTRL + Xで終了します 。正しければ、端末に次の出力が表示されます。
crontab: installing new crontab
これは、インストールされて機能していることを意味し、phpBBを使用して5分ごとにcronジョブを実行することをお勧めします。ただし、必要に応じて、ニーズに合わせて時間を調整できます。
次に、管理パネルをphpBBに戻し、サーバー設定でサーバーcronジョブを有効にします。
例:

おめでとうございます。phpBBフォーラムが正常にインストールされ、フォーラムを設計してコミュニティを開始する準備が整いました。 phpBBの公式ウェブサイトとウィキをチェックすることを強くお勧めします。フォーラムのカスタマイズに関する多くの情報が含まれているため、ここで作成したこのガイドに入れるには多すぎます。
例 :
