2分钟能干点啥?足够在Linode上从零搭建WP站!

云计算
Cloud-init是一个广泛使用的开源软件包,用于在云计算环境中初始化和配置云实例(虚拟机或实例)。它常用于基础架构即服务(IaaS)和云平台,如Akamai Connected Cloud、Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure和其他各种云提供商。​

WordPress是个很著名的内容管理平台(CMS),因为操作简单功能全面,从个人博客到大型企业官网,很多网站背后可能都是由它来支撑的。当你需要从零开始搭建一个WP站时,MySQL、Apache、PHP、WordPress各种安装和配置,你觉得自己能在多长时间内完成?

延伸阅读,点击链接了解 Akamai Cloud Computing

如果选择Linode云平台,难么在Cloud-init的帮助下,只需要1:58。

那么Cloud-init又是什么?

Cloud-init是一个广泛使用的开源软件包,用于在云计算环境中初始化和配置云实例(虚拟机或实例)。它常用于基础架构即服务(IaaS)和云平台,如Akamai Connected Cloud、Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure和其他各种云提供商。

Cloud-init允许我们在实例加载时或启动时定义并执行自定义脚本和配置。它通常会在云实例调配时提供与云实例有关的元数据。该元数据可包括用户数据,其中就包含脚本或YAML文件形式的云启动配置。

Cloud-init的主要功能和使用案例包括:

  • 操作系统配置:可以使用Cloud-init执行各种任务,如设置主机名、配置网络接口、设置用户等。
  • 软件包安装:Cloud-init可用于在新配置的实例上安装软件包、库或应用程序。
  • 用户数据:可以向实例传递特定用户的数据,这些数据可用于在启动时自定义实例行为。例如,可以用它来配置软件、安装附加软件包或运行脚本。
  • 安全性:可以使用Cloud-init设置SSH密钥以实现安全访问、设置防火墙规则或执行其他与安全相关的任务。
  • 自定义:Cloud-init允许我们定义特定实例的自定义功能,从而更轻松地自动设置和配置实例。
  • 与云提供商无关:虽然Cloud-init常用于各种云提供商,但它与特定云平台无关,可以在许多不同环境中使用。
  • 灵活性:能够以脚本或YAML文件的形式提供Cloud-init配置,从而灵活定义初始化和配置流程。

好吧,但我们该如何使用呢?其实很简单。在这个例子中,我们安装了5个软件包,并运行一些命令来下载WordPress、创建DB用户、准备wp-config文件等。

请确保使用更安全的密码和/或通过更妥善的方式将凭证传送到虚拟机。纯文本密码仅用于演示目的,在现实世界中,绝对不要这样做!

登录Linode云管理器界面,点击“Create Linode”按钮。

确保选择了可支持Cloud-init的发行版!这样的发行版名称旁会有一个“文件”图标。

下一步(除了选择区域、实例类型、密钥和密码外)是展开“User Data”部分并粘贴以下代码,然后点击“Deploy”。

#cloud-config
packages:
 - apache2
 - mysql-server
 - php8.1
 - libapache2-mod-php8.1
 - php8.1-mysql
