准备工作
使用阿里云kelude
到 创建一个项目,如dockerfile。之后我们把wordpress环境的所有相关dockerfile及配置文件放置到centosbz目录。
使用阿里云镜像仓库
阿里云docker镜像仓库地址为 ,用来存放docker镜像,可以在本地push镜像上去,也可以从kelude拉取dockerfile自动构建镜像。我们先登录,然后新建一个namespace,如centos-bz,之后所有的nginx,php,mysql镜像将存放在这个namespace下。
安装docker-compose
需要在运行docker容器的主机上安装docker-compose,可以参照官方文档手动安装,也可以使用ezhttp的一键安装工具(推荐)安装。如:
wget centos.bz/ezhttp.zip unzip ezhttp.zip cd ezhttp-master ./start.sh
之后会弹出一个菜单,输入2选择some useful tools,然后输入18选择安装docker和compose。
编写dockerfile
clone以上在阿里云kelude创建的dockerfile镜像到本地,在此项目中创建centos.bz,然后在centos.bz目录分别创建mysql,nginx,php目录,用于存放它们各自dockerfile及配置文件。
这里我们还约定以下目录:
/home/docker/nginx/logs/centos.bz:存放www.centos.bz网站的日志
/home/docker/nginx/www/centos.bz: 存放www.centos.bz网站的文件
/home/docker/php: 存放php-fpm的日志
/home/docker/mysql:mysql data目录
nginx dockerfile
在nginx目录创建dockerfile文件,写入如下内容:
# 从debian:jessie镜像基础上安装nginx from debian:jessie # 声明此dockerfile维护者的邮箱,有什么问题可以发到此邮件寻问 label maintainer "admin@centos.bz" # 定义软件版本及编译工具变量 env nginx_version 1.10.3 env openssl_version 1.0.2h env zlib_version 1.2.11 env pcre_version 8.40 env concat_version 1.2.2 env build_tools wget gcc make g++ env src_dir /opt/nginx # 切换到工作目录 workdir ${src_dir} # 开始编译nginx,我们这里使用编译安装nginx而不是使用官方提供的nginx镜像是因为这里使用到了第三方的concat模块,只能编译了。 # 把所有的安装命令都写在一个run指令中是因为这样可以减小镜像层数,缩减镜像大小。推荐使用反斜杠和&&把所有的安装命令放置到一行中。 run apt-get update \ && apt-get -y --no-install-recommends install ca-certificates ${build_tools} \ && wget http://nginx.org/download/nginx-${nginx_version}.tar.gz \ && wget https://www.openssl.org/source/openssl-${openssl_version}.tar.gz \ && wget http://www.zlib.net/zlib-${zlib_version}.tar.gz \ && wget https://ftp.pcre.org/pub/pcre/pcre-${pcre_version}.tar.gz \ && wget https://github.com/alibaba/nginx-http-concat/archive/${concat_version}.tar.gz -o nginx-http-concat-${concat_version}.tar.gz \ && tar xf nginx-${nginx_version}.tar.gz \ && tar xf openssl-${openssl_version}.tar.gz \ && tar xf zlib-${zlib_version}.tar.gz \ && tar xf pcre-${pcre_version}.tar.gz \ && tar xf nginx-http-concat-${concat_version}.tar.gz \ && cd nginx-${nginx_version} \ && ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-${pcre_version} \ --with-zlib=../zlib-${zlib_version} \ --with-http_ssl_module \ --with-openssl=../openssl-${openssl_version} \ --add-module=../nginx-http-concat-${concat_version} \ && make -j$(nproc) \ && make install \ && rm -rf ${src_dir} \ && apt-get purge -y --auto-remove ${build_tools} \ && rm -rf /var/lib/apt/lists/* # 把构建上下文目录conf,即dockerfile/centos.bz/nginx/conf目录下的文件复制到容器的/usr/local/nginx/conf目录。 copy conf/ /usr/local/nginx/conf/ # 定义启动容器时运行的命令 entrypoint ["/usr/local/nginx/sbin/nginx"] expose 80 443
对于conf目录下的nginx配置文件,需要把日志,网站目录更改为以下约定的目录位置。
php-fpm dockerfile
创建dockerfile/centos.bz/php-fpm目录,在此目录下创建dockerfile文件,内容如下:
from debian:jessie label maintainer "admin@centos.bz" # 定义软件版本,编译工具,依赖等变量 env php_version 5.6.30 env build_tools m4 \ autoconf \ autoconf2.13 \ openssl \ wget \ gcc \ make env build_deps libcurl4-gnutls-dev \ libxml2-dev \ zlib1g-dev \ libpcre3-dev \ libjpeg-dev \ libpng12-dev \ libfreetype6-dev \ libmhash-dev \ libmcrypt-dev \ libssl-dev \ libtool env php_location /usr/local/php env build_arg --prefix=${php_location} \ --with-config-file-path=${php_location}/etc \ --enable-fpm \ --enable-bcmath \ --with-pdo_sqlite \ --with-gettext \ --with-iconv \ --enable-ftp \ --with-sqlite3 \ --enable-mbstring \ --enable-sockets \ --enable-zip \ --enable-soap \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-mcrypt \ --with-mhash \ --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --without-pear \ --with-libdir=lib64 \ --enable-opcache \ --disable-cgi env src_dir /opt/php workdir ${src_dir} # 开始编译安装php run apt-get update \ && apt-get -y --no-install-recommends install ${build_deps} ${build_tools} \ && wget http://php.net/distributions/php-${php_version}.tar.gz \ && tar xf php-${php_version}.tar.gz \ && cd php-${php_version} \ && ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so \ && ln -s /usr/lib /usr/lib64 \ && ./configure ${build_arg} \ && make -j$(nproc) \ && make install \ && cp php.ini-production ${php_location}/etc/php.ini \ && cp ${php_location}/etc/php-fpm.conf.default ${php_location}/etc/php-fpm.conf \ && rm -rf ${src_dir} \ && apt-get purge -y --auto-remove ${build_tools} \ && rm -rf /var/lib/apt/lists/* workdir ${php_location}/etc/ # 配置php-fpm,即使用sed工具编辑php-fpm.conf和php.ini文件,这里的php-fpm相关配置命令不与上面的编译命令合在一起来减小层数是因为 # 配置文件可能会改动比较多,这样分开当配置文件更改时可以直接使用缓存跳过编译步骤,加快构建速度。 run set_php_variable(){ \ local key=$1; \ local value=$2; \ if grep -q -e "^$key\s*=" php.ini;then \ sed -i -r "s#^$key\s*=.*#$key=$value#" php.ini; \ else \ sed -i -r "s#;\s*$key\s*=.*#$key=$value#" php.ini; \ fi; \ if ! grep -q -e "^$key\s*=" php.ini;then \ echo "$key=$value" >> php.ini; \ fi; \ } \ && base_dir=/home/docker/php \ && set_php_variable disable_functions "dl,eval,assert,exec,popen,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open" \ && set_php_variable expose_php off \ && set_php_variable error_log ${base_dir}/php_errors.log \ && set_php_variable request_order "cgp" \ && set_php_variable cgi.fix_pathinfo 0 \ && set_php_variable short_open_tag on \ && set_php_variable date.timezone asia/chongqing \ && sed -i 's/^user =.*/user = www-data/' php-fpm.conf \ && sed -i 's/^group =.*/group = www-data/' php-fpm.conf \ && sed -i "s#;slowlog = log/\$pool.log.slow#slowlog = ${base_dir}/\$pool.log.slow#" php-fpm.conf \ && sed -i 's/;request_slowlog_timeout = 0/request_slowlog_timeout = 5/' php-fpm.conf \ && sed -i 's/^pm.max_children.*/pm.max_children =20/' php-fpm.conf \ && sed -i 's/^pm.start_servers.*/pm.start_servers =5/' php-fpm.conf \ && sed -i 's/^pm.min_spare_servers.*/pm.min_spare_servers =3/' php-fpm.conf \ && sed -i 's/^pm.max_spare_servers.*/pm.max_spare_servers =8/' php-fpm.conf \ && sed -i '/\[global\]/a\daemonize =no' php-fpm.conf \ && sed -i 's/^listen.*/listen =0.0.0.0:9000/' php-fpm.conf \ && echo "[opcache]\n \ zend_extension=opcache.so\n \ opcache.memory_consumption=128\n \ opcache.interned_strings_buffer=8\n \ opcache.max_accelerated_files=4000\n \ opcache.revalidate_freq=60\n \ opcache.fast_shutdown=1 \n" >> php.ini entrypoint ["/usr/local/php/sbin/php-fpm"] expose 9000
mysql dockerfile
创建dockerfile/centos.bz/mysql/dockerfile文件,内容如下:
from mysql:5.6 label maintainer "admin@centos.bz" copy my.cnf /etc/mysql/my.cnf
这个dockerfile非常简单,直接使用了官方的mysql镜像,唯一区别是我们使用自己定义的my.cnf配置文件。
对于my.cnf配置文件,需要把日志,data目录指向/home/docker/mysql,一个my.cnf示例文件如下:
# generated by ezhttp at 2016-02-03 01:05:29 [mysql] # client # port = 3306 socket = /home/docker/mysql/mysql.sock [mysqld] # general # port = 3306 user = mysql default-storage-engine = innodb socket = /home/docker/mysql/mysql.sock pid-file = /home/docker/mysql/mysql.pid skip-name-resolve # myisam # key-buffer-size = 32m # innodb # #innodb-flush-method = o_direct innodb-log-files-in-group = 2 innodb-log-file-size = 64m innodb-flush-log-at-trx-commit = 2 innodb-file-per-table = 1 innodb-buffer-pool-size = 1g # caches and limits # tmp-table-size = 32m max-heap-table-size = 32m query-cache-type = 0 query-cache-size = 0 max-connections = 300 thread-cache-size = 50 open-files-limit = 1024 table-definition-cache = 100 table-open-cache = 400 # safety # max-allowed-packet = 16m max-connect-errors = 1000000 # data storage # datadir = /home/docker/mysql # logging # log-error = /home/docker/mysql/mysql-error.log log-queries-not-using-indexes = 1 slow-query-log = 1 slow-query-log-file = /home/docker/mysql/mysql-slow.log # binary logging # log-bin = /home/docker/mysql/mysql-bin server-id = 1 expire-logs-days = 14 sync-binlog = 1
构建镜像
把上一步创建的文件推送到阿里云的kelude。然后我们登录阿里云的docker镜像仓库cr.console.aliyun.com。这里以设置自动构建nginx镜像为例,php和mysql镜像构建设置类似。
1.点击左侧“镜像列表”,在右侧点击仓库镜像,如图:
2.在仓库镜像创建对话框中,说明如下:
地域:选择离部署docker主机最近的位置,国内的话选择华东1或华东2。
namespace和仓库名称:这里选择centos-bz,nginx。
设置代码源:我们这里选择阿里云code。
构建设置:勾选代码变更时自动构建镜像,海外机器构建(因为国内主机apt-get安装软件时较慢),dockerfile路径填/centos.bz/nginx
完成后点击创建仓库按钮。
如图:
3.回到镜像列表,找到nginx镜像,点击管理。
4.左侧点击“构建”,右侧点击“立即构建”开始首次构建,之后我们更改dockerfile及配置文件到kelude之后就会自动构建了。
5.查看日志,查看构建进程。
然后继续完成php,mysql的镜像构建设置。
启动环境
为了方便统一管理nginx,php,mysql的启动,我们使用docker-compose工具。我们只需要编写一个docker-compose.yml文件,然后使用docker-compose工具就可以快速启动docker容器了。之后把docker-compose.yml传输到任意一台支持docker环境的主机中就可以快速配置wordpress的运行环境。
docker-compose.yml
把docker-compose.yml文件放置在/home/docker目录下。
version: '3' # 定义三个服务nginx,php,mysql services: nginx: # 依赖php服务,意味着在启动nginx之前先启动php depends_on: - php # nginx镜像的路径 image: registry.cn-hangzhou.aliyuncs.com/centos-bz/nginx # 容器的/home/docker/nginx目录挂载主机中的/home/docker/nginx目录, # 这样使nginx容器把网站文件和目录存放到主机目录中,持久化和方便管理 volumes: - /home/docker/nginx:/home/docker/nginx # nginx意外退出时自动重启 restart: always # 映射80和443端口 ports: - "80:80" - "443:443" # 容器名称 container_name: nginx php: depends_on: - mysql image: registry.cn-hangzhou.aliyuncs.com/centos-bz/php-fpm restart: always volumes: - /home/docker/nginx/www:/home/docker/nginx/www - /home/docker/php:/home/docker/php container_name: php mysql: image: registry.cn-hangzhou.aliyuncs.com/centos-bz/mysql volumes: - /home/docker/mysql:/home/docker/mysql restart: always # 设置mysql_root_password环境变量,这里是设置mysql的root密码。这里为root。 environment: mysql_root_password: root container_name: mysql
启动环境
在/home/docker目录执行:
docker-compose up
查看nginx,php,mysql是否正常启动,如果正常,ctrl-c停止,再执行:
docker-compose up -d
这里compose命令就在后台启动了。
执行docker ps查看容器运行状态。
连接问题
容器之间可以通过容器名称来连接,如nginx配置文件中连接php的代码fastcgi_pass php:9000,网站数据库配置文件使用mysql:3306。
日常运维
迁移
比如a主机迁移到b主机。只需要三步。
1.打包a主机的/home/docker目录,传输到b主机相同位置
2.配置b主机docker环境
3.在b主机的/home/docker目录下执行docker-compose up -d
导出导入数据库
把centos.sql.gz数据库文件导入到centos数据库:
gunzip < centos.sql.gz | docker exec -i mysql mysql -uroot -proot centos
把centos数据库导出到centos.sql.gz
docker exec -i mysql mysqldump -uroot -proot centos | gzip > centos.sql.gz
备份
推荐使用ezhttp一键备份设置:
wget centos.bz/ezhttp.zip unzip ezhttp.zip cd ezhttp-master ./start.sh
之后会弹出一个菜单,输入2选择some useful tools,然后输入14选择备份设置。需要注意的是在设置mysql使用mysqldump备份时,在提示输入mysql bin directory时,输入docker exec /usr/bin/。
以上がDockerでNginx+PHP+MySQL環境を構築しWordPressをデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Close Nginxファイアウォール:Nginxメイン構成ファイル/etc/nginx/nginx.confを開きます。 HTTPブロックのファイアウォール構成ディレクティブを削除します。構成ファイルを保存し、nginxを再起動します。

