首页 php教程 php手册 再Docker中架设完整的WordPress站点全攻略

再Docker中架设完整的WordPress站点全攻略

Jun 06, 2016 pm 07:50 PM
docker wordpress

这篇文章主要介绍了再Docker中架设完整的WordPress站点全攻略,Docker是当下最火爆的虚拟机类技术,需要的朋友可以参考下

1. 安装 Docker

在我们真正开始之前,我们需要确保在我们的 Linux 机器上已经安装了 Docker。我们使用的主机是 CentOS 7,因此我们用下面的命令使用 yum 管理器安装 docker。

# yum install docker

  

201572995512549.png (684×490)

# systemctl restart docker.service

2. 创建 WordPress 的 Dockerfile

我们需要创建用于自动安装 wordpress 以及其前置需求的 Dockerfile。这个 Dockerfile 将用于构建 WordPress 的安装镜像。这个 WordPress Dockerfile 会从 Docker Registry Hub 获取 CentOS 7 镜像并用最新的可用更新升级系统。然后它会安装必要的软件,例如 Nginx Web 服务器、PHP、MariaDB、Open SSH 服务器,,以及其它保证 Docker 容器正常运行不可缺少的组件。最后它会执行一个初始化 WordPress 安装的脚本。

# nano Dockerfile

然后,我们需要将下面的配置行添加到 Dockerfile中。

   

