Ubuntu14.04でAnsibleを使用して高度なPHPアプリケーションをデプロイする方法
序章
このチュートリアルは、Ubuntu14.04でAnsibleを使用してPHPアプリケーションをデプロイすることに関するシリーズの2番目です。 最初のチュートリアルは、アプリケーションをデプロイするための基本的な手順をカバーしており、このチュートリアルで概説されている手順の開始点です。
このチュートリアルでは、コード展開/公開ツールをサポートするためのSSHキーの設定、システムファイアウォールの構成、データベースのプロビジョニングと構成(パスワードを含む)、およびタスクスケジューラ(cron)とキューデーモンの設定について説明します。 このチュートリアルの最後の目標は、前述の高度な構成で完全に機能するPHPアプリケーションサーバーを用意することです。
前回のチュートリアルと同様に、PHPアプリケーションの例としてLaravelフレームワークを使用します。 ただし、これらの手順は、すでに独自のフレームワークやアプリケーションを持っている場合は、他のフレームワークやアプリケーションをサポートするように簡単に変更できます。
前提条件
このチュートリアルは、シリーズの最初のチュートリアルの最後から直接続き、そのチュートリアル用に生成されたすべての構成とファイルが必要です。 そのチュートリアルをまだ完了していない場合は、このチュートリアルを続行する前に、まず完了してください。
ステップ1—アプリケーションリポジトリを切り替える
このステップでは、Gitリポジトリを少しカスタマイズされたサンプルリポジトリに更新します。
デフォルトのLaravelインストールでは、このチュートリアルで設定する高度な機能は必要ないため、既存のリポジトリを標準リポジトリから、デバッグコードが追加されたサンプルリポジトリに切り替えて、動作していることを示します。 。 使用するリポジトリはhttps://github.com/do-community/do-ansible-adv-php
にあります。
まだ行っていない場合は、前のチュートリアルのディレクトリをansible-php
に変更してください。
- cd ~/ansible-php/
既存のプレイブックを開いて編集します。
- nano php.yml
「Gitリポジトリのクローン作成」タスクを見つけて更新すると、次のようになります。
- name: Clone git repository
git: >
dest=/var/www/laravel
repo=https://github.com/do-community/do-ansible-adv-php
update=yes
version=example
sudo: yes
sudo_user: www-data
register: cloned
プレイブックを保存して実行します。
- ansible-playbook php.yml --ask-sudo-pass
実行が終了したら、Webブラウザでサーバーにアクセスします(つまり、 http://your_server_ip/
)。 「ドライバーが見つかりませんでした」というメッセージが表示されます。
これは、デフォルトのリポジトリをサンプルリポジトリに正常にスワップアウトしたが、アプリケーションがデータベースに接続できないことを意味します。 これは私たちがここで見ることを期待しているものであり、チュートリアルの後半でデータベースをインストールしてセットアップします。
ステップ2—展開用のSSHキーの設定
このステップでは、アプリケーションコード展開スクリプトに使用できるSSHキーを設定します。
Ansibleは構成の維持とサーバーとアプリケーションのセットアップに最適ですが、EnvoyやRocketeerなどのツールは、コードの変更をサーバーにプッシュしてアプリケーションコマンドをリモートで実行するためによく使用されます。 これらのツールのほとんどは、アプリケーションのインストールに直接アクセスできるSSH接続を必要とします。 この場合、これはwww-data
ユーザーのSSHキーを構成する必要があることを意味します。
コードをプッシュするユーザーの公開鍵ファイルが必要になります。 このファイルは通常、~/.ssh/id_rsa.pub
にあります。 そのファイルをansible-php
ディレクトリにコピーします。
- cp ~/.ssh/id_rsa.pub ~/ansible-php/deploykey.pub
Ansible authorized_key
モジュールを使用して、公開鍵を/var/www/.ssh/authorized_keys
内にインストールできます。これにより、デプロイメントツールがアプリケーションに接続してアクセスできるようになります。 構成では、ルックアップを使用してキーがどこにあるかを知るだけでよく、ユーザーはキーをインストールする必要があります(この場合はwww-data
)。
- name: Copy public key into /var/www
authorized_key: user=www-data key="{{ lookup('file', 'deploykey.pub') }}"
また、実際にログインできるように、www-data
ユーザーのシェルを設定する必要があります。 それ以外の場合、SSHは接続を許可しますが、ユーザーにシェルは表示されません。 これは、user
モジュールを使用し、シェルを/bin/bash
(またはお好みのシェル)に設定することで実行できます。
- name: Set www-data user shell
user: name=www-data shell=/bin/bash
次に、編集用のプレイブックを開いて、新しいタスクを追加します。
- nano php.yml
上記のタスクをphp.yml
プレイブックに追加します。 ファイルの終わりは次のように一致する必要があります。 追加は赤で強調表示されます。
. . .
- name: Configure nginx
template: src=nginx.conf dest=/etc/nginx/sites-available/default
notify:
- restart php5-fpm
- restart nginx
- name: Copy public key into /var/www
authorized_key: user=www-data key="{{ lookup('file', 'deploykey.pub') }}"
- name: Set www-data user shell
user: name=www-data shell=/bin/bash
handlers:
. . .
プレイブックを保存して実行します。
- ansible-playbook php.yml --ask-sudo-pass
Ansibleが終了すると、www-data
ユーザーを使用してSSHで接続できるようになります。
- ssh www-data@your_server_ip
ログインに成功すると、機能します。 logout
と入力するか、 CTRL + D を押すと、ログアウトできます。
このチュートリアルの他の手順でこの接続を使用する必要はありませんが、上記のように他のツールを設定する場合や、必要に応じて一般的なデバッグやアプリケーションのメンテナンスを行う場合に役立ちます。
ステップ3—ファイアウォールの構成
このステップでは、HTTPとSSHの接続のみを許可するようにサーバーのファイアウォールを構成します。
Ubuntu 14.04にはデフォルトでUFW( Uncomplicated Firewall )がインストールされており、Ansibleはufw
モジュールでサポートしています。 多数の強力な機能があり、可能な限りシンプルになるように設計されています。 いくつかのポートを開くだけでよい自己完結型のWebサーバーに最適です。 この例では、ポート80(HTTP)とポート22(SSH)を開いておく必要があります。 HTTPS用のポート443も必要になる場合があります。
ufw
モジュールには、さまざまなタスクを実行するさまざまなオプションがあります。 実行する必要のあるさまざまなタスクは次のとおりです。
-
デフォルトでは、UFWを有効にして、すべての着信トラフィックを拒否します。
-
SSHポートを開きますが、ブルートフォース攻撃を防ぐためにレート制限します。
-
HTTPポートを開きます。
これは、それぞれ次のタスクで実行できます。
- name: Enable UFW
ufw: direction=incoming policy=deny state=enabled
- name: UFW limit SSH
ufw: rule=limit port=ssh
- name: UFW open HTTP
ufw: rule=allow port=http
前と同じように、php.yml
ファイルを開いて編集します。
- nano php.yml
上記のタスクをプレイブックに追加します。 ファイルの終わりは次のように一致する必要があります。
. . .
- name: Copy public key into /var/www
authorized_key: user=www-data key="{{ lookup('file', 'deploykey.pub') }}"
- name: Set www-data user shell
user: name=www-data shell=/bin/bash
- name: Enable UFW
ufw: direction=incoming policy=deny state=enabled
- name: UFW limit SSH
ufw: rule=limit port=ssh
- name: UFW open HTTP
ufw: rule=allow port=http
handlers:
. . .
プレイブックを保存して実行します。
- ansible-playbook php.yml --ask-sudo-pass
それが正常に完了しても、SSH(Ansibleを使用)またはHTTP経由でサーバーに接続できるはずです。 他のポートはブロックされます。
次のコマンドを実行することにより、いつでもUFWのステータスを確認できます。
- ansible php --sudo --ask-sudo-pass -m shell -a "ufw status verbose"
上記のAnsibleコマンドの内訳:
ansible
:プレイブックなしで生のAnsibleタスクを実行します。php
:このグループのホストに対してタスクを実行します。--sudo
:コマンドをsudo
として実行します。--ask-sudo-pass
:sudo
パスワードの入力を求めます。-m shell
:shell
モジュールを実行します。-a "ufw status verbose"
:モジュールに渡されるオプション。 これはshell
コマンドであるため、rawコマンドを渡します(つまり、ufw status verbose
)key=value
オプションなしでまっすぐに。
このようなものが返されるはずです。
your_server_ip | success | rc=0 >>
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22 LIMIT IN Anywhere
80 ALLOW IN Anywhere
22 (v6) LIMIT IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
ステップ4—MySQLパッケージのインストール
このステップでは、アプリケーションが使用するMySQLデータベースをセットアップします。
最初のステップは、プレイブックの上部にあるパッケージのインストールタスクに必要なパッケージを追加するだけで、MySQLがサーバーにインストールされていることを確認することです。 必要なパッケージは、mysql-server
、mysql-client
、およびphp5-mysql
です。 AnsibleがMySQLと通信できるように、python-mysqldb
も必要になります。
パッケージを追加しているので、nginx
とphp5-fpm
を再起動して、新しいパッケージがアプリケーションで使用できるようにする必要があります。 この場合、データベースに接続できるように、MySQLをPHPで使用できるようにする必要があります。
Ansibleの素晴らしい点の1つは、任意のタスクを変更してプレイブックを再実行すると、変更が適用されることです。 これには、apt
タスクの場合と同様にオプションのリストが含まれます。
前と同じように、php.yml
ファイルを開いて編集します。
- nano php.yml
install packages
タスクを見つけて、上記のパッケージを含むように更新します。
. . .
- name: install packages
apt: name={{ item }} update_cache=yes state=latest
with_items:
- git
- mcrypt
- nginx
- php5-cli
- php5-curl
- php5-fpm
- php5-intl
- php5-json
- php5-mcrypt
- php5-sqlite
- sqlite3
- mysql-server
- mysql-client
- php5-mysql
- python-mysqldb
notify:
- restart php5-fpm
- restart nginx
. . .
プレイブックを保存して実行します。
- ansible-playbook php.yml --ask-sudo-pass
ステップ5—MySQLデータベースを設定する
このステップでは、アプリケーション用のMySQLデータベースを作成します。
Ansibleは、mysql_
で始まるモジュールを使用してMySQLと直接通信できます(例: mysql_db
、mysql_user
)。 mysql_db
モジュールは、特定の名前のデータベースが存在することを確認する方法を提供するため、このようなタスクを使用してデータベースを作成できます。
- name: Create MySQL DB
mysql_db: name=laravel state=present
また、アプリケーションがデータベースに接続できるようにするには、既知のパスワードを持つ有効なユーザーアカウントが必要です。 これに対する1つのアプローチは、パスワードをローカルで生成してAnsibleプレイブックに保存することですが、これは安全ではなく、より良い方法があります。
サーバー自体でAnsibleを使用してパスワードを生成し、必要な場所で直接使用します。 パスワードを生成するには、makepasswd
コマンドラインツールを使用して、32文字のパスワードを要求します。 makepasswd
はUbuntuのデフォルトではないため、パッケージリストにも追加する必要があります。
また、コマンドの出力を記憶するようにAnsibleに指示します(つまり、 パスワード)なので、後でプレイブックで使用できます。 ただし、Ansibleはshell
コマンドを既に実行しているかどうかを認識しないため、そのコマンドを実行するときにファイルも作成します。 Ansibleはファイルが存在するかどうかをチェックし、存在する場合は、コマンドがすでに実行されていると見なし、再度実行することはありません。
タスクは次のようになります。
- name: Generate DB password
shell: makepasswd --chars=32
args:
creates: /var/www/laravel/.dbpw
register: dbpwd
次に、指定したパスワードを使用して実際のMySQLデータベースユーザーを作成する必要があります。 これはmysql_user
モジュールを使用して行われ、パスワード生成タスク中に定義した変数でstdout
オプションを使用して、次のようにシェルコマンドの生の出力を取得できます。[X195X ]。
mysql_user
コマンドは、ユーザーの名前と必要な特権を受け入れます。 この例では、laravel
というユーザーを作成し、laravel
テーブルに対する完全な特権をユーザーに付与します。 また、dbpwd
変数のがに変更された場合にのみ実行するようにタスクに指示する必要があります。これは、パスワード生成タスクが実行された場合にのみ行われます。
タスクは次のようになります。
- name: Create MySQL User
mysql_user: name=laravel password={{ dbpwd.stdout }} priv=laravel.*:ALL state=present
when: dbpwd.changed
これをまとめて、php.yml
ファイルを開いて編集し、上記のタスクを追加できるようにします。
- nano php.yml
まず、install packages
タスクを見つけて、makepasswd
パッケージを含むように更新します。
. . .
- name: install packages
apt: name={{ item }} update_cache=yes state=latest
with_items:
- git
- mcrypt
- nginx
- php5-cli
- php5-curl
- php5-fpm
- php5-intl
- php5-json
- php5-mcrypt
- php5-sqlite
- sqlite3
- mysql-server
- mysql-client
- php5-mysql
- python-mysqldb
- makepasswd
notify:
- restart php5-fpm
- restart nginx
. . .
次に、パスワードの生成、MySQLデータベースの作成、およびユーザー作成のタスクを下部に追加します。
. . .
- name: UFW limit SSH
ufw: rule=limit port=ssh
- name: UFW open HTTP
ufw: rule=allow port=http
- name: Create MySQL DB
mysql_db: name=laravel state=present
- name: Generate DB password
shell: makepasswd --chars=32
args:
creates: /var/www/laravel/.dbpw
register: dbpwd
- name: Create MySQL User
mysql_user: name=laravel password={{ dbpwd.stdout }} priv=laravel.*:ALL state=present
when: dbpwd.changed
handlers:
. . .
まだプレイブックを実行しないでください! MySQLユーザーとデータベースを作成しましたが、パスワードを使用して何もしていないことに気付いたかもしれません。 これについては、次のステップで説明します。 Ansible内でshell
タスクを使用する場合、手動でログインして状態をリセットする必要がないように、タスクを実行する前に、タスクの出力/結果を処理するワークフロー全体を完了することを忘れないでください。
ステップ6—データベース用のPHPアプリケーションの構成
このステップでは、MySQLデータベースのパスワードをアプリケーションの.env
ファイルに保存します。
前回のチュートリアルと同様に、.env
ファイルを更新して、新しく作成したデータベースの資格情報を含めます。 デフォルトでは、Laravelの.env
ファイルには次の行が含まれています。
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_HOST
行はそのままにしておくことができますが、次のタスクを使用して他の3つを更新します。これは、前のチュートリアルでAPP_ENV
とAPP_DEBUG
。
- name: set DB_DATABASE
lineinfile: dest=/var/www/laravel/.env regexp='^DB_DATABASE=' line=DB_DATABASE=laravel
- name: set DB_USERNAME
lineinfile: dest=/var/www/laravel/.env regexp='^DB_USERNAME=' line=DB_USERNAME=laravel
- name: set DB_PASSWORD
lineinfile: dest=/var/www/laravel/.env regexp='^DB_PASSWORD=' line=DB_PASSWORD={{ dbpwd.stdout }}
when: dbpwd.changed
MySQLユーザー作成タスクで行ったように、生成されたパスワード変数(dbpwd.stdout
)を使用してファイルにパスワードを入力し、when
オプションを追加して実行のみを保証しますdbpwd
が変更されたとき。
ここで、パスワード生成タスクを追加する前に.env
ファイルがすでに存在していたため、パスワードを別のファイルに保存する必要があります。 生成タスクは、そのファイルの存在を探すことができます(これはタスク内ですでに設定されています)。 また、sudo
およびsudo_user
オプションを使用して、www-data
ユーザーとしてファイルを作成するようにAnsibleに指示します。
- name: Save dbpw file
lineinfile: dest=/var/www/laravel/.dbpw line="{{ dbpwd.stdout }}" create=yes state=present
sudo: yes
sudo_user: www-data
when: dbpwd.changed
php.yml
ファイルを開いて編集します。
- nano php.yml
上記のタスクをプレイブックに追加します。 ファイルの終わりは次のように一致する必要があります。
. . .
- name: Create MySQL User
mysql_user: name=laravel password={{ dbpwd.stdout }} priv=laravel.*:ALL state=present
when: dbpwd.changed
- name: set DB_DATABASE
lineinfile: dest=/var/www/laravel/.env regexp='^DB_DATABASE=' line=DB_DATABASE=laravel
- name: set DB_USERNAME
lineinfile: dest=/var/www/laravel/.env regexp='^DB_USERNAME=' line=DB_USERNAME=laravel
- name: set DB_PASSWORD
lineinfile: dest=/var/www/laravel/.env regexp='^DB_PASSWORD=' line=DB_PASSWORD={{ dbpwd.stdout }}
when: dbpwd.changed
- name: Save dbpw file
lineinfile: dest=/var/www/laravel/.dbpw line="{{ dbpwd.stdout }}" create=yes state=present
sudo: yes
sudo_user: www-data
when: dbpwd.changed
handlers:
. . .
繰り返しますが、まだプレイブックを実行しないでください!プレイブックを実行する前に、もう1つのステップを完了する必要があります。
ステップ7—データベースの移行
このステップでは、データベース移行を実行してデータベーステーブルを設定します。
Laravelでは、これはmigrate
コマンドを実行することによって行われます(すなわち php artisan migrate --force
)Laravelディレクトリ内。 production
環境で必要なため、--force
フラグを追加したことに注意してください。
これを実行するためのAnsibleタスクは次のようになります。
- name: Run artisan migrate
shell: php /var/www/laravel/artisan migrate --force
sudo: yes
sudo_user: www-data
when: dbpwd.changed
次に、プレイブックを更新します。 php.yml
ファイルを開いて編集します。
- nano php.yml
上記のタスクをプレイブックに追加します。 ファイルの終わりは次のように一致する必要があります。
. . .
- name: Save dbpw file
lineinfile: dest=/var/www/laravel/.dbpw line="{{ dbpwd.stdout }}" create=yes state=present
sudo: yes
sudo_user: www-data
when: dbpwd.changed
- name: Run artisan migrate
shell: php /var/www/laravel/artisan migrate --force
sudo: yes
sudo_user: www-data
when: dbpwd.changed
handlers:
. . .
最後に、プレイブックを保存して実行できます。
- ansible-playbook php.yml --ask-sudo-pass
それが実行を終了したら、ブラウザでページを更新すると、次のメッセージが表示されます。
Queue: NO
Cron: NO
これは、データベースが正しくセットアップされ、期待どおりに機能していることを意味しますが、cronタスクまたはキューデーモンはまだセットアップされていません。
ステップ8—cronタスクの構成
このステップでは、構成が必要なcronタスクを設定します。
cronタスクは、設定されたスケジュールで実行されるコマンドであり、メンテナンスタスクの実行や電子メールアクティビティの更新の送信など、アプリケーションの任意の数のタスクを実行するために使用できます。基本的に、ユーザーが手動で介入することなく定期的に実行する必要があります。 cronタスクは、毎分、または必要に応じてまれに実行できます。
Laravelには、デフォルトでschedule:run
と呼ばれるArtisanコマンドが付属しています。このコマンドは、毎分実行されるように設計されており、アプリケーション内で定義されたスケジュールされたタスクを実行します。 これは、アプリケーションがこの機能を利用している場合、追加する必要があるcronタスクは1つだけであることを意味します。
Ansibleにはcron
モジュールがあり、cronを介して構成できるさまざまなオプションに直接変換されるさまざまなオプションがあります。
job
:実行するコマンド。 state=presentの場合に必要です。minute
、hour
、day
、month
、およびweekday
:分、時間、日、月、または曜日それぞれ、ジョブを実行するタイミング。special_time
(reboot
、yearly
、annually
、monthly
、weekly
、daily
、[ X77X] ):特別な時間指定のニックネーム。
デフォルトでは、毎分実行されるタスクが作成されます。これは私たちが望んでいることです。 これは、必要なタスクが次のようになることを意味します。
- name: Laravel Scheduler
cron: >
job="run-one php /var/www/laravel/artisan schedule:run 1>> /dev/null 2>&1"
state=present
user=www-data
name="php artisan schedule:run"
run-one
コマンドは、Ubuntuの小さなヘルパーであり、コマンドが1回だけ実行されるようにします。 これは、前のschedule:run
コマンドがまだ実行されている場合、それが再度実行されないことを意味します。 これは、cronタスクがループでロックされ、サーバーがリソースを使い果たすまで、時間の経過とともに同じタスクのインスタンスがますます開始される状況を回避するのに役立ちます。
前と同じように、php.yml
ファイルを開いて編集します。
- nano php.yml
上記のタスクをプレイブックに追加します。 ファイルの終わりは次のように一致する必要があります。
. . .
- name: Run artisan migrate
shell: php /var/www/laravel/artisan migrate --force
sudo: yes
sudo_user: www-data
when: dbpwd.changed
- name: Laravel Scheduler
cron: >
job="run-one php /var/www/laravel/artisan schedule:run 1>> /dev/null 2>&1"
state=present
user=www-data
name="php artisan schedule:run"
handlers:
. . .
プレイブックを保存して実行します。
- ansible-playbook php.yml --ask-sudo-pass
次に、ブラウザでページを更新します。 すぐに、次のように更新されます。
Queue: NO
Cron: YES
これは、cronがバックグラウンドで正しく機能していることを意味します。 サンプルアプリケーションの一部として、毎分実行されているcronジョブがあり、データベースのステータスエントリを更新して、アプリケーションが実行中であることを認識します。
ステップ9—キューデーモンの設定
手順8のschedule:run
Artisanコマンドと同様に、Laravelにはqueue:work --daemon
Artisanコマンドで開始できるキューワーカーも付属しています。 このステップでは、Laravelのキューデーモンワーカーを構成します。
キューワーカーは、バックグラウンドでタスクを実行するという点でcronジョブに似ています。 違いは、アプリケーションが、ユーザーによって実行されたアクションを介して、またはcronジョブを介してスケジュールされたタスクから、ジョブをキューにプッシュすることです。 キュータスクは、ワーカーによって一度に1つずつ実行され、キューで見つかったときにオンデマンドで処理されます。 キュータスクは通常、メールの送信や外部サービスへのAPI呼び出しなど、実行に時間がかかる作業に使用されます。
schedule:run
コマンドとは異なり、これは毎分実行する必要のあるコマンドではありません。 代わりに、常にバックグラウンドでデーモンとして実行する必要があります。 これを行う一般的な方法は、supervisord のようなサードパーティのパッケージを使用することですが、その方法では、システムの構成と管理の方法を理解する必要があります。 cronとrun-one
コマンドを使用して実装するもっと簡単な方法があります。
キューワーカーデーモンを起動するためのcronエントリを作成し、run-one
を使用して実行します。 これは、cronが最初に実行されたときにプロセスを開始し、それ以降のcronの実行は、ワーカーの実行中にrun-one
によって無視されることを意味します。 ワーカーが停止するとすぐに、run-one
はコマンドの再実行を許可し、キューワーカーが再開します。 これは非常にシンプルで使いやすい方法であり、別のツールを構成して使用する方法を学ぶ必要がありません。
これらすべてを念頭に置いて、キューワーカーを実行するための別のcronタスクを作成します。
- name: Laravel Queue Worker
cron: >
job="run-one php /var/www/laravel/artisan queue:work --daemon --sleep=30 --delay=60 --tries=3 1>> /dev/null 2>&1"
state=present
user=www-data
name="Laravel Queue Worker"
前と同じように、php.yml
ファイルを開いて編集します。
- nano php.yml
上記のタスクをプレイブックに追加します。 ファイルの終わりは次のように一致する必要があります。
. . .
- name: Laravel Scheduler
cron: >
job="run-one php /var/www/laravel/artisan schedule:run 1>> /dev/null 2>&1"
state=present
user=www-data
name="php artisan schedule:run"
- name: Laravel Queue Worker
cron: >
job="run-one php /var/www/laravel/artisan queue:work --daemon --sleep=30 --delay=60 --tries=3 1>> /dev/null 2>&1"
state=present
user=www-data
name="Laravel Queue Worker"
handlers:
. . .
プレイブックを保存して実行します。
- ansible-playbook php.yml --ask-sudo-pass
以前と同様に、ブラウザでページを更新します。 1分後、次のように更新されます。
Queue: YES
Cron: YES
これは、キューワーカーがバックグラウンドで正しく機能していることを意味します。 最後のステップで開始したcronジョブは、ジョブをキューにプッシュします。 このジョブは、実行時にデータベースを更新して、データベースが機能していることを示します。
これで、機能するcronジョブとキューワーカーを含む実際のLaravelアプリケーションの例ができました。
結論
このチュートリアルでは、PHPアプリケーションのデプロイにAnsibleを使用する際のより高度なトピックのいくつかについて説明しました。 使用するすべてのタスクは、ほとんどのPHPアプリケーションに合わせて簡単に変更でき(特定の要件に応じて)、アプリケーション用に独自のプレイブックを設定するための良い出発点になるはずです。
このチュートリアルの一部として(www-data
ユーザーログインの確認を除いて)単一のSSHコマンドを使用しておらず、MySQLユーザーパスワードを含むすべてが自動的に設定されています。 このチュートリアルに従うと、アプリケーションの準備が整い、コードの更新をプッシュするツールがサポートされます。