NGINXを使用してSSLをセットアップするには、次のことが必要です。SSL証明書を取得します。 nginx構成ファイルを作成し、証明書パスを指定します。 SSLを有効にします。サーバー名を追加します。 nginxを再起動します。

Nginx Webサーバーにアクセスすると、404エラーが発生し、サーバーが要求されたリソースが見つからないことを示します。次の手順で解決できます。1。ファイルが存在するかどうかを確認し、パスが正しいかどうかを確認します。 2.ファイルの権限を確認し、644または755に変更します。 3. nginx構成を確認して、ルートディレクトリが正しく設定されており、競合する構成がないことを確認します。 4.詳細については、エラーログを確認してください。 5.ファイアウォール設定を確認し、適切なポートを開きます。 6.さまざまなブラウザまたはクライアントを使用して、Webサイトにアクセスします。 7。nginxを再起動します。これらの手順が問題を解決しない場合は、専門的な技術サポートを探してください。

nginx closeメソッド:1)Systemctl:sudo systemctl stop nginx; 2)サービスの使用:sudo service nginx stop; 3)supervisorctlを使用:sudo supervisorctl stop nginx; 4)手動で閉じる:nginx -S QUIT。

Nginxは、ポーリング方法、加重ポーリング方法、最小接続方法、IPハッシュメソッド、名前ハッシュメソッド、ランダム方法を介した負荷分散を実現します。適切なアルゴリズムの選択は、アプリケーションのニーズに依存します。たとえば、ステートレスアプリケーションはポーリングに適用され、ステートフルなアプリケーションは最小接続法に適用され、セッションの親和性を必要とするアプリケーションは、IPハッシュまたは名前のハッシュに適用されます。

手順に従ってNGINXサービスを閉じることができます。SystemCTLコマンドを使用します。SystemCTLSTOPnginx nginxサービスコマンドを使用します。サービスnginxコマンドを使用します。指示

NGINX 502エラーは、サーバーがビジーであるか、一時的に利用できない可能性があるため、サーバーがリクエストを処理できないことを示します。ソリューションには以下が含まれます。1。サーバーリソースを確認します。 2。nginxを再起動します。 3.エラーログを確認します。 4.バックエンドサーバーを確認します。 5. nginx構成を調整します。 6. nginxのアップグレード。 7。ホストプロバイダーに連絡してください。

NGINXを使用してサーブレットにアクセスするには、次の手順に従ってください。NGINXのAJPモジュールを有効にして構成し、アプリケーションサーバーでAJPコネクタを構成します。 Nginxのロケーションブロックを介してNginxをアプリケーションサーバーに接続し、データ送信にAJPプロトコルを使用します。これらの手順を完了すると、Nginxを介してサーブレットにアクセスできます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
