開発者ドキュメント

CentOS7でDiasporaを使用してオープンソースの分散型ソーシャルネットワークを実行する方法

序章

ディアスポラは、オープンソースの分散型ソーシャルネットワークです。

分散型であるため、他のほとんどのソーシャルネットワークとは異なります。つまり、中央基盤のない真のネットワークです。 世界中にサーバー(ポッドと呼ばれる)があり、それぞれにサーバーへの登録を選択したユーザーのデータが含まれています。 これらのポッドは相互にシームレスに通信するため、任意のポッドに登録して、ネットワーク上のどこにいても連絡先と自由に通信できます。 詳細については、ディアスポラのアバウトページをご覧ください。

このチュートリアルでは、Diasporaポッドをセットアップして構成します。 特に、次のことを学びます。

公式のディアスポラインストールガイドからの逸脱

Diaspora wiki インストールガイドでは、Rubyバージョンマネージャーを使用することを推奨しています。 それは可能ですが、代わりにシステムパッケージのRubyを使用します。 そうすれば、ソースからRubyをインストールしたり、RVMのような別の依存関係を心配したりする必要がなくなります。

公式ガイドはまたの使用を提案します script/server、起動するスクリプト unicornsidekiq、ディアスポラに必要な2つのアプリ。 CentOS 7はsystemdを使用するため、代わりにこれらのサービス用に独自のinitファイルを作成します。

前提条件

チュートリアルを開始する前に、これらの前提条件を完了してください。

ステップ1—ユーティリティをインストールする

後で役立つユーティリティ用のパッケージをいくつかインストールしてみましょう。

  1. sudo yum install deltarpm yum-cron vim

次に、システムを更新します。

  1. sudo yum update

手順2—EPELリポジトリを有効にする

EPELはEnterpriseLinux用のExtraPackagesの略で、ベースのCentOSリポジトリの一部ではないいくつかのパッケージをインストールする必要があります。

インストールして有効にしましょう epel-release パッケージとパッケージの更新の確認:

  1. sudo yum install epel-release
  2. 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) <epel@fedoraproject.org>"
  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に必要です。

パッケージをインストールします。

  1. 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がインストールされたので、起動時に有効になるように構成して、サービスを開始しましょう。

  1. sudo systemctl enable redis
  2. sudo systemctl start redis

ステップ4—専用のディアスポラユーザーを追加する

Diasporaを実行するためのユーザーアカウントを作成します。 このアカウントには任意の名前を付けることができますが、このチュートリアルでは、このユーザーの名前がdiasporaであると想定しています。

  1. sudo useradd diaspora

手順5—ファイアウォールを構成する

実稼働環境をセットアップするときは、ファイアウォールの構成と強化が非常に重要です。 使用するツールは firewalld、純粋なものと比較して物事を簡素化します iptables コマンド。

まず、開始します firewalld サービスを提供し、起動時に開始できるようにします。

  1. sudo systemctl start firewalld
  2. sudo systemctl enable firewalld

今、私たちは許可します ssh ポートで 22, http ポートで 80, https ポートで 443smtp ポートで 25. sudoユーザーとして、次のサービスを追加します。

  1. sudo firewall-cmd --permanent --add-service=ssh
  2. sudo firewall-cmd --permanent --add-service=http
  3. sudo firewall-cmd --permanent --add-service=https
  4. sudo firewall-cmd --permanent --add-service=smtp

ファイアウォールルールをリロードします。

  1. sudo firewall-cmd --reload

使用の詳細については firewalld新しいCentOS7サーバーの追加の推奨手順チュートリアルをお読みください。

ステップ6—MariaDBをインストールして保護する

次の大きなステップは、ディアスポラのデータベースを設定することです。 このチュートリアルでは、MariaDBを使用しますが、チュートリアル全体にPostgreSQLのヒントをいくつか含めます。

必要なパッケージをインストールします。

  1. sudo yum install mariadb-server mariadb-devel

起動時にMariaDBが起動され、有効になっていることを確認します。

  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb

次のコマンドを実行して、MariaDBのインストールを保護します。

  1. 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パスワードを入力します。

  1. mysql -u root -p

Diasporaのユーザーを作成します。 変化する password 以下のコマンドで実際のパスワードに変更します。 これは、入力したrootパスワードと同じであってはなりません。 mysql_secure_installation.

  1. CREATE USER 'diaspora'@'localhost' IDENTIFIED BY 'password';