FROM centos:centos7 MAINTAINER The CentOS Project RUN yum -y update; yum clean all RUN yum -y install epel-release; yum clean all RUN yum -y install mariadb mariadb-server mariadb-client nginx php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy php-apc pwgen python-setuptools curl git tar; yum clean all ADD ./start.sh /start.sh ADD ./nginx-site.conf /nginx.conf RUN mv /nginx.conf /etc/nginx/nginx.conf RUN rm -rf /usr/share/nginx/html/* RUN /usr/bin/easy_install supervisor RUN /usr/bin/easy_install supervisor-stdout ADD ./supervisord.conf /etc/supervisord.conf RUN echo %sudo ALL=NOPASSWD: ALL >> /etc/sudoers ADD /wordpress.tar.gz RUN tar xvzf /wordpress.tar.gz RUN mv /wordpress/* /usr/share/nginx/html/. RUN chown -R apache:apache /usr/share/nginx/ RUN chmod 755 /start.sh RUN mkdir /var/run/sshd EXPOSE 80 EXPOSE 22 CMD ["/bin/bash", "/start.sh"]

201572995556444.png (684×490)

    3. 创建启动脚本

我们创建了 Dockerfile 之后,我们需要创建用于运行和配置 WordPress 安装的脚本,名称为 start.sh。它会为 WordPress 创建并配置数据库和密码。用我们喜欢的文本编辑器打开 start.sh。

# nano start.sh

打开 start.sh 之后,我们要添加下面的配置行到文件中。

 

#!/bin/bash __check() { if [ -f /usr/share/nginx/html/wp-config.php ]; then exit fi } __create_user() { # 创建用于 SSH 登录的用户 SSH_USERPASS=`pwgen -c -n -1 8` useradd -G wheel user echo user:$SSH_USERPASS | chpasswd echo ssh user password: $SSH_USERPASS } __mysql_config() { # 启用并运行 MySQL yum -y erase mariadb mariadb-server rm -rf /var/lib/mysql/ /etc/my.cnf yum -y install mariadb mariadb-server mysql_install_db chown -R mysql:mysql /var/lib/mysql /usr/bin/mysqld_safe & sleep 10 } __handle_passwords() { # 在这里我们生成随机密码(多亏了 pwgen)。前面两个用于 mysql 用户,最后一个用于 wp-config.php 的随机密钥。 WORDPRESS_DB="wordpress" MYSQL_PASSWORD=`pwgen -c -n -1 12` WORDPRESS_PASSWORD=`pwgen -c -n -1 12` # 这是在日志中显示的密码。 echo mysql root password: $MYSQL_PASSWORD echo wordpress password: $WORDPRESS_PASSWORD echo $MYSQL_PASSWORD > /mysql-root-pw.txt echo $WORDPRESS_PASSWORD > /wordpress-db-pw.txt # 这里原来是一个包括 sed、cat、pipe 和 stuff 的很长的行,但多亏了 # @djfiander 的 https://gist.github.com/djfiander/6141138 # 现在没有了 sed -e "s/database_name_here/$WORDPRESS_DB/ s/username_here/$WORDPRESS_DB/ s/password_here/$WORDPRESS_PASSWORD/ /'AUTH_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'SECURE_AUTH_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'LOGGED_IN_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'NONCE_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'AUTH_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'SECURE_AUTH_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'LOGGED_IN_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/ /'NONCE_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/" /usr/share/nginx/html/wp-config-sample.php > /usr/share/nginx/html/wp-config.php } __httpd_perms() { chown apache:apache /usr/share/nginx/html/wp-config.php } __start_mysql() { # systemctl 启动 mysqld 服务 mysqladmin -u root password $MYSQL_PASSWORD mysql -uroot -p$MYSQL_PASSWORD -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY '$WORDPRESS_PASSWORD'; FLUSH PRIVILEGES;" killall mysqld sleep 10 } __run_supervisor() { supervisord -n } # 调用所有函数 __check __create_user __mysql_config __handle_passwords __httpd_perms __start_mysql __run_supervisor

201572995630747.png (684×490)

    增加完上面的配置之后,保存并关闭文件。
4. 创建配置文件

现在,我们需要创建 Nginx Web 服务器的配置文件,命名为 nginx-site.conf。

# nano nginx-site.conf

然后,增加下面的配置信息到配置文件。

   

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP 与 Flutter 的比较:移动端开发的最佳选择 PHP 与 Flutter 的比较:移动端开发的最佳选择 May 06, 2024 pm 10:45 PM

PHP和Flutter是移动端开发的流行技术。Flutter胜在跨平台能力、性能和用户界面,适合需要高性能、跨平台和自定义UI的应用程序。PHP则适用于性能较低、不跨平台的服务器端应用程序。

pycharm如何将project打包 pycharm如何将project打包 Apr 25, 2024 am 03:54 AM

在 PyCharm 中打包项目有四种方法:打包为单独的可执行文件:导出为 EXE 单文件格式。打包为安装程序:生成 Setuptools Makefile 并构建。打包为 Docker 镜像:指定镜像名称、调整构建选项并构建。打包为容器:指定构建的镜像、调整运行时选项并启动容器。

PHP 微服务容器化的敏捷开发与运维 PHP 微服务容器化的敏捷开发与运维 May 08, 2024 pm 02:21 PM

答案:PHP微服务采用HelmCharts部署进行敏捷开发,并使用DockerContainer容器化以实现隔离和可扩展性。详细描述:使用HelmCharts自动部署PHP微服务,实现敏捷开发。Docker镜像允许对微服务进行快速迭代和版本控制。DockerContainer标准隔离微服务,而Kubernetes负责管理容器的可用性和可扩展性。利用Prometheus和Grafana监控微服务性能和健康状况,并创建告警和自动修复机制。

Pi Node教学:什么是Pi节点?如何安装和设定Pi Node? Pi Node教学:什么是Pi节点?如何安装和设定Pi Node? Mar 05, 2025 pm 05:57 PM

PiNetwork节点详解及安装指南本文将详细介绍PiNetwork生态系统中的关键角色——Pi节点,并提供安装和配置的完整步骤。Pi节点在PiNetwork区块链测试网推出后,成为众多先锋积极参与测试的重要环节,为即将到来的主网发布做准备。如果您还不了解PiNetwork,请参考Pi币是什么?上市价格多少?Pi用途、挖矿及安全性分析。什么是PiNetwork?PiNetwork项目始于2019年,拥有其专属加密货币Pi币。该项目旨在创建一个人人可参与

Docker三分钟搞定LLama3开源大模型本地部署 Docker三分钟搞定LLama3开源大模型本地部署 Apr 26, 2024 am 10:19 AM

概述LLaMA-3(LargeLanguageModelMetaAI3)是由Meta公司开发的大型开源生成式人工智能模型。它在模型结构上与前一代LLaMA-2相比没有大的变动。LLaMA-3模型分为不同规模的版本,包括小型、中型和大型,以适应不同的应用需求和计算资源。小型模型参参数规模为8B,中型模型参参数规模为70B,而大型模型参参数规模则达到400B。然而在训练中,目标是实现多模态、多语言的功能,预计结果将与GPT4/GPT4V相当。安装OllamaOllama是一个开源的大型语言模型(LL

deepseek怎么安装 deepseek怎么安装 Feb 19, 2025 pm 05:48 PM

DeepSeek的安装方法有多种,包括:从源码编译(适用于经验丰富的开发者)使用预编译包(适用于Windows用户)使用Docker容器(最便捷,无需担心兼容性)无论选择哪种方法,请仔细阅读官方文档并充分准备,避免不必要的麻烦。

PHP 分布式系统架构与实践 PHP 分布式系统架构与实践 May 04, 2024 am 10:33 AM

PHP分布式系统架构通过将不同组件分布在网络互联的机器上实现可伸缩性、性能和容错性。该架构包括应用服务器、消息队列、数据库、缓存和负载均衡器。将PHP应用迁移到分布式架构的步骤包括:识别服务边界选择消息队列系统采用微服务框架部署到容器管理服务发现

如何通过容器化来优化 Java 函数的性能? 如何通过容器化来优化 Java 函数的性能? Apr 29, 2024 pm 03:09 PM

容器化通过以下方式提升Java函数性能:资源隔离-确保隔离的计算环境,避免资源争用。轻量级-占用较少系统资源,提高运行时性能。快速启动-减少函数执行延迟。一致性-解耦应用程序和基础设施,保证跨环境一致的行为。

See all articles