CentOS 7にApacheをインストールする方法
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
Buildbotは、オープンソースのPythonベースの継続的統合ツールであり、ソフトウェアの構築、テスト、導入を自動化します。Buildbotは、1つ以上のBuildbotマスターと多数のワーカーで構成されています。BuildbotマスターまたはBuildmasterは、システムの中心的なコマンドを持っています。ビルド環境とワーカーの管理を担当し、ワーカーへのジョブの送信に関するすべての決定を行います。Buildmasterはコードリポジトリの変更を検出し、コマンドまたはジョブをワーカーに送信して実行します。ワーカーはジョブを実行し、結果をビルドマスターに返します。次に、Buildmasterは複数のサポートされているチャネルを通じて開発者に通知します。このチュートリアルでは、CentOS 7にBuildbotマスターとワーカーをインストールします。また、認証とNginxを安全なリバースプロキシとして構成します。
このチュートリアルでは192.168.1.1
、パブリックIPアドレスおよびci.example.com
Vultrインスタンスを指すドメイン名として使用します。サンプルのドメイン名とIPアドレスをすべて実際のものに置き換えてください。
CentOS 7のアップデート方法ガイドを使用して、ベースシステムをアップデートします。システムが更新されたら、PostgreSQLのインストールに進みます。
PythonのパッケージマネージャーであるPipをインストールします。
sudo yum -y install epel-release
sudo yum -y install python-pip gcc python-devel git
sudo pip install --upgrade pip
Buildbotは、MySQL、PostgreSQL、SQLiteなど、複数のタイプのデータベースサーバーをサポートしています。このチュートリアルでは、PostgreSQLを使用してBuildbotデータベースサーバーをホストします。
PostgreSQLは、オブジェクトリレーショナルデータベースシステムであり、その安定性と速度で知られています。デフォルトのyum
リポジトリには古いバージョンのPostgreSQLが含まれているため、PostgreSQLリポジトリを追加します。
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
PostgreSQLデータベースサーバーをインストールします。
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
データベースを初期化します。
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
PostgreSQLサーバーを起動し、起動時に自動的に起動するようにします。
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
デフォルトのPostgreSQLユーザーのパスワードを変更します。
sudo passwd postgres
PostgreSQLユーザーとしてログインします。
sudo su - postgres
Buildbotの新しいPostgreSQLユーザーを作成します。
createuser bb_user
bb_user
必要に応じて、の代わりに任意のユーザー名を使用できます。PostgreSQLは、psql
データベースでクエリを実行するためのシェルを提供します。PostgreSQLシェルに切り替えます。
psql
新しく作成したユーザーのパスワードを設定します。
ALTER USER bb_user WITH ENCRYPTED password 'DBPassword';
DBPassword
安全なパスワードに置き換えます。
Buildbotインストール用の新しいデータベースを作成します。
CREATE DATABASE buildbot OWNER bb_user;
psql
シェルを終了します。
\q
sudo
ユーザーに切り替えます。
exit
pg_hba.conf
ファイルを編集して、MD5ベースの認証を有効にします。
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
次の行を見つけて、値を変更peer
してident
、中METHOD
列、へtrust
とmd5
それぞれ。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
更新すると、構成は次のテキストのようになります。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
ファイルを保存してエディターを終了します。Python用のPostgreSQLデータベースアダプターをインストールします。
sudo pip install psycopg2
PostgreSQLを再起動して、変更を有効にします。
sudo systemctl restart postgresql-10
Pipを使用してBuildbotをインストールします。
sudo pip install 'buildbot[bundle]' pyopenssl service_identity
上記のコマンドはbuildbot-www
、Buildbotを、、、buildbot-worker
およびなどのいくつかのWebプラグインとともにインストールしbuildbot-waterfall-view
ます。
Buildbotが正常にインストールされたことを確認するには、Buildbotのバージョンを確認して確認できます。
buildbot --version
出力は次のテキストのようになります。
[user@vultr ~]$ buildbot --version
Buildbot version: 0.9.15.post1
Twisted version: 17.9.0
ポートを許可するようにファイアウォールルールを変更します8010
。Buildbotはこのポートを使用してWebリクエストをリッスンします。
sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload
Buildbotのマスタープロセスとワーカープロセスを実行するための新しい非特権ユーザーを作成します。Buildbotマスターサービスをroot
ユーザーとして実行することはお勧めしません。
sudo adduser buildbot
sudo passwd buildbot
新しく作成したbuildbot
ユーザーとしてログインします。
sudo su - buildbot
Buildbotマスターを/home/buildbot/master
ディレクトリに設定します。このディレクトリには、各ビルドの構成、ステータス、ログファイルが含まれます。
buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
上記のコマンドで、データベースユーザーの資格情報を必ず置き換えてください。
注: PostgreSQLの代わりにSQLiteデータベースを使用する場合は、--db 'postgresql://bb_user:DBpassword@localhost/buildbot'
オプションを省略してください。SQLiteデータベースは同じディレクトリに作成されます。
上記のコマンドは~/master
、Buildmasterファイルを格納するディレクトリを作成します。また、PostgreSQLデータベースにデータを書き込みます。次の出力が表示されます。
[buildbot@vultr ~]$ buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
mkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (postgresql://bb_user:DBPassword@localhost/buildbot)
buildmaster configured in /home/buildbot/master
サンプル構成ファイルをライブ構成ファイルにコピーします。
cp ~/master/master.cfg.sample ~/master/master.cfg
構成ファイルを編集します。
nano ~/master/master.cfg
次の行を見つけます。
c['workers'] = [worker.Worker("example-worker", "pass")]
...
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
...
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
...
c['buildbotURL'] = "http://localhost:8010/"
...
c['db'] = {
'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
上記の構成には、サンプルワーカーのエントリがあります。実行するワーカーのサンプルエントリを変更しlocalhost
ます。をワーカーにexample-worker
適した名前にlocalhost
変更し、pass
を他のパスワードに変更します。チュートリアルの後半で必要になるので、ワーカー名とパスワードを書き留めます。ビルダーのリストでワーカーの名前を変更します。必要に応じて、アプリケーションの名前とプロジェクトのURLを変更します。
Buildbot URLをlocalhost
実際のドメイン名またはパブリックIPアドレスに変更します。また、構成ファイルのデータベース情報が実際のデータベース資格情報と一致していることを確認してください。
ファイルの最後にを追加しc['buildbotNetUsageData'] = None
ます。このパラメーターは、ソフトウェアバージョン情報とプラグインの使用状況の詳細の開発者への送信を無効にします。ただし、使用情報の送信を有効にするには、オプションをに変更しますFull
。
構成は次のテキストのようになります。
c['workers'] = [worker.Worker("localhost-worker", "Password123")]
...
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["localhost-worker"],
factory=factory))
...
c['title'] = "My Application CI"
c['titleURL'] = "https://example.com/my-app"
...
c['buildbotURL'] = "http://192.168.1.1:8010/"
...
c['db'] = {
'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
...
c['buildbotNetUsageData'] = None
ファイルを保存してエディターを終了します。エラーがないか構成ファイルを確認してください。
buildbot checkconfig ~/master
構成ファイルにエラーがない場合は、次の出力が表示されます。
[buildbot@vultr ~]$ buildbot checkconfig ~/master
Config file is good!
すべてが正しく構成されたので、Buildbotマスターを開始できます。
buildbot start ~/master
次の出力が表示されます。
[buildbot@vultr ~]$ buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.
Buildbotマスターが正しく起動したので、Webユーザーインターフェイスにからアクセスできますhttp://192.168.1.1:8010
。次のBuildbotインターフェースが表示されます。
でワーカー設定をすでに変更し~/master/master.cfg
ているため、新しいワーカーの作成に進むことができます。
buildbot-worker create-worker ~/worker localhost localhost-worker Password123
~/master/master.cfg
ファイルに記載されているのとまったく同じワーカー名とパスワードを使用していることを確認してください。ワーカーの名前またはパスワードが一致しない場合、ワーカーはBuildbotマスターに接続できません。正常に実行されると、次の出力が表示されます。
[buildbot@vultr ~]$ buildbot-worker create-worker ~/worker localhost example-worker pass
mkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker
ワーカーに関する情報は/info
ディレクトリに保存されます。開発者に関する管理情報を編集します。
nano ~/worker/info/admin
例の名前を実際の名前と電子メールに置き換えます。
Your Name <[email protected]>
次に、ホストに関する情報を含むファイルを開きます。
nano ~/worker/info/host
例の命令をホストシステムに関する実際の情報に置き換えます。
Localhost, CentOS 7
ワーカーの管理者とホストの情報は、システムについてユーザーに知らせるためにのみ使用されます。BuildbotバージョンやTwistedバージョンなど、システムに関する追加情報を追加することもできます。
ワーカーを開始します。
buildbot-worker start ~/worker
出力は次のテキストのようになります。
[buildbot@vultr ~]$ buildbot-worker start ~/worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.
ワーカーが登録されているかどうかを確認するには、Buildbotのウェブインターフェースに移動しBuilds >> Workers
、左側のナビゲーションからに移動します。ワーカーが稼働し、構築する準備ができていることがわかります。
サンプルビルドを実行し、Buildbotワーカーが正常に実行されているかどうかを確認するには、に移動しBuilds >> Builders
ます。runtests
ビルダー名をクリックしてビルダーインターフェイスを開き、Force
ボタンをクリックして強制的にビルドします。名前を入力し、Start Build
ボタンをクリックしてビルドを開始します。これはBuildbot環境を確認するためのサンプルビルドテストであるため、数秒で完了します。成功メッセージとビルド結果が表示されます。
Buildbotマスターとワーカーは上記のコマンドを使用して簡単に開始できますが、Buildbotサービスの実行と管理にはSystemdユニットを使用することをお勧めします。これにより、システムの再起動や障害時に自動的に開始されます。
注: またはを実行して、sudo
ユーザーに再度切り替えます。これからは、すべてのコマンドをユーザーが実行する必要があります。exit
su <username>
sudo
実行中のBuildbotワーカーとマスターサービスを停止します。
sudo su buildbot -c "buildbot stop /home/buildbot/master"
sudo su buildbot -c "buildbot-worker stop ~/worker"
Buildbotマスター用の新しいSystemdユニットファイルを作成します。
sudo nano /etc/systemd/system/buildbot.service
ファイルに入力します。
[Unit]
Description=BuildBot master service
After=network.target
[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/master
ExecStart=/usr/bin/buildbot start
ExecStop=/usr/bin/buildbot stop
ExecReload=/usr/bin/buildbot restart
[Install]
WantedBy=multi-user.target
Buildbotマスターを起動し、起動時に自動的に起動するようにします。
sudo systemctl start buildbot
sudo systemctl enable buildbot
Buildbotワーカー用の新しいSystemdユニットファイルを作成します。
sudo nano /etc/systemd/system/buildbot-worker.service
ファイルに入力します。
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/worker
ExecStart=/usr/bin/buildbot-worker start
ExecStop=/usr/bin/buildbot-worker stop
ExecReload=/usr/bin/buildbot-worker restart
[Install]
WantedBy=multi-user.target
Buildbotワーカーを起動し、起動時に自動的に起動するようにします。
sudo systemctl start buildbot-worker
sudo systemctl enable buildbot-worker
サービスの状態を確認できます。
sudo systemctl status buildbot buildbot-worker
サービスがスムーズに実行されている場合は、出力にそれが表示されます。
[user@vultr ~]$ sudo systemctl status buildbot buildbot-worker
● buildbot.service - BuildBot master service
...
Active: active (running) since Fri 2018-01-12 16:00:59 UTC; 1min 25s ago
...
Jan 12 16:00:59 vultr.guest systemd[1]: Started BuildBot master service.
● buildbot-worker.service - BuildBot worker service
...
Active: active (running) since Fri 2018-01-12 16:02:00 UTC; 24s ago
...
Jan 12 16:02:00 vultr.guest systemd[1]: Started BuildBot worker service.
デフォルトでは、Buildbot Webインターフェースで認証は有効になっていません。インターネットに接続しているサイトの場合は、認証をセットアップして、許可されたユーザーのみが管理タスクを実行できるようにすることを強くお勧めします。認証をセットアップするには、Buildbotマスター構成ファイルを再度開きます。
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
ファイルの最後に次の行を追加します。
c['www']['authz'] = util.Authz(
allowRules = [
util.AnyEndpointMatcher(role="admins")
],
roleMatchers = [
util.RolesFromUsername(roles=['admins'], usernames=['admin_user'])
]
)
c['www']['auth'] = util.UserPasswordAuth({'admin_user': 'AdminPassword'})
の両方admin_user
を、使用する実際のユーザー名とAdminPassword
強力なパスワードに置き換えます。
構成ファイルのエラーを確認してください。
sudo su buildbot -c "buildbot checkconfig /home/buildbot/master"
Buildbotマスターサービスを再起動して、変更を有効にします。
sudo systemctl restart buildbot
Webインターフェースをもう一度参照して、匿名ユーザーがビルドサーバーの基本的な詳細しか表示できないことを確認します。ここで、master.cfg
ファイルに設定された資格情報を使用してログインすると、他のすべての管理機能は、ログインした管理者ユーザーのみが使用できることがわかります。
デフォルトでは、Buildbotは保護さ8010
れていない接続でポートをリッスンします。HTTPS
ブラウザからサーバーへの転送中にデータが安全であることを保証するために、でWebインターフェイスを保護することをお勧めします。チュートリアルのこのセクションでは、無料のSSL証明書であるLet's Encryptを使用してNginxをインストールし、保護します。Nginxウェブサーバーは、受信リクエストをBuildbotのHTTPエンドポイントに転送するリバースプロキシとして機能します。
Nginxをインストールします。
sudo yum -y install nginx
Nginxを起動し、起動時に自動的に起動するようにします。
sudo systemctl start nginx
sudo systemctl enable nginx
Let's Encrypt CAのクライアントアプリケーションであるCertbotをインストールします。
sudo yum -y install certbot
証明書を要求する前に、ポート80
および443
/または標準HTTP
とHTTPS
サービスがファイアウォールを通過できるようにする必要があります。また、8010
保護されていない接続をリッスンするポートを削除します。
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8010/tcp --permanent
sudo firewall-cmd --reload
注: Let's Encrypt CAから証明書を取得するには、証明書を生成するドメインをサーバーに向ける必要があります。そうでない場合は、ドメインのDNSレコードに必要な変更を加え、DNSが伝播するのを待ってから、証明書要求を再度行ってください。証明書ボットは、証明書を提供する前にドメイン認証局をチェックします。
SSL証明書を生成します。
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
生成された証明書は、/etc/letsencrypt/live/ci.example.com/
ディレクトリに格納される可能性があります。SSL証明書はとして保存されfullchain.pem
、秘密鍵はとして保存されprivkey.pem
ます。
Let's Encrypt証明書は90日で期限切れになるため、cronジョブを使用して証明書の自動更新を設定することをお勧めします。
root
ユーザーのcronジョブファイルを開きます。
sudo crontab -e
ファイルの最後に次の行を追加します。
30 5 * * * /usr/bin/certbot renew --quiet
上記のcronジョブは、毎日午前5時30分に実行されます。証明書の有効期限が切れる場合は、自動的に更新されます。
次に、Nginxのデフォルト構成ファイルを変更して、default_server
行を削除します。
sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf
Buildbot Webインターフェース用の新しい構成ファイルを作成します。
sudo nano /etc/nginx/conf.d/buildbot.conf
ファイルに入力します。
upstream buildbot {
server 127.0.0.1:8010;
}
server {
listen 80 default_server;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
server_name ci.example.com;
root html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
access_log /var/log/nginx/buildbot.access.log;
proxy_set_header HOST $host;
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 $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host;
location / {
proxy_pass http://buildbot;
}
location /sse/ {
proxy_buffering off;
proxy_pass http://buildbot/sse/;
}
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://buildbot/ws;
proxy_read_timeout 6000s;
}
}
新しい構成ファイルのエラーを確認します。
sudo nginx -t
次の出力が表示された場合、構成にエラーはありません。
[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
何らかのエラーを受け取った場合は、SSL証明書へのパスを再確認してください。Nginx Webサーバーを再起動して、構成の変更を実装します。
sudo systemctl restart nginx
Buildmaster構成ファイルを開きます。
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
次の行を見つけます。
c['buildbotURL'] = "http://192.168.1.1:8010/"
使用しているドメイン名に応じてURLを変更してください。
c['buildbotURL'] = "https://ci.example.com/"
Buildbotマスターサービスを再起動します。
sudo systemctl restart buildbot
これで、Buildbotダッシュボードにアクセスできますhttps://ci.example.com
。Buildbotへの接続がSSLで保護されていることがわかります。
管理者の資格情報を使用してログインし、最初のパイプラインを追加して、アプリケーションの構築を開始します。
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。
サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。
CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。
Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。
FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。
Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。
ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。