ディアスポラ生産データベースを作成します。

  1. CREATE DATABASE IF NOT EXISTS `diaspora_production` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_bin`;

MariaDB diasporaユーザーにデータベースに対する必要な権限を付与します。

  1. GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `diaspora_production`.* TO 'diaspora'@'localhost';

データベースセッションを終了します。

  1. \q

ユーザーdiasporaで新しいデータベースに接続してみてください(入力したパスワードを使用してください IDENTIFIED BY 'password' その上)。

  1. mysql -u diaspora -p -D diaspora_production

プロンプトが表示されます。 MariaDB [diaspora_production]>. 次のように入力して、データベースセッションを終了します。

  1. \q

これで、MariaDBデータベースのインストールが完了しました。

追加のセキュリティについては、MySQLおよびMariaDBデータベースを保護する方法の詳細な記事を確認してください。

次に、Diasporaのソースコードを取得して、VPSで実行するように構成します。

ステップ8—Bundlerをインストールします

BundlerはRubygemのパッケージマネージャーです。 グローバルに利用できるようにインストールします。

  1. sudo gem install bundler

以来 bundle 実行可能ファイルはにインストールされます /usr/local/bin/bundle、ユーザーに含めるためにシンボリックリンクを作成します PATH.

  1. sudo ln -sf /usr/local/bin/bundle /usr/bin/bundle

ステップ9—ディアスポラのソースコードを取得する

ディアスポラは3つの主要な枝で開発されています。 stable 安定していると見なされ、リリースされる予定のコードが含まれています。 master 使用する安定したタグ付きバージョンがありますが、 develop バグの可能性がある最新のコードがあります。

diasporaユーザーアカウントに変更します。

  1. sudo su - diaspora

マスターブランチをチェックしてください。 この記事の執筆時点では、ディアスポラバージョンが含まれています 0.5.1.1.

  1. git clone -b master https://github.com/diaspora/diaspora.git

ステップ10—ディアスポラデータベースを構成する

次に、作業ディレクトリに移動します。

  1. cd ~/diaspora/

サンプルデータベース構成ファイルをコピーして開きます database.yml お気に入りのエディターで。

  1. cp config/database.yml.example config/database.yml
  2. vim config/database.yml

次に、前に作成したデータベース設定と一致するように構成ファイルを編集します。

注: yamlを編集するときは、インデントを壊さないように十分注意してください(.yml)ファイル。 タブの代わりに常にスペースを使用してください。

最初の行を編集します。 mysql2 アダプターが定義されています。 (MariaDBはMySQLのドロップイン置換です。)rootdiasporaに置き換え、 password 以前に作成したデータベースユーザーdiasporaのパスワードに。 引用符は削除しないでください。 終了したら、ファイルを保存して閉じます。

mysql: &mysql
  adapter: mysql2
  host: "localhost"
  port: 3306
  username: "diaspora"
  password: "password"
  encoding: utf8mb4
  collation: utf8mb4_bin

注:そのデータベースを使用している場合は、代わりにPostgreSQLセクションに入力し、データベースをPostgreSQLに変更する必要があります。

ステップ11—ディアスポラの基本設定を構成する

設定ファイルの例をコピーすることから始めましょう。

  1. cp config/diaspora.yml.example config/diaspora.yml

Diasporaが正しく機能するには、このファイルのいくつかの設定を編集する必要があります。 ファイル全体を注意深く読んで、ファイルの機能と方法について理解してください。 それはかなり自明ですが、最も重要な設定のいくつかを見てみましょう。

テキストエディタでファイルを開きます。

  1. 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 ラインと交換 developmentproduction したがって、次のようになります。

rails_environment: 'production'

ファイルを保存して閉じます。

これらは、ディアスポラポッドを機能させるために必要な最小限の変更です。 他のソーシャルネットワーク(Twitter、WordPress、Tumblr、Facebook)に接続するなど、好みに合わせて探索および構成するためのオプションは他にもたくさんあります。 ファイルを読み、必要な構成変更を行ってください。

ステップ12— Gemsをインストールし、データベースをセットアップする

必要なgemをインストールし、データベースをセットアップして、アセットをプリコンパイルします。

正しいディレクトリにいることを確認してください。

  1. cd /home/diaspora/diaspora/

まず、nokogiri gemに、以前にインストールしたシステムlibxm2ライブラリを使用するように指示します。

  1. bundle config build.nokogiri --use-system-libraries

次に、bundlerを使用して必要なgemをインストールします。

  1. RAILS_ENV=production bin/bundle install --without test development --deployment

データベースを設定します。

  1. RAILS_ENV=production bin/rake db:create db:schema:load

アセットをプリコンパイルします。

  1. RAILS_ENV=production bin/rake assets:precompile

この時点で、 diaspora ユーザーアカウントを終了し、このチュートリアルの前提条件に従って作成したsudoユーザーに戻すことができます。

  1. exit

ステップ13—Diasporasystemdサービスを構成する

ディアスポラは、実行する必要のある2つの主要なサービスで構成されています。

この場合のスクリプトが提供されています。 script/server、ただし、代わりにsystemdを使用します。 systemdは、CentOS7で使用されるinitシステムです。

systemdがどのように機能するかをよりよく理解するには、次の記事を読んでください。

tmpfilesディレクトリを作成します

を保持するディレクトリを作成します unicorn Unixソケット。

  1. sudo mkdir /run/diaspora

所有権をdiasporaユーザーに変更し、権限を設定します。

  1. sudo chown diaspora:diaspora /run/diaspora
  2. sudo chmod 750 /run/diaspora

以来 /run/var/run ディレクトリは揮発性であり、 /run/diaspora 作成したディレクトリは、システムの再起動後も存続しません。 systemdを使用すると、 tmpfiles を使用して、再起動間でこのディレクトリを保持できます。

開ける /etc/tmpfiles.d/diaspora.conf 編集用。

  1. sudo vim /etc/tmpfiles.d/diaspora.conf

次の行に貼り付けます。

/etc/tmpfiles.d/diaspora.conf
d /run/diaspora 0750 diaspora diaspora - -

構成形式はパスごとに1行で、タイプ、パス、モード、所有権、経過時間、および引数の各フィールドがそれぞれ含まれています。 あなたはについてもっと学ぶことができます tmpfiles.d その公式ウェブページまたはそのマニュアルページで。

ユニコーン

まず編集します diaspora.yml サービスがUnixソケットをリッスンするようにします。 これについては、diasporaユーザーに戻ります。

  1. sudo su - diaspora

編集用に構成ファイルを開きます。

  1. vim /home/diaspora/diaspora/config/diaspora.yml

行157のコメントを外して、次のようにします。

/home/diaspora/diaspora/config/diaspora.yml
listen: 'unix:/run/diaspora/diaspora.sock'

ファイルを保存して終了します。

次に、sudoユーザーに戻ります。

  1. su - username

を作成します unicorn.service ファイル。

  1. sudo vim /etc/systemd/system/diaspora-unicorn.service

次のコンテンツを正確に貼り付けて、スクリプトを作成します。 このファイルの内容を理解するためのヘルプが必要な場合は、systemdに関する以前のリンクを確認することを忘れないでください。

/etc/systemd/system/diaspora-unicorn.service
[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の場合、変更は必要ありません。

ユニコーンサービスを開始し、起動時に有効にします。

  1. sudo systemctl start diaspora-unicorn
  2. sudo systemctl enable diaspora-unicorn

次に、サービスステータスを確認します。

  1. 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 ファイル。

  1. sudo vim /etc/systemd/system/diaspora-sidekiq.service

次のように貼り付けます。

/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サービスを開始し、起動時に有効にします。

  1. sudo systemctl start diaspora-sidekiq
  2. sudo systemctl enable diaspora-sidekiq

今実行します:

  1. 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サーバーをインストールしましょう。

  1. sudo yum install nginx

サービスを開始し、起動時に有効にします。

  1. sudo systemctl start nginx
  2. sudo systemctl enable nginx

ステップ15—Nginxにアクセス許可を与える

Nginxがdiasporaユーザーのホームフォルダーにアクセスできるようにするには、nginxユーザーをdiasporaグループに追加する必要があります。

  1. sudo usermod -a -G diaspora nginx

最後に、 diaspora ユーザーのホームディレクトリのアクセス許可を緩和して、diasporaグループへの読み取りおよび実行アクセスを許可します。

  1. sudo chmod 750 /home/diaspora/

ステップ16— SSL証明書をアップロードし、ForwardSecrecyを有効にする

これで、認証局からのSSL証明書ファイルが必要になります。 以下の設定例では、 /etc/ssl/diaspora/ssl.crt 公開証明書と /etc/ssl/diaspora/ssl.key 秘密鍵用。

証明書ファイルを保存するディレクトリを作成します。

  1. 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ユーザーに再度変更します。

  1. sudo su -

を作成します dhparam.pem ファイル。

  1. openssl dhparam 2048 > /etc/ssl/dhparam.pem

dhparamファイルが完了するまでに数分かかる場合があります。 終了したら、sudoユーザーのアカウントに再度ログインします。

  1. su - username

ステップ17—nginx.confのデフォルトサイトを無効にします

変更します /etc/nginx/nginx.conf デフォルトのWelcometo Nginx メッセージが、作成するDiaspora構成ファイルに干渉しないようにします。

  1. sudo vim /etc/nginx/nginx.conf

下で検索 server を含む行のブロック default_server;. 削除する default_server これらのエントリから、サーバーブロックの領域が次のようになります。

/etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;

注:全体をコメントアウトすることもできます server 必要に応じてブロックします。 それもうまくいくでしょう。

ステップ18—ディアスポラ独自のNginx構成ファイルを作成する

Diasporaポッドの新しいnginx構成ファイルを作成します。

  1. sudo vim /etc/nginx/conf.d/diaspora.conf

次のコンテンツを貼り付けます。 コードのすぐ下に説明があります。

/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;
  }
}

次の変数を置き換えます。

説明:

一般的なNginxサーバーブロックの詳細については、このチュートリアルをお読みください。

すべての変更が完了したら、構成ファイルにエラーがないか確認します。

  1. 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を再起動して変更を適用します。

  1. 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 テキストエディタで。

  1. sudo vim /etc/selinux/config

変更 SELINUX からの設定 disabledpermissive 以下に示すように。 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

ファイルを保存して閉じます。

この変更を行った後、設定を有効にするためにドロップレットを再起動します。 次のように入力するだけです。

  1. sudo reboot

sudoユーザーのパスワードを入力して、システムを再起動します。 次に、SSHでDropletに戻り、次のコマンドを使用してsudoユーザーのアカウントに戻します。

  1. su - username

今、編集 /etc/selinux/config もう一度設定します SELINUX に設定 enforcing.

  1. sudo vim /etc/selinux/config

終了すると、行は次のようになります。

SELINUX=enforcing

ファイルを保存して閉じます。 ドロップレットをもう一度再起動します。

  1. sudo reboot

次に、Dropletがオンラインに戻った後、SSHでDropletに戻します。

SELinuxNginxポリシー

ここから、あなたは root ユーザー。 ドメインにアクセスすると、502エラーが表示されます。 この場合、SELinuxはNginxのソケットとdiasporaユーザーのホームディレクトリへのアクセスをブロックしています。

次の方法で監査ログを確認できます。

  1. 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

以下のツールをインストールして、問題の修正を開始します。

  1. yum install policycoreutils-{python,devel} setroubleshoot-server

をgrepします audit.log ファイルを作成し、SELinxポリシーでDeniedエントリを許可します。 走る:

  1. 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で現在許可されているものを確認します。

  1. 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;

許可されるコンテキストの多くはおそらく絞り込むことができますが、これは適切な開始点です。 次に、ポリシーモジュールをインポートしましょう。

  1. semodule -i nginx_diaspora.pp

ブラウザでページを更新すると、Diasporaのウェルカムページが再び表示されます。 CentOS7で実行されるSELinuxで強化されたDiasporaポッドの構成おめでとうございます!

SELinuxの簡単なトラブルシューティング

ウェルカムページが読み込まれたが、実際の画像ではなく壊れた画像プレースホルダーが表示された場合は、次の手順に従います。

  1. 以下のコマンドを実行して grep 終えた audit.log 新しいDeniedエントリをNginxポリシーに追加します。
  1. grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora
  1. ポリシーモジュールをリロードします。
  1. semodule -i nginx_diaspora.pp

これらの手順を数回繰り返すことができます。

注:以下のコマンドを使用して、からのリアルタイム出力ストリームを開くことができます。 /var/log/messages. これにより、人間が読める形式のSELinuxエラーメッセージが表示され、推奨される修正が提供されます。

  1. 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を読み、ポッドをグローバルポッドリストに登録して、他の人がインストールの恩恵を受けることができるようにすることができます。

モバイルバージョンを終了