Maison développement back-end tutoriel php 再Docker中架设完整的WordPress站点全攻略_php技巧

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

May 16, 2016 pm 08:09 PM
docker wordpress

1. 安装 Docker

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

  # yum install docker
Copier après la connexion

201572995512549.png (684×490)

    # systemctl restart docker.service

Copier après la connexion

2. 创建 WordPress 的 Dockerfile

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

  # nano Dockerfile

Copier après la connexion

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

 FROM centos:centos7
  MAINTAINER The CentOS Project <cloud-ops@centos.org>
  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 http://wordpress.org/latest.tar.gz /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"]

Copier après la connexion

201572995556444.png (684×490)

3. 创建启动脚本

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

  # nano start.sh

Copier après la connexion

打开 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

Copier après la connexion

201572995630747.png (684×490)

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

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

  # nano nginx-site.conf

Copier après la connexion

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

user nginx;
  worker_processes 1;
  error_log /var/log/nginx/error.log;
  #error_log /var/log/nginx/error.log notice;
  #error_log /var/log/nginx/error.log info;
  pid /run/nginx.pid;
  events {
  worker_connections 1024;
  }
  http {
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log main;
  sendfile on;
  #tcp_nopush on;
  #keepalive_timeout 0;
  keepalive_timeout 65;
  #gzip on;
  index index.html index.htm index.php;
  # Load modular configuration files from the /etc/nginx/conf.d directory.
  # See http://nginx.org/en/docs/ngx_core_module.html#include
  # for more information.
  include /etc/nginx/conf.d/*.conf;
  server {
  listen 80;
  server_name localhost;
  #charset koi8-r;
  #access_log logs/host.access.log main;
  root /usr/share/nginx/html;
  #error_page 404 /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
  root html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  # proxy_pass http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
  root /usr/share/nginx/html;
  try_files $uri =404;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
  }
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  # deny all;
  #}
  }
  }

Copier après la connexion

201572995707457.png (684×490)

现在,创建 supervisor.conf 文件并添加下面的行。

  # nano supervisord.conf

Copier après la connexion

然后,添加以下行。

  [unix_http_server]
  file=/tmp/supervisor.sock ; (the path to the socket file)
  [supervisord]
  logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
  logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
  logfile_backups=10 ; (num of main logfile rotation backups;default 10)
  loglevel=info ; (log level;default info; others: debug,warn,trace)
  pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  nodaemon=false ; (start in foreground if true;default false)
  minfds=1024 ; (min. avail startup file descriptors;default 1024)
  minprocs=200 ; (min. avail process descriptors;default 200)
  ; the below section must remain in the config file for RPC
  ; (supervisorctl/web interface) to work, additional interfaces may be
  ; added by defining them in separate rpcinterface: sections
  [rpcinterface:supervisor]
  supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  [supervisorctl]
  serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
  [program:php-fpm]
  command=/usr/sbin/php-fpm -c /etc/php/fpm
  stdout_events_enabled=true
  stderr_events_enabled=true
  [program:php-fpm-log]
  command=tail -f /var/log/php-fpm/php-fpm.log
  stdout_events_enabled=true
  stderr_events_enabled=true
  [program:mysql]
  command=/usr/bin/mysql --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
  stdout_events_enabled=true
  stderr_events_enabled=true
  [program:nginx]
  command=/usr/sbin/nginx
  stdout_events_enabled=true
  stderr_events_enabled=true
  [eventlistener:stdout]
  command = supervisor_stdout
  buffer_size = 100
  events = PROCESS_LOG
  result_handler = supervisor_stdout:event_handler
Copier après la connexion

201572995736091.png (684×490)

添加完后,保存并关闭文件。
5. 构建 WordPress 容器

现在,完成了创建配置文件和脚本之后,我们终于要使用 Dockerfile 来创建安装最新的 WordPress CMS(译者注:Content Management System,内容管理系统)所需要的容器,并根据配置文件进行配置。做到这点,我们需要在对应的目录中运行以下命令。

  # docker build --rm -t wordpress:centos7 .
Copier après la connexion

201572995803992.png (684×490)

6. 运行 WordPress 容器

现在,执行以下命令运行新构建的容器,并为 Nginx Web 服务器和 SSH 访问打开88 和 22号相应端口 。

  # CID=$(docker run -d -p 80:80 wordpress:centos7)
Copier après la connexion

201572995845827.png (593×38)

运行以下命令检查进程以及容器内部执行的命令。

 # echo "$(docker logs $CID )"
Copier après la connexion

运行以下命令检查端口映射是否正确。

  # docker ps


Copier après la connexion

201572995909669.png (631×104)

    7. Web 界面

最后如果一切正常的话,当我们用浏览器打开 http://ip-address/ 或者 http://mywebsite.com/ 的时候会看到 WordPress 的欢迎界面。

201572995934305.png (1380×722)

现在,我们将通过 Web 界面为 WordPress 面板设置 WordPress 的配置、用户名和密码。

201572995957637.png (1380×722)

然后,用上面用户名和密码输入到 WordPress 登录界面。

2015729100028673.png (1380×722)

总结

我们已经成功地在以 CentOS 7 作为 docker OS 的 LEMP 栈上构建并运行了 WordPress CMS。从安全层面来说,在容器中运行 WordPress 对于宿主系统更加安全可靠。这篇文章介绍了在 Docker 容器中运行的 Nginx Web 服务器上使用 WordPress 的完整配置。如果你有任何问题、建议、反馈,请在下面的评论框中写下来,让我们可以改进和更新我们的内容。非常感谢!Enjoy :-)

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ajuster la liste d'articles WordPress Comment ajuster la liste d'articles WordPress Apr 20, 2025 am 10:48 AM

Il existe quatre façons d'ajuster la liste des articles WordPress: utilisez des options de thème, utilisez des plugins (tels que l'ordre des types de publication, la liste des publiques WP, des trucs boxy), utilisez du code (ajoutez des paramètres dans le fichier functions.php), ou modifiez directement la base de données WordPress.

Quels sont les plugins pour WordPress bloquant IP Quels sont les plugins pour WordPress bloquant IP Apr 20, 2025 am 08:27 AM

La sélection des plugins de blocage IP WordPress est cruciale. Les types suivants peuvent être pris en compte: basé sur .htaccess: fonctionnement efficace mais complexe; Fonctionnement de la base de données: flexible, mais faible efficacité; pare-feu: performances de haute sécurité, mais configuration complexe; Autécrit: le plus haut contrôle, mais nécessite un niveau plus technique.

Connexion du compte du site Web WordPress Connexion du compte du site Web WordPress Apr 20, 2025 am 09:06 AM

Pour vous connecter à un compte de site Web WordPress: Visitez la page de connexion: entrez l'URL du site Web plus "/wp-login.php". Entrez votre nom d'utilisateur et votre mot de passe. Cliquez sur "Connexion". Vérification Vérification en deux étapes (facultative). Après avoir réussi à vous connecter, vous verrez le tableau de bord du site Web.

Que faire s'il y a une erreur dans WordPress Que faire s'il y a une erreur dans WordPress Apr 20, 2025 am 11:57 AM

Guide de résolution d'erreur WordPress: 500 Erreur du serveur interne: désactivez le plug-in ou vérifiez le journal d'erreur du serveur. 404 Page introuvable: Vérifiez le permalien et assurez-vous que le lien de la page est correct. Écran blanc de la mort: augmentez la limite de mémoire PHP du serveur. Erreur de connexion de la base de données: vérifiez l'état du serveur de base de données et la configuration WordPress. Autres conseils: activer le mode de débogage, vérifier les journaux d'erreur et rechercher le support. Empêcher les erreurs: mettre à jour régulièrement WordPress, installer uniquement les plugins nécessaires, sauvegarder régulièrement votre site Web et optimiser les performances du site Web.

Comment afficher les commentaires WordPress Comment afficher les commentaires WordPress Apr 20, 2025 pm 12:06 PM

Activer les commentaires dans le site Web de WordPress: 1. Connectez-vous au panneau d'administration, accédez à "Paramètres" - "Discussions" et vérifiez "Autoriser les commentaires"; 2. Sélectionnez un emplacement pour afficher les commentaires; 3. Personnaliser les commentaires; 4. Gérer les commentaires, approuver, rejeter ou supprimer; 5. Utiliser & lt ;? php commentaires_template (); ? & gt; Tags pour afficher les commentaires; 6. Activer les commentaires imbriqués; 7. Ajuster la forme du commentaire; 8. Utilisez des plugins et des codes de vérification pour empêcher les commentaires du spam; 9. Encouragez les utilisateurs à utiliser Gravatar Avatar; 10. Créer des commentaires pour se référer à

Comment changer l'image de tête du thème WordPress Comment changer l'image de tête du thème WordPress Apr 20, 2025 am 10:00 AM

Un guide étape par étape pour remplacer une image d'en-tête de WordPress: connectez-vous au tableau de bord WordPress et accédez à l'apparence & gt; thème. Sélectionnez le sujet que vous souhaitez modifier et cliquez sur Personnaliser. Ouvrez le panneau Options de thème et recherchez les options d'image d'en-tête ou d'en-tête du site. Cliquez sur le bouton Sélectionner l'image et télécharger une nouvelle image de tête. Cramez l'image et cliquez sur Enregistrer et recadrer. Cliquez sur le bouton Enregistrer et publier pour mettre à jour les modifications.

Comment écrire une en-tête d'un wordpress Comment écrire une en-tête d'un wordpress Apr 20, 2025 pm 12:09 PM

Les étapes pour créer un en-tête personnalisé dans WordPress sont les suivantes: modifier le fichier de thème "header.php". Ajoutez le nom et la description de votre site Web. Créez un menu de navigation. Ajoutez une barre de recherche. Enregistrez les modifications et affichez votre en-tête personnalisé.

Comment ajouter une boîte de commentaires à WordPress Comment ajouter une boîte de commentaires à WordPress Apr 20, 2025 pm 12:15 PM

Activez les commentaires sur votre site Web WordPress pour fournir aux visiteurs une plate-forme pour participer aux discussions et partager les commentaires. Pour ce faire, suivez ces étapes: Activez les commentaires: Dans le tableau de bord, accédez à Paramètres & GT; Discussions et sélectionnez la case Autoriser les commentaires. Créez un formulaire de commentaire: Dans l'éditeur, cliquez sur Ajouter un bloc et recherchez le bloc de commentaires pour l'ajouter au contenu. Formulaire de commentaire personnalisé: Personnalisez les blocs de commentaires en définissant des titres, des étiquettes, des espaces réservés et du texte des bouton. Enregistrer les modifications: cliquez sur Mettre à jour pour enregistrer la zone de commentaire et l'ajouter à la page ou à l'article.

See all articles