概要
以前「設置: 共用サーバーでのGNU socialの導入 | GNU social JP」で共用サーバーでのGNU socialのインストール方法を紹介しました。通常利用する場合は、共用サーバーでも問題ないですが、実際に開発作業や別のアプリケーションサーバーを設置して連携する場合など、VPSに導入したほうがいいケースもあります。
パッケージマネージャーでの必要パッケージのインストールや、設定など微妙に内容が違うので、紹介します。
Debian 11+Apache HTTP Server+PHP V7.4での手順となります。
以下の記事でGCEなどでサーバー設置、ドメイン設定、HTTPS設定などが完了済みとします。
- GCE: 静的外部IPアドレスの設定 | GNU social JP
- Apache HTTP Serverの/var/wwwの権限設定 | GNU social JP
- 無料ドメイン一覧 | GNU social JP
- 独自ドメインのDNS設定 | GNU social JP
- CertbotによるLet’s Encryptの証明書の取得 | GNU social JP
なお、メールサーバーの設定をまだ検証できていないので、メール送信機能がこのままだと機能しません。検証できたら追記します。
設置
以下のコマンドで必要な依存関係を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 settings | Site name | サイト名 (例: gs.example.com) |
Fancy URLs | enable | |
Server SSL | enable | |
Database settings | Hostname | 127.0.0.1 |
Type | MariaDB | |
Name | gnusocial | |
DB username | mysql | |
DB password | mysqlユーザーのパスワード | |
Administrator settings | Administrator nickname | 管理者ニックネーム (ユーザー名相当) |
Administrator password | 管理者パスワード | |
Confirm password | 管理者パスワード | |
Administrator e-mail | 管理者メールアドレス (任意) | |
Site profile | Site profile | Community |
以上でGNU socialの設置が完了です。
結論
VPSでのGNU socialのインストールでした。
GNU socialの設置よりおそらくサーバー構築の一連の作業の方が手間だと思います。ただ、一連のサーバー環境構築は他の分散SNSでも基本的には共通で、せいぜいDockerを使ったりインストールスクリプトを使って楽できるかくらいです。ここは諦めるしかないでしょう。
VPSに設置できたことで、本格的な開発が可能になります。GCEと無料ドメインを使えば、完全無料で構築できますので、GNU socialの開発に参加したい方などは、是非挑戦してみてください。

詳細プロフィール。SNS: Twitter/[email protected]/[email protected]。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。自称ASD。
Comments