runcmd:
 - mkdir -p /var/www/html # Create the /var/www/html directory if it doesn't exist
 - rm -f /var/www/html/index.html # Remove the default index.html file
 - [wget, https://wordpress.org/latest.tar.gz, -O, /tmp/wordpress.tar.gz]
 - [tar, -xvzf, /tmp/wordpress.tar.gz, -C, /var/www/html]
 - mv /var/www/html/wordpress/* /var/www/html/ # Move WordPress files to the root of the web directory
 - [chown, -R, www-data:www-data, /var/www/html]
 - |
 mysql -u root -e "CREATE DATABASE wordpress;"
 mysql -u root -e "CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'ComplexPassword123#';"
 mysql -u root -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';"
 mysql -u root -e "FLUSH PRIVILEGES;"
 - cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
 - sed -i 's/database_name_here/wordpress/g' /var/www/html/wp-config.php
 - sed -i 's/username_here/wordpressuser/g' /var/www/html/wp-config.php
 - sed -i 's/password_here/ComplexPassword123#/g' /var/www/html/wp-config.php
 - a2enmod php8.1 # Enable PHP module
 - systemctl restart apache2 # Restart Apache to apply the changes

打开浏览器,访问服务器的IP地址,不到2分钟后,我们就会看到WordPress的“完成设置”页面。在这里我们需要指定自己的电子邮件地址、用户名和密码。

使用“metadata”块并对Cloud-init脚本进行Base64编码,就能通过Terraform实现同样的功能。

resource "linode_instance" "wordpressviacloudinit" {
 label = "Wordpress-via-cloudinit"
 image = "linode/ubuntu22.04"
 region = "us-iad"
 type = "g6-standard-1"
 authorized_keys = ["ssh-rsa AAAA...Gw== user@example.local"]
 root_pass = "terr4form-test"
 metadata {
 user_data = "I2Nsb3VkLWNvbmZpZwpwYWNrYWdlczoKICAtIGFwYWNoZTIKICAtIG15c3FsLXNlcnZlcgogIC0gcGhwOC4xCiAgLSBsaWJhcGFjaGUyLW1vZC1waHA4LjEKICAtIHBocDguMS1teXNxbApydW5jbWQ6CiAgLSBta2RpciAtcCAvdmFyL3d3dy9odG1sICAjIENyZWF0ZSB0aGUgL3Zhci93d3cvaHRtbCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdAogIC0gcm0gLWYgL3Zhci93d3cvaHRtbC9pbmRleC5odG1sICAjIFJlbW92ZSB0aGUgZGVmYXVsdCBpbmRleC5odG1sIGZpbGUKICAtIFt3Z2V0LCBodHRwczovL3dvcmRwcmVzcy5vcmcvbGF0ZXN0LnRhci5neiwgLU8sIC90bXAvd29yZHByZXNzLnRhci5nel0KICAtIFt0YXIsIC14dnpmLCAvdG1wL3dvcmRwcmVzcy50YXIuZ3osIC1DLCAvdmFyL3d3dy9odG1sXQogIC0gbXYgL3Zhci93d3cvaHRtbC93b3JkcHJlc3MvKiAvdmFyL3d3dy9odG1sLyAgIyBNb3ZlIFdvcmRQcmVzcyBmaWxlcyB0byB0aGUgcm9vdCBvZiB0aGUgd2ViIGRpcmVjdG9yeQogIC0gW2Nob3duLCAtUiwgd3d3LWRhdGE6d3d3LWRhdGEsIC92YXIvd3d3L2h0bWxdCiAgLSB8CiAgICBteXNxbCAtdSByb290IC1lICJDUkVBVEUgREFUQUJBU0Ugd29yZHByZXNzOyIKICAgIG15c3FsIC11IHJvb3QgLWUgIkNSRUFURSBVU0VSICd3b3JkcHJlc3N1c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdDb21wbGV4UGFzc3dvcmQxMjMjJzsiCiAgICBteXNxbCAtdSByb290IC1lICJHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiB3b3JkcHJlc3MuKiBUTyAnd29yZHByZXNzdXNlcidAJ2xvY2FsaG9zdCc7IgogICAgbXlzcWwgLXUgcm9vdCAtZSAiRkxVU0ggUFJJVklMRUdFUzsiCiAgLSBjcCAvdmFyL3d3dy9odG1sL3dwLWNvbmZpZy1zYW1wbGUucGhwIC92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocAogIC0gc2VkIC1pICdzL2RhdGFiYXNlX25hbWVfaGVyZS93b3JkcHJlc3MvZycgL3Zhci93d3cvaHRtbC93cC1jb25maWcucGhwCiAgLSBzZWQgLWkgJ3MvdXNlcm5hbWVfaGVyZS93b3JkcHJlc3N1c2VyL2cnIC92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocAogIC0gc2VkIC1pICdzL3Bhc3N3b3JkX2hlcmUvQ29tcGxleFBhc3N3b3JkMTIzIy9nJyAvdmFyL3d3dy9odG1sL3dwLWNvbmZpZy5waHAKICAtIGEyZW5tb2QgcGhwOC4xICAjIEVuYWJsZSBQSFAgbW9kdWxlCiAgLSBzeXN0ZW1jdGwgcmVzdGFydCBhcGFjaGUyICAjIFJlc3RhcnQgQXBhY2hlIHRvIGFwcGx5IHRoZSBjaGFuZ2VzCg=="
 }
 group = "foo"
 tags = [ "foo" ]
 swap_size = 512
 private_ip = false
}

当然,我们可以用Cloud-init来做任何事,但最理想的用法是引导实例,这样我们的配置管理工具就能在Terraform创建实例后接管。

—————————————————————————————————————————————————

如您所在的企业也在考虑采购云服务或进行云迁移,

点击链接了解Akamai Linode的解决方案

责任编辑:张燕妮
相关推荐

2022-01-07 17:28:07

操作系统IO 内存

2021-05-10 15:40:11

大数据IT互联网

2021-05-17 20:13:50

数仓操作型数据库

2018-11-08 13:53:15

Flink程序环境

2015-09-18 19:38:01

BlackHatSQLChop

2021-04-02 14:24:29

智慧园区

2020-06-15 14:40:30

架构运维技术

2023-07-31 11:37:05

经营分析模型

2020-05-26 10:42:31

数据库读写分离数据库架构

2017-10-11 15:17:42

sklearn机器学习pandas

2018-07-12 16:34:45

华为

2015-09-06 09:22:24

框架搭建快速高效app

2012-02-22 15:55:48

JavaPlay Framew

2016-08-03 16:01:47

GitLinux开源

2022-09-30 15:46:26

Babel编译器插件

2021-11-02 09:20:23

区块链比特币架构

2016-12-29 10:42:30

零搭建概述标签

2021-07-07 13:47:38

OCR游戏运行图像

2012-06-28 10:26:51

Silverlight

2016-01-25 10:48:15

大数据框架HadoopSpark
点赞
收藏

51CTO技术栈公众号