CentOS 7にApacheをインストールする方法
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
継続的インテグレーションは、開発者が1日に何度も頻繁に変更されたコードを共有リポジトリにマージできるDevOpsソフトウェア開発プラクティスです。マージのたびに、コードの問題を検出するために自動ビルドとテストが実行されます。これにより、開発者はエラーをすばやく見つけて解決し、ソフトウェアの品質を向上させ、ソフトウェアを継続的に提供できます。Concourseとの間で切り替えを行うと、すべての構成がバージョン管理にチェックインできる宣言ファイルに保持されるため、非常に簡単です。また、ビルド情報をインタラクティブに表示するWebユーザーインターフェイスも提供します。
192.0.2.1
およびの ci.example.com
実際のVultrパブリックIPアドレスと実際のドメイン名をすべて置き換え てください。
How to Update Ubuntu 16.04のガイドを使用してベースシステムを更新します 。システムが更新されたら、PostgreSQLのインストールに進みます。
PostgreSQLはオブジェクトリレーショナルデータベースシステムです。ConcourseはそのパイプラインデータをPostgreSQLデータベースに保存します。PostgreSQLリポジトリを追加します。
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
PostgreSQLデータベースサーバーをインストールします。
sudo apt -y install postgresql
PostgreSQLサーバーを起動し、起動時に自動的に起動するようにします。
sudo systemctl start postgresql
sudo systemctl enable postgresql
デフォルトのPostgreSQLユーザーのパスワードを変更します。
sudo passwd postgres
PostgreSQLユーザーとしてログインします。
sudo su - postgres
Concourse CIの新しいPostgreSQLユーザーを作成します。
createuser concourse
注: データベースの認証にはデフォルトのPostgreSQLユーザーを使用できますが、本番環境のセットアップではConcourseデータベースの認証に専用ユーザーを使用することをお勧めします。
PostgreSQLは、データベースでクエリを実行するためのシェルを提供します。PostgreSQLシェルに切り替えます。
psql
新しく作成したConcourseデータベースユーザーのパスワードを設定します。
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
重要: 強力なパスワードに置き換え DBPassword
てください。チュートリアルの後半で必要になるため、パスワードを書き留めておきます。
Concourseの新しいデータベースを作成します。
CREATE DATABASE concourse OWNER concourse;
psql
シェルを終了し ます。
\q
現在のpostgres
ユーザーからsudoユーザーに切り替えます。
exit
Concourse実行可能ファイルの最新バージョンをダウンロードして保存し、 /usr/bin
直接実行できるようにします。ConcourseおよびFlyバイナリの最新バージョンは、Concourseダウンロードページから入手 できます。 新しいリリースは非常に頻繁です。 以下のリンクを最新バージョンの新しいリンクに置き換えます。
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
同様に、最新バージョンのfly実行可能ファイルをダウンロードして、に保存し /usr/bin
ます。
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Flyは、Concourse CIのATC APIへの接続に使用されるコマンドラインインターフェースです。Flyは、Linux、Windows、MacOSなどの複数のプラットフォームで利用できます。
ダウンロードconcourse
したfly
バイナリと バイナリに実行権限を割り当てます 。
sudo chmod +x /usr/bin/concourse /usr/bin/fly
バージョンを確認して、コンコースとフライが正しく動作しているかどうかを確認します。
concourse -version
fly -version
RSAキーペアは、コンコースのコンポーネント間の通信を暗号化する方法を提供します。
Concourseを機能させるには、少なくとも3組のキーを生成する必要があります。セッションデータを暗号化するには、を生成し session_signing_key
ます。このキーは、TSAがATCに対して行う要求に署名するためにも使用されます。TSA SSHサーバーを保護するには、を生成し tsa_host_key
ます。最後に、worker_key
ワーカーごとにを生成し ます。
Concourse CIに関連するキーと設定を保存するための新しいディレクトリを作成します。
sudo mkdir /opt/concourse
必要なキーを生成します。
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
内容をauthorized_worker_keys
ファイルにコピーして、ワーカーの公開鍵を承認し ます。
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourseは、開始する必要がある2つの別々のコンポーネントを提供します:Webとワーカーです。Concourse Webを開始します。
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
basic-auth
必要に応じて、のユーザー名とパスワードを変更します 。キーファイルへのパスが正しいことを確認し、PostgreSQLデータベース構成でユーザー名とパスワードの正しい値が指定されていることを確認してください。
注:ATCはデフォルトポートをリッスンし、 8080
TSAはポートをリッスンします 2222
。認証が--no-really-i-dont-want-any-auth
不要な場合は、基本認証オプションを削除してからオプションを渡し ます。
Webサーバーが起動すると、次の出力が表示されます。
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
まだいくつかセットアップする必要があるので、今のところサーバーを停止します。
Concourse CIワーカーを開始します。
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
上記のコマンドは、TSAがlocalhostで実行されていて、デフォルトのポートをリッスンしていると想定しています 2222
。
上記のコマンドを使用してConcourse Webとワーカーを簡単に起動できますが、サーバーの管理にはSystemdを使用することをお勧めします。
Systemdサービスを使用してアプリケーションを管理することで、障害発生時および起動時にアプリケーションが自動的に開始されます。Concourseサーバーは設定ファイルからデータを取得しませんが、環境変数からデータにアクセスできます。グローバル環境変数を設定する代わりに、環境変数を格納する新しいファイルを作成し、Systemdサービスを使用して変数をConcourse CIに渡します。
Concourse Webの新しい環境ファイルを作成します。
sudo nano /opt/concourse/web.env
ファイルに入力します。
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
BASIC_AUTH
必要に応じて、のユーザー名とパスワードを変更します 。キーファイルへのパスが正しいことを確認し、PostgreSQLデータベース構成でユーザー名とパスワードの正しい値が指定されていることを確認してください。
同様に、ワーカーの環境ファイルを作成します。
sudo nano /opt/concourse/worker.env
ファイルに入力します。
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
環境ファイルにはユーザー名とパスワードが含まれているため、他のユーザーがアクセスできないようにアクセス許可を変更します。
sudo chmod 600 /opt/concourse/*.env
次に、ConcourseがWeb環境を実行するための新しいユーザーを作成します。これにより、Webサーバーが隔離された環境で確実に実行されます。
sudo useradd concourse
コンコースのCIファイルのディレクトリに対するコンコースユーザーの所有権を付与します。
sudo chown -R concourse:concourse /opt/concourse
Concourse Webサービス用の新しいsystemdサービスファイルを作成します。
sudo nano /etc/systemd/system/concourse-web.service
ファイルに入力します。
[Unit]
Description=Concourse CI web server
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
ファイルを保存して閉じます。コンコースワーカーサービスの新しいサービスファイルを作成します。
sudo nano /etc/systemd/system/concourse-worker.service
ファイルに入力します。
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
Webサービスとワーカーサービスを直接開始できるようになりました。
sudo systemctl start concourse-web concourse-worker
ワーカーとWebプロセスが起動時に自動的に開始するようにするには、次のコマンドを実行します。
sudo systemctl enable concourse-worker concourse-web
サービスのステータスを確認するには、次のコマンドを実行します。
sudo systemctl status concourse-worker concourse-web
サービスが開始されていない場合、または FAILED
状態にある場合は、/tmp
ディレクトリからキャッシュを削除し ます。
sudo rm -rf /tmp/*
サービスを再起動します。
sudo systemctl restart concourse-worker concourse-web
今回はサービスが正しく開始されていることに注意してください。サービスのステータスを確認したときの出力は、次のようになります。
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
サーバーが起動すると、Concourse CIのWebインターフェースhttp://192.0.2.1:8080
に任意のブラウザーでからアクセスできます 。環境ファイルで提供されているユーザー名とパスワードを使用してログインします。
Flyを使用してサーバーに接続するには、次のコマンドを実行します。
fly -t my-ci login -c http://192.0.2.1:8080
上記のコマンドは、サーバーへの最初のログインに使用されます。 -t
ターゲット名を提供するために使用されます。my-ci
目的のターゲット名に置き換え ます。上記のコマンドは、デフォルトのチームにログインします main
。環境ファイルで提供されたユーザー名とパスワードを要求します。
出力は次のようになります。
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
ターゲットログインは1日間保存されます。その後、有効期限が切れます。
すぐにログアウトします。
fly -t my-ci logout
Flyは、ネットワークの外側のサーバーへのログインに使用できますが、サーバーにパブリックIPアドレスがあり、ネットワークの外側からアクセスできる場合のみです。WindowsまたはMacOSバイナリは、ダウンロードサイトまたはサーバーのWeb UIからダウンロードできます。
ログイン、およびWeb UIを介してConcourseサーバーに送信されるその他の情報は保護されません。接続は暗号化されていません。Nginxリバースプロキシは、Let's Encryptの無料SSLを使用して設定できます。
Nginxをインストールします。
sudo apt -y install nginx
Nginxを起動し、起動時に自動的に起動するようにします。
sudo systemctl start nginx
sudo systemctl enable nginx
Certbotリポジトリを追加します。
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Let's Encrypt CAのクライアントアプリケーションであるCertbotをインストールします。
sudo apt -y install certbot
注:Let's Encrypt CAから証明書を取得するには、証明書を生成するドメインをサーバーに向ける必要があります。そうでない場合は、ドメインのDNSレコードに必要な変更を加え、DNSが伝播するのを待ってから、証明書要求を再度行ってください。証明書ボットは、証明書を提供する前にドメイン認証局をチェックします。
SSL証明書を生成します。
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
生成された証明書は、/etc/letsencrypt/live/ci.example.com/
ディレクトリに格納される可能性があります 。SSL証明書はとして保存され fullchain.pem
、秘密鍵はとして保存され privkey.pem
ます。
証明書を暗号化しましょう90日で期限が切れますので、cronjobsを使用して証明書の自動更新を設定することをお勧めします。Cronは、定期的なタスクを実行するために使用されるシステムサービスです。
cronジョブファイルを開きます。
sudo crontab -e
ファイルの最後に次の行を追加します。
30 5 * * * /usr/bin/certbot renew --quiet
上記のcronジョブは、毎日5:30 AMに実行されます。証明書の有効期限が切れる場合、証明書は自動的に更新されます。
新しい仮想ホストを作成します。
sudo nano /etc/nginx/sites-available/concourse
ファイルに入力します。
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
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_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
注: 実際のドメインに置き換え てください。ci.example.com
構成ファイルをアクティブにします。
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
コンコースWeb用に作成された環境ファイルを編集します。
sudo nano /opt/concourse/web.env
の値を変更し CONCOURSE_EXTERNAL_URL
、ファイルの最後に2行追加します。
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
ファイルを保存して、Concourse Web、Worker、およびNginxを再起動します。
sudo systemctl restart concourse-worker concourse-web nginx
ブラウザとの間で送受信されるすべてのデータは、SSL暗号化で保護されています。
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の未来は、日々成長を続けています。