CentOS7でDiasporaを使用してオープンソースの分散型ソーシャルネットワークを実行する方法
序章
ディアスポラは、オープンソースの分散型ソーシャルネットワークです。
分散型であるため、他のほとんどのソーシャルネットワークとは異なります。つまり、中央基盤のない真のネットワークです。 世界中にサーバー(ポッドと呼ばれる)があり、それぞれにサーバーへの登録を選択したユーザーのデータが含まれています。 これらのポッドは相互にシームレスに通信するため、任意のポッドに登録して、ネットワーク上のどこにいても連絡先と自由に通信できます。 詳細については、ディアスポラのアバウトページをご覧ください。
このチュートリアルでは、Diasporaポッドをセットアップして構成します。 特に、次のことを学びます。
- 実稼働用にRailsアプリケーション(Diaspora)をセットアップする方法
- DiasporaでMariaDBを構成する方法
- NginxをDiasporaのリバースプロキシサーバーとして設定する方法
- NginxのSSL構成のベストプラクティス
- Railsアプリケーションで使用するカスタムsystemdユニットファイルを作成する方法
- セキュリティを重視する場合は、ディアスポラとうまく連携するようにSELinuxを構成する方法に関するボーナスセクションがあります。
公式のディアスポラインストールガイドからの逸脱
Diaspora wiki インストールガイドでは、Rubyバージョンマネージャーを使用することを推奨しています。 それは可能ですが、代わりにシステムパッケージのRubyを使用します。 そうすれば、ソースからRubyをインストールしたり、RVMのような別の依存関係を心配したりする必要がなくなります。
公式ガイドはまたの使用を提案します script/server
、起動するスクリプト unicorn
と sidekiq
、ディアスポラに必要な2つのアプリ。 CentOS 7はsystemdを使用するため、代わりにこれらのサービス用に独自のinitファイルを作成します。
前提条件
チュートリアルを開始する前に、これらの前提条件を完了してください。
-
1GBのRAMを搭載したCentOS7
小規模なコミュニティに必要な最小RAMは1GB であるため、 1 GB / 1CPUドロップレットを使用します。
-
sudoユーザー
以下のコマンドのほとんどには、root権限が必要です。 ユーザーの追加方法ガイドを確認して、ユーザーを追加し、sudo権限を付与してください。 このユーザーアカウントは、後で作成する diaspora ユーザーアカウントに追加され、Diasporaのサービスはより制限された特権で実行されます。
-
SSL証明書
DiasporaはSSL証明書なしで実行できますが、他のポッドに接続するためのDiasporaのメカニズムには、有効なSSL証明書が必要です。 本番環境では、有料SSL証明書が必要です。 この記事で作成した2つの証明書ファイル(パブリック、プライベート)が必要なだけなので、そのチュートリアルのWebサーバー構成の部分をスキップできます。 私たちは自分たちでそれをします。
または、テスト目的で、自己署名証明書を生成することもできます。 詳細については、このチュートリアルを参照するか、ホームディレクトリから次のコマンドを実行してください。
openssl req \ -newkey rsa:2048 -nodes -keyout ssl.key \ -x509 -days 365 -out ssl.crt
-
ドロップレットのIPを指す登録済みドメイン名
-
スワップファイル
1 GBサーバーの場合、少なくとも1GBのスワップファイルが必要です。 CentOS 7 チュートリアルでスワップを追加して、セットアップします。
-
CentOS7を使用したサーバーの初期設定ガイドに従ってください
-
新しいCentOS7サーバーの追加の推奨手順ガイドに従ってください
ステップ1—ユーティリティをインストールする
後で役立つユーティリティ用のパッケージをいくつかインストールしてみましょう。
- sudo yum install deltarpm yum-cron vim
次に、システムを更新します。
- sudo yum update
手順2—EPELリポジトリを有効にする
EPELはEnterpriseLinux用のExtraPackagesの略で、ベースのCentOSリポジトリの一部ではないいくつかのパッケージをインストールする必要があります。
インストールして有効にしましょう epel-release
パッケージとパッケージの更新の確認:
- sudo yum install epel-release
- sudo yum update
以下に示すようにEPEL7gpgキーをインポートするように求められた場合は、「はい」と答えてください。
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
Userid : "Fedora EPEL (7) <[email protected]>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package : epel-release-7-5.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]: y
ステップ3—RubyおよびCのパッケージをインストールする
次のパッケージは、ネイティブC拡張機能を持つDiasporaとそのgemに必要です。
パッケージをインストールします。
- sudo yum install git ruby ruby-devel libxslt-devel libxml2-devel gcc gcc-c++ automake net-tools libcurl-devel libffi-devel make redis nodejs ImageMagick-devel
Redis は、Diasporaがデータベースとして使用するオープンソースのKeyValueデータストアです。 Redisがインストールされたので、起動時に有効になるように構成して、サービスを開始しましょう。
- sudo systemctl enable redis
- sudo systemctl start redis
ステップ4—専用のディアスポラユーザーを追加する
Diasporaを実行するためのユーザーアカウントを作成します。 このアカウントには任意の名前を付けることができますが、このチュートリアルでは、このユーザーの名前がdiasporaであると想定しています。
- sudo useradd diaspora
手順5—ファイアウォールを構成する
実稼働環境をセットアップするときは、ファイアウォールの構成と強化が非常に重要です。 使用するツールは firewalld
、純粋なものと比較して物事を簡素化します iptables
コマンド。
まず、開始します firewalld
サービスを提供し、起動時に開始できるようにします。
- sudo systemctl start firewalld
- sudo systemctl enable firewalld
今、私たちは許可します ssh
ポートで 22
, http
ポートで 80
, https
ポートで 443
と smtp
ポートで 25
. sudoユーザーとして、次のサービスを追加します。
- sudo firewall-cmd --permanent --add-service=ssh
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --permanent --add-service=smtp
ファイアウォールルールをリロードします。
- sudo firewall-cmd --reload
使用の詳細については firewalld
、新しいCentOS7サーバーの追加の推奨手順チュートリアルをお読みください。
ステップ6—MariaDBをインストールして保護する
次の大きなステップは、ディアスポラのデータベースを設定することです。 このチュートリアルでは、MariaDBを使用しますが、チュートリアル全体にPostgreSQLのヒントをいくつか含めます。
必要なパッケージをインストールします。
- sudo yum install mariadb-server mariadb-devel
起動時にMariaDBが起動され、有効になっていることを確認します。
- sudo systemctl start mariadb
- sudo systemctl enable mariadb
次のコマンドを実行して、MariaDBのインストールを保護します。
- sudo mysql_secure_installation
以下のredテキストに示されているように質問に答え、プロンプトが表示されたら強力なルートパスワードを追加します。
Enter current password for root (enter for none): ENTER
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
ステップ7—Diasporaユーザーとデータベースを作成する
次に、MariaDBにログインして、diasporaユーザーを作成します。 プロンプトが表示されたら、上記で作成したrootパスワードを入力します。
- mysql -u root -p
Diasporaのユーザーを作成します。 変化する password
以下のコマンドで実際のパスワードに変更します。 これは、入力したrootパスワードと同じであってはなりません。 mysql_secure_installation
.
- CREATE USER 'diaspora'@'localhost' IDENTIFIED BY 'password';
ディアスポラ生産データベースを作成します。
- CREATE DATABASE IF NOT EXISTS `diaspora_production` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_bin`;
MariaDB diasporaユーザーにデータベースに対する必要な権限を付与します。
- GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `diaspora_production`.* TO 'diaspora'@'localhost';
データベースセッションを終了します。
- \q
ユーザーdiasporaで新しいデータベースに接続してみてください(入力したパスワードを使用してください IDENTIFIED BY 'password'
その上)。
- mysql -u diaspora -p -D diaspora_production
プロンプトが表示されます。 MariaDB [diaspora_production]>
. 次のように入力して、データベースセッションを終了します。
- \q
これで、MariaDBデータベースのインストールが完了しました。
追加のセキュリティについては、MySQLおよびMariaDBデータベースを保護する方法の詳細な記事を確認してください。
次に、Diasporaのソースコードを取得して、VPSで実行するように構成します。
ステップ8—Bundlerをインストールします
BundlerはRubygemのパッケージマネージャーです。 グローバルに利用できるようにインストールします。
- sudo gem install bundler
以来 bundle
実行可能ファイルはにインストールされます /usr/local/bin/bundle
、ユーザーに含めるためにシンボリックリンクを作成します PATH
.
- sudo ln -sf /usr/local/bin/bundle /usr/bin/bundle
ステップ9—ディアスポラのソースコードを取得する
ディアスポラは3つの主要な枝で開発されています。 stable
安定していると見なされ、リリースされる予定のコードが含まれています。 master
使用する安定したタグ付きバージョンがありますが、 develop
バグの可能性がある最新のコードがあります。
diasporaユーザーアカウントに変更します。
- sudo su - diaspora
マスターブランチをチェックしてください。 この記事の執筆時点では、ディアスポラバージョンが含まれています 0.5.1.1
.
- git clone -b master https://github.com/diaspora/diaspora.git
ステップ10—ディアスポラデータベースを構成する
次に、作業ディレクトリに移動します。
- cd ~/diaspora/
サンプルデータベース構成ファイルをコピーして開きます database.yml
お気に入りのエディターで。
- cp config/database.yml.example config/database.yml
- vim config/database.yml
次に、前に作成したデータベース設定と一致するように構成ファイルを編集します。
注: yamlを編集するときは、インデントを壊さないように十分注意してください(.yml
)ファイル。 タブの代わりに常にスペースを使用してください。
最初の行を編集します。 mysql2
アダプターが定義されています。 (MariaDBはMySQLのドロップイン置換です。)rootをdiasporaに置き換え、 password
以前に作成したデータベースユーザーdiasporaのパスワードに。 引用符は削除しないでください。 終了したら、ファイルを保存して閉じます。
mysql: &mysql
adapter: mysql2
host: "localhost"
port: 3306
username: "diaspora"
password: "password"
encoding: utf8mb4
collation: utf8mb4_bin
注:そのデータベースを使用している場合は、代わりにPostgreSQLセクションに入力し、データベースをPostgreSQLに変更する必要があります。
ステップ11—ディアスポラの基本設定を構成する
設定ファイルの例をコピーすることから始めましょう。
- cp config/diaspora.yml.example config/diaspora.yml
Diasporaが正しく機能するには、このファイルのいくつかの設定を編集する必要があります。 ファイル全体を注意深く読んで、ファイルの機能と方法について理解してください。 それはかなり自明ですが、最も重要な設定のいくつかを見てみましょう。
テキストエディタでファイルを開きます。
- vim config/diaspora.yml
39行目—コメントを外します url
次のようになります。
url: "https://example.org/"
交換 https://example.org/
あなた自身のドメイン名で。 ここで使用するURLはデータベースにハードコードされるため、正確であることを確認してください。 詳細については、この構成行の上のコメントをお読みください。
47行目—コメントを外します certificate_authorities
次のようになります。
certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt'
注:2つあります certificate_authorities
行; CentOS用のもののコメントを外してください。
166行目—コメントを外します rails_environment
ラインと交換 development
と production
したがって、次のようになります。
rails_environment: 'production'
ファイルを保存して閉じます。
これらは、ディアスポラポッドを機能させるために必要な最小限の変更です。 他のソーシャルネットワーク(Twitter、WordPress、Tumblr、Facebook)に接続するなど、好みに合わせて探索および構成するためのオプションは他にもたくさんあります。 ファイルを読み、必要な構成変更を行ってください。
ステップ12— Gemsをインストールし、データベースをセットアップする
必要なgemをインストールし、データベースをセットアップして、アセットをプリコンパイルします。
正しいディレクトリにいることを確認してください。
- cd /home/diaspora/diaspora/
まず、nokogiri gemに、以前にインストールしたシステムlibxm2ライブラリを使用するように指示します。
- bundle config build.nokogiri --use-system-libraries
次に、bundlerを使用して必要なgemをインストールします。
- RAILS_ENV=production bin/bundle install --without test development --deployment
データベースを設定します。
- RAILS_ENV=production bin/rake db:create db:schema:load
アセットをプリコンパイルします。
- RAILS_ENV=production bin/rake assets:precompile
この時点で、 diaspora ユーザーアカウントを終了し、このチュートリアルの前提条件に従って作成したsudoユーザーに戻すことができます。
- exit
ステップ13—Diasporasystemdサービスを構成する
ディアスポラは、実行する必要のある2つの主要なサービスで構成されています。
- ユニコーン、アプリケーションサーバー
- sidekiq、バックグラウンドジョブ処理用
この場合のスクリプトが提供されています。 script/server
、ただし、代わりにsystemdを使用します。 systemdは、CentOS7で使用されるinitシステムです。
systemdがどのように機能するかをよりよく理解するには、次の記事を読んでください。
- Systemctlを使用してSystemdサービスとユニットを管理する方法
- SystemdUnitsとUnitFilesを理解する
- Journalctlを使用してSystemdログを表示および操作する方法
tmpfilesディレクトリを作成します
を保持するディレクトリを作成します unicorn
Unixソケット。
- sudo mkdir /run/diaspora
所有権をdiasporaユーザーに変更し、権限を設定します。
- sudo chown diaspora:diaspora /run/diaspora
- sudo chmod 750 /run/diaspora
以来 /run
と /var/run
ディレクトリは揮発性であり、 /run/diaspora
作成したディレクトリは、システムの再起動後も存続しません。 systemdを使用すると、 tmpfiles を使用して、再起動間でこのディレクトリを保持できます。
開ける /etc/tmpfiles.d/diaspora.conf
編集用。
- sudo vim /etc/tmpfiles.d/diaspora.conf
次の行に貼り付けます。
d /run/diaspora 0750 diaspora diaspora - -
構成形式はパスごとに1行で、タイプ、パス、モード、所有権、経過時間、および引数の各フィールドがそれぞれ含まれています。 あなたはについてもっと学ぶことができます tmpfiles.d
その公式ウェブページまたはそのマニュアルページで。
ユニコーン
まず編集します diaspora.yml
サービスがUnixソケットをリッスンするようにします。 これについては、diasporaユーザーに戻ります。
- sudo su - diaspora
編集用に構成ファイルを開きます。
- vim /home/diaspora/diaspora/config/diaspora.yml
行157のコメントを外して、次のようにします。
listen: 'unix:/run/diaspora/diaspora.sock'
ファイルを保存して終了します。
次に、sudoユーザーに戻ります。
- su - username
を作成します unicorn.service
ファイル。
- sudo vim /etc/systemd/system/diaspora-unicorn.service
次のコンテンツを正確に貼り付けて、スクリプトを作成します。 このファイルの内容を理解するためのヘルプが必要な場合は、systemdに関する以前のリンクを確認することを忘れないでください。
[Unit]
Description=Diaspora Unicorn Server
Requires=redis.service
After=redis.service network.target
[Service]
User=diaspora
Group=diaspora
SyslogIdentifier=diaspora-unicorn
WorkingDirectory=/home/diaspora/diaspora
Environment=RAILS_ENV=production
## Uncomment if postgres is installed
#Environment=DB=postgres
PIDFile=/run/diaspora/unicorn.pid
Restart=always
CPUAccounting=true
emoryAccounting=true
BlockIOAccounting=true
CapabilityBoundingSet=
PrivateTmp=true
NoNewPrivileges=true
ExecStart=/usr/bin/bundle exec "unicorn_rails -c config/unicorn.rb -E production"
[Install]
WantedBy=multi-user.target
注:コメントを外します Environment=DB=postgres
PostgreSQLを使用している場合は行。 MariaDBの場合、変更は必要ありません。
ユニコーンサービスを開始し、起動時に有効にします。
- sudo systemctl start diaspora-unicorn
- sudo systemctl enable diaspora-unicorn
次に、サービスステータスを確認します。
- systemctl status diaspora-unicorn
すべてがうまくいけば、そのコマンドは次のような出力を返すはずです。
diaspora-unicorn.service - Diaspora Unicorn Server
Loaded: loaded (/etc/systemd/system/diaspora-unicorn.service; enabled)
Active: active (running) since Tue 2015-06-23 10:18:25 EDT; 16s ago
Main PID: 16658 (ruby)
CGroup: /system.slice/diaspora-unicorn.service
└─16658 ruby /home/diaspora/diaspora/vendor/bundle/ruby/bin/unicorn_rails -c config/unicorn.rb -E production
Sidekiq
同様に sidekiq
、作成しましょう sidekiq.service
ファイル。
- sudo vim /etc/systemd/system/diaspora-sidekiq.service
次のように貼り付けます。
[Unit]
Description=Diaspora Sidekiq Worker
Requires=redis.service
After=redis.service network.target
[Service]
User=diaspora
Group=diaspora
SyslogIdentifier=diaspora-sidekiq
WorkingDirectory=/home/diaspora/diaspora
Environment=RAILS_ENV=production
## Uncomment if postgres is installed
#Environment=DB=postgres
Restart=always
CPUAccounting=true
emoryAccounting=true
BlockIOAccounting=true
CapabilityBoundingSet=
PrivateTmp=true
ExecStart=/usr/bin/bundle exec "sidekiq -e production -L log/sidekiq.log >> log/sidekiq.log 2>&1"
[Install]
WantedBy=multi-user.target
注:コメントを外します Environment=DB=postgres
PostgreSQLを使用している場合は行。 MariaDBの場合、変更は必要ありません。
sidekiqサービスを開始し、起動時に有効にします。
- sudo systemctl start diaspora-sidekiq
- sudo systemctl enable diaspora-sidekiq
今実行します:
- systemctl status diaspora-sidekiq
出力は次のようになります。
diaspora-sidekiq.service - Diaspora Sidekiq Worker
Loaded: loaded (/etc/systemd/system/diaspora-sidekiq.service; enabled)
Active: active (running) since Mon 2014-12-29 08:21:45 UTC; 44s ago
Main PID: 18123 (sh)
CGroup: /system.slice/diaspora-sidekiq.service
├─18123 sh -c sidekiq -e production -L log/sidekiq.log >> log/sidekiq.log 2>&1
└─18125 sidekiq 2.17.7 diaspora [0 of 5 busy]
ステップ14—Nginxをインストールします
Nginxはリバースプロキシとして機能するため、ほぼすべてのリクエストがUnicornに送信されます。 内のファイルのみ public/
Nginxによって直接提供されます。
まず、Webサーバーをインストールしましょう。
- sudo yum install nginx
サービスを開始し、起動時に有効にします。
- sudo systemctl start nginx
- sudo systemctl enable nginx
ステップ15—Nginxにアクセス許可を与える
Nginxがdiasporaユーザーのホームフォルダーにアクセスできるようにするには、nginxユーザーをdiasporaグループに追加する必要があります。
- sudo usermod -a -G diaspora nginx
最後に、 diaspora ユーザーのホームディレクトリのアクセス許可を緩和して、diasporaグループへの読み取りおよび実行アクセスを許可します。
- sudo chmod 750 /home/diaspora/
ステップ16— SSL証明書をアップロードし、ForwardSecrecyを有効にする
これで、認証局からのSSL証明書ファイルが必要になります。 以下の設定例では、 /etc/ssl/diaspora/ssl.crt
公開証明書と /etc/ssl/diaspora/ssl.key
秘密鍵用。
証明書ファイルを保存するディレクトリを作成します。
- sudo mkdir /etc/ssl/diaspora
証明書とキーファイルをサーバーにアップロードまたは移動し、作成したディレクトリの下に配置します。 これを行うには、SFTPまたはSCPを使用できます。 このチュートリアルを参照してください。
注:自己署名証明書を作成した場合は、そのディレクトリに移動して、ファイルを次の場所にコピーします。 /etc/ssl/diaspora
とともに sudo cp ssl.crt ssl.key /etc/ssl/diaspora
指図。
Forward Secrecyは、SSL/TLS暗号化通信の重要な部分になっています。 Forward Secrecyの詳細については、このMozillaサーバーセキュリティwikiエントリを参照してください。
システムのrootユーザーに再度変更します。
- sudo su -
を作成します dhparam.pem
ファイル。
- openssl dhparam 2048 > /etc/ssl/dhparam.pem
dhparamファイルが完了するまでに数分かかる場合があります。 終了したら、sudoユーザーのアカウントに再度ログインします。
- su - username
ステップ17—nginx.confのデフォルトサイトを無効にします
変更します /etc/nginx/nginx.conf
デフォルトのWelcometo Nginx メッセージが、作成するDiaspora構成ファイルに干渉しないようにします。
- sudo vim /etc/nginx/nginx.conf
下で検索 server
を含む行のブロック default_server;
. 削除する default_server
これらのエントリから、サーバーブロックの領域が次のようになります。
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
注:全体をコメントアウトすることもできます server
必要に応じてブロックします。 それもうまくいくでしょう。
ステップ18—ディアスポラ独自のNginx構成ファイルを作成する
Diasporaポッドの新しいnginx構成ファイルを作成します。
- sudo vim /etc/nginx/conf.d/diaspora.conf
次のコンテンツを貼り付けます。 コードのすぐ下に説明があります。
upstream diaspora {
server unix:/run/diaspora/diaspora.sock fail_timeout=0;
}
server {
listen [::]:80;
listen 80;
server_name _;
return 301 https://example.com$request_uri;
}
server {
listen [::]:443 ssl spdy;
listen 443 ssl spdy;
server_name example.com;
root /home/diaspora/diaspora/public;
server_tokens off;
error_log /var/log/nginx/diaspora_error.log;
# Configure maximum picture size
# Note that Diaspora has a client side check set at 4M
client_max_body_size 4M;
## SSL settings
ssl_certificate /etc/ssl/diaspora/ssl.crt;
ssl_certificate_key /etc/ssl/diaspora/ssl.key;
# https://wiki.mozilla.org/Security/Server_Side_TLS
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
add_header Strict-Transport-Security "max-age=31536000";
location / {
# Proxy if requested file not found
try_files $uri $uri/index.html $uri.html @diaspora;
}
location @diaspora {
gzip off;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_redirect off;
proxy_pass http://diaspora;
}
}
次の変数を置き換えます。
example.com
あなた自身の登録されたドメイン名で; 2つのの場所でこれを行う必要があります/etc/ssl/diaspora/ssl.crt
自分の公開証明書へのパス/etc/ssl/diaspora/ssl.key
自分の秘密鍵へのパス
説明:
- The
upstream
ブロックは、DiasporaがリッスンするUnixソケットを設定する場所です(これも以前にUnicornで設定しました)。 これは後でproxy_pass
指令。 - 最初
server
ブロックは標準のHTTPポートをリッスンします80
リクエストをHTTPSにリダイレクトします。 - 二番目
server
ブロックはポートをリッスンします443
(SSL)およびMozillawikiから取得したいくつかの強力なSSLパラメーターを設定します。
一般的な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
Nginxを再起動して変更を適用します。
- sudo systemctl restart nginx
ブラウザでDiasporaポッドのドメイン名にアクセスした場合(https://example.com
たとえば)、ディアスポラのウェルカムページにアクセスする必要があります。 おめでとう!
注:自己署名証明書を使用する場合は、ブラウザーの警告をクリックしてください。
ステップ19—ディアスポラユーザーを作成する
最初のディアスポラユーザーを作成しましょう。 アカウントの作成から始めます。のリンクをクリックします
詳細を入力して、新しいDiasporaユーザーを作成します。 これで、ユーザーのホームページを表示して、Diasporaソーシャルネットワークの使用を開始できるようになります。
ステップ20— SELinuxを設定する(オプション)
警告: SELinuxに慣れていない場合は、これにより問題が発生する可能性があることに注意してください。 このセクションをスキップして、Diasporaの使用を開始できます。
CentOS 7ドロップレットでは、デフォルトでSELinuxが無効になっています。 最大限のセキュリティを確保するために、SELinuxを有効にして、Diasporaポッドのサービスと連携するように構成できます。 SELinuxを初めて使用する場合は、次の一連のチュートリアルを参照して詳細を確認できます。
SELinuxを有効にする
開ける /etc/selinux/config
テキストエディタで。
- sudo vim /etc/selinux/config
変更 SELINUX
からの設定 disabled
に permissive
以下に示すように。 SELinuxを適用する前に、システム内のすべてのファイルにコンテキストのラベルを付ける必要があるため、最初に許容ステータスを設定する必要があります。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
ファイルを保存して閉じます。
この変更を行った後、設定を有効にするためにドロップレットを再起動します。 次のように入力するだけです。
- sudo reboot
sudoユーザーのパスワードを入力して、システムを再起動します。 次に、SSHでDropletに戻り、次のコマンドを使用してsudoユーザーのアカウントに戻します。
- su - username
今、編集 /etc/selinux/config
もう一度設定します SELINUX
に設定 enforcing
.
- sudo vim /etc/selinux/config
終了すると、行は次のようになります。
SELINUX=enforcing
ファイルを保存して閉じます。 ドロップレットをもう一度再起動します。
- sudo reboot
次に、Dropletがオンラインに戻った後、SSHでDropletに戻します。
SELinuxNginxポリシー
ここから、あなたは root
ユーザー。 ドメインにアクセスすると、502エラーが表示されます。 この場合、SELinuxはNginxのソケットとdiasporaユーザーのホームディレクトリへのアクセスをブロックしています。
次の方法で監査ログを確認できます。
- grep denied /var/log/audit/audit.log
次のようなメッセージが表示されます。
type=AVC msg=audit(1424394514.632:385): avc: denied { search } for pid=1114 comm="nginx" name="diaspora" dev="vda1" ino=783369 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
type=AVC msg=audit(1424394514.632:386): avc: denied { write } for pid=1114 comm="nginx" name="diaspora.sock" dev="tmpfs" ino=21382 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file
以下のツールをインストールして、問題の修正を開始します。
- yum install policycoreutils-{python,devel} setroubleshoot-server
をgrepします audit.log
ファイルを作成し、SELinxポリシーでDeniedエントリを許可します。 走る:
- grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora
生成されたSELinuxポリシーはファイルに保存されます nginx_diaspora.te
あなたのルートで /home
ディレクトリ(ただし、SELinuxポリシーは任意の場所で整理できます)。 バイナリ nginx_diaspora.pp
に渡す必要があります semodule
ポリシーをインポートするコマンド。 開ける nginx_diaspora.te
SELinuxで現在許可されているものを確認します。
- vim nginx_diaspora.te
次のエントリが含まれている必要があります。 そうでない場合は、の内容を置き換えます nginx_diaspora.te
以下に示すもので。
module nginx_diaspora 1.0;
require {
type var_run_t;
type httpd_t;
type user_home_t;
type init_t;
class sock_file write;
class unix_stream_socket connectto;
class file { read open };
}
#============= httpd_t ==============
allow httpd_t init_t:unix_stream_socket connectto;
#!!!! This avc can be allowed using the boolean 'httpd_read_user_content'
allow httpd_t user_home_t:file { read open };
allow httpd_t var_run_t:sock_file write;
許可されるコンテキストの多くはおそらく絞り込むことができますが、これは適切な開始点です。 次に、ポリシーモジュールをインポートしましょう。
- semodule -i nginx_diaspora.pp
ブラウザでページを更新すると、Diasporaのウェルカムページが再び表示されます。 CentOS7で実行されるSELinuxで強化されたDiasporaポッドの構成おめでとうございます!
SELinuxの簡単なトラブルシューティング
ウェルカムページが読み込まれたが、実際の画像ではなく壊れた画像プレースホルダーが表示された場合は、次の手順に従います。
- 以下のコマンドを実行して
grep
終えたaudit.log
新しいDeniedエントリをNginxポリシーに追加します。
- grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora
- ポリシーモジュールをリロードします。
- semodule -i nginx_diaspora.pp
これらの手順を数回繰り返すことができます。
注:以下のコマンドを使用して、からのリアルタイム出力ストリームを開くことができます。 /var/log/messages
. これにより、人間が読める形式のSELinuxエラーメッセージが表示され、推奨される修正が提供されます。
- tail -f /var/log/messages
読み出しの例を次に示します。
. . .
***** Plugin catchall (100. confidence) suggests **************************
If you believe that nginx should be allowed write access on the sock_file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep nginx /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
. . .
結論
ディアスポラポッドを設定したので、友達や家族を招待して接続することができます。 大規模な商用のクローズドソースソーシャルネットワークに存在するいくつかの機能はありませんが、Diasporaの利点の1つは、データを所有できることです。
ここから、ポッドメンテナのDiaspora wikiを読み、ポッドをグローバルポッドリストに登録して、他の人がインストールの恩恵を受けることができるようにすることができます。