在Ubuntu 16.04上使用Ansible自动化部署PHP应用程序

2020年12月29日17:22:50 发表评论 54 次浏览

介绍

对于那些发现自己一遍又一遍执行相同任务的系统管理员来说, Ansible是一个出色的工具。本教程将逐步介绍使用Ansible将基本PHP应用程序部署到目标服务器的过程。

要求

  • 一台运行Linux(Ubuntu 16.04)的Cloud Server用作构建服务器, 并已安装并运行Ansible。该服务器是本教程文件的存储位置, 以及发出命令的位置。
  • 一台或多台运行Linux(Ubuntu 16.04)的Cloud Server作为目标服务器。 PHP应用程序将部署在此服务器上。
  • 构建服务器上的Ansible主机文件, 配置为包括目标服务器的IP地址。
  • 设置SSH密钥, 以允许构建服务器无需密码即可SSH到目标服务器。
  • 在目标服务器(版本5.4或更高版本)上安装和配置了PHP

使用命令的PHP -V检查你的PHP版本:

[user@localhost ~]# php -v
PHP 5.4.16 (cli) (built: Nov  6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

有关设置Ansible, 向Ansible主机文件添加IP地址以及设置SSH密钥以允许无密码登录的更多信息, 请参阅本文。在Ubuntu 16.04上设置Ansible.

设置文件结构

在本教程中, 我们将部署一个简单的" Hello, World!"。使用适用于PHP的无脂肪框架的应用程序。有关使用无脂肪框架的更多信息, 请参见我们的文章安装和使用无脂肪框架的PHP.

首先在构建服务器上创建文件结构。移至主目录:

cd ~

为Ansible剧本创建目录:

mkdir fatfree

移至该目录:

cd fatfree

创建Ansible剧本, 然后主机文件, 我们稍后将对其进行编辑:

touch playbook.yml
touch hosts

创建一个角色目录内fatfree-helloworld目录:

mkdir roles

移至该目录:

cd roles

为每个不同的命令组创建一个角色是Ansible的"最佳实践"。使用Ansible的反星系命令为每个角色创建预设文件结构:

ansible-galaxy init server 
ansible-galaxy init install

更新剧本和主机文件

移至存储剧本的目录:

cd ~/fatfree/

打开主机用于编辑的文件:

nano hosts

添加[你好, 世界]组和目标服务器的IP地址:

[helloworld]
192.168.0.2

保存并退出文件。

打开playbook.yml用于编辑的文件:

nano playbook.yml

将以下内容添加到此文件:

- hosts: helloworld

  roles:
    - server
    - install

这告诉Ansible期望两组命令(角色):服务器和安装.

保存并退出文件。

测试Ansible连接到目标服务器的能力:

ansible-playbook playbook.yml -i hosts -u root -K

输入构建服务器的sudo密码。如果一切正常, 服务器将响应:

PLAY [helloworld] **************************************************************

TASK [setup] *******************************************************************
ok: [192.168.0.2]

PLAY RECAP *********************************************************************
192.168.0.2              : ok=1    changed=0    unreachable=0    failed=0

设置角色

服务器角色

我们将使用服务器角色以更新目标服务器上的软件包。编辑服务器角色文件:

nano ~/fatfree/roles/server/tasks/main.yml

确保离开第一行---到位。将以下内容添加到文件中, 以便文件总共读取:

---
- name: Update apt cache
  apt: update_cache=yes cache_valid_time=3600
  sudo: yes

保存并退出文件。

安装角色

的安装角色将用于安装无脂肪框架并复制示例" Hello, World!"。脚本。编辑安装角色文件:

nano ~/fatfree/roles/install/tasks/main.yml

确保离开第一行---到位。将以下内容添加到文件中, 以便文件总共读取:

---
- name: Download the install files
  get_url: url='https://github.com/bcosca/fatfree/archive/master.zip' dest='/var/www/html/master.zip'
  register: result

- unarchive:
    src: /var/www/html/master.zip
    dest: /var/www/html/
    remote_src: True

- copy:
    src: ~/fatfree/roles/install/files/index.php
    dest: /var/www/html/index.php

保存并退出文件。

的反星系命令创建了一个档案目录中安装角色目录。这是我们将放置index.php文件, 我们将其复制到目标服务器。

创建index.php文件并打开以进行编辑:

sudo nano ~/fatfree/roles/install/files/index.php

将以下内容添加到文件中:

<?php
$f3 = require('fatfree-master/lib/base.php');
$f3->route('GET /', function() {
        echo 'Hello, world!';
    }
);
$f3->run();
?>

保存并退出文件。

运行剧本

现在该看整个过程了。移至该剧本的存储目录:

cd ~/fatfree

使用以下命令运行剧本:

ansible-playbook playbook.yml -i hosts -u root -K

切换到浏览器并访问你域的根URL(http://example.com)。如果正确安装了Fat-Free Framework, 你将看到消息"你好, 世界!"。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: