設置: VPSでのGNU socialの導入

GNUsocial/install
概要

以前「設置: 共用サーバーでのGNU socialの導入 | GNU social JP」で共用サーバーでのGNU socialのインストール方法を紹介しました。通常利用する場合は、共用サーバーでも問題ないですが、実際に開発作業や別のアプリケーションサーバーを設置して連携する場合など、VPSに導入したほうがいいケースもあります。

パッケージマネージャーでの必要パッケージのインストールや、設定など微妙に内容が違うので、紹介します。

Debian 11+Apache HTTP Server+PHP V7.4での手順となります。

以下の記事でGCEなどでサーバー設置、ドメイン設定、HTTPS設定などが完了済みとします。

なお、メールサーバーの設定をまだ検証できていないので、メール送信機能がこのままだと機能しません。検証できたら追記します。

設置

以下のコマンドで必要な依存関係をOSのパッケージマネージャーでインストールします。

sudo apt install -y git libapache2-mod-php mariadb-server \
php-bcmath php-curl php-gd php-intl php-mbstring php-mysql php-xml

GNU socialのリポジトリ―を取得します。

cd /var/www/
mv html html.backup
git clone --depth 1 https://notabug.org/gnusocialjp/gnu-social
cd gnu-social
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
ln -fns gnu-social/public ../html
cp DOCUMENTATION/SYSTEM_ADMINISTRATORS/webserver_conf/htaccess.sample public/.htaccess
mkdir -p file/avatar
設定

デフォルトだと、httpd.confでAllowOverride Noneお設定になっており、.htaccess内のRewriteRuleが機能せず、FancURLが有効になりません。

そこで、以下のファイルを作成してApacheの設定を変更します。

sudo cat >/etc/apache2/conf-available/local-main.conf <<<'EOT'
<Directory /var/www/> AllowOverride AuthConfig FileInfo Indexes Limit </Directory>
EOT
sudo a2enconf local-main sudo systemctl reload apache2

クライアントアプリなどでAPIに外部からアクセスする場合は、.htaccessの以下のコメント文を解除します。

@@ -33,8 +33,8 @@
   ## Uncomment these if having trouble with API authentication
   ## when PHP is running in CGI or FastCGI mode.
   #
-  #RewriteCond %{HTTP:Authorization} ^(.*)
-  #RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
+  RewriteCond %{HTTP:Authorization} ^(.*)
+  RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
DB

MariaDBの設定ファイルの場所とデフォルト設定 | GNU social JP」にある通り、MariaDBのデフォルトのユーザーのrootとmysqlがあるので、ローカルの作業用にrootを使い、実際のアプリにはmysqlユーザーを使います。

まず、以下のコマンドでDBを作成します。

DB_USER=root
DB_NAME=gnusocial
sudo mysql -u $DB_USER -e "
CREATE DATABASE $DB_NAME;
"

MariaDBのDBの文字コードと照合順の変更 | GNU social JP」の記事を参考に、DBの文字コードを以下のコマンドで変更します。

DB_USER=root
DB_NAME=gnusocial
sudo mysql -u $DB_USER -e "
ALTER DATABASE \`$DB_NAME\` DEFAULT CHARACTER SET 'utf8mb4' DEFAULT COLLATE 'utf8mb4_bin';
"

デフォルトの作業用のユーザーのmysqlにパスワードを付与してこのユーザーでDBにアクセスできるようにします。

DB_USER=root
sudo mysql -u $DB_USER -e "
SET PASSWORD FOR 'mysql'@'localhost' = PASSWORD('password');
"

passwordに実際のパスワードを指定します。PASSWORD関数を通すことでハッシュ化されて元パスワードが暗号化されてテーブルに登録されます。

入力

完了したらdomain/install.phpをWebブラウザーで開きます。

[Install GNU social] 画面が開かれるので以下のように入力して [SUBMIT] を選びます。

設定例
項目
Site settingsSite nameサイト名 (例: gs.example.com)

Fancy URLsenable

Server SSLenable
Database settingsHostname127.0.0.1

TypeMariaDB

Namegnusocial

DB usernamemysql

DB passwordmysqlユーザーのパスワード
Administrator settingsAdministrator nickname管理者ニックネーム (ユーザー名相当)

Administrator password管理者パスワード

Confirm password管理者パスワード

Administrator e-mail管理者メールアドレス (任意)
Site profileSite profileCommunity

以上でGNU socialの設置が完了です。

結論

VPSでのGNU socialのインストールでした。

GNU socialの設置よりおそらくサーバー構築の一連の作業の方が手間だと思います。ただ、一連のサーバー環境構築は他の分散SNSでも基本的には共通で、せいぜいDockerを使ったりインストールスクリプトを使って楽できるかくらいです。ここは諦めるしかないでしょう。

VPSに設置できたことで、本格的な開発が可能になります。GCEと無料ドメインを使えば、完全無料で構築できますので、GNU socialの開発に参加したい方などは、是非挑戦してみてください。

Comments

Copied title and URL