前端进入网站建设公司怎么样,天圆地方建筑网站,php做简易网站,wordpress类似的平台[TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfi… [TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfile3.3、准备 my.cnf 文件3.4、创建镜像3.5、 使用新的镜像运行容器并测试 四、部署PHP4.1、创建工作目录并上传代码包4.2、 编写 Dockerfile 脚本4.3、准备 php.ini、php-fpm.conf、www.conf 配置文件4.3.1、 php.ini4.3.2、 php-fpm.conf 4.4、 生成镜像4.5、运行容器4.6、数据库授权4.7、运行Wordpress 一、项目介绍
1.1、项目环境
公司在实际的生产环境中需要使用 Docker 技术在一台主机上创建 LNMP 服务并运行 Wordpress 网站平台。然后对此服务进行相关的性能调优和管理工作。所有安装包下载
wget http://101.34.22.188/lnmp_wordpress/mysql-boost-5.7.20.tar.gz
wget http://101.34.22.188/lnmp_wordpress/nginx-1.12.0.tar.gz
wget http://101.34.22.188/lnmp_wordpress/php-7.1.10.tar.bz2
wget http://101.34.22.188/lnmp_wordpress/wordpress-4.9.4-zh_CN.tar.gz或者
wget -r -np http://101.34.22.188/lnmp_wordpress/
1.2、 服务器环境
容器 操作系统 IP地址 主要软件
nginxCentOS 7.9 x86_64172.111.0.10Docker-NginxmysqlCentos 7.9 x86_64172.111.0.20Docker-MysqlphpCentos 7.9 x86_64172.111.0.30Docker-php宿主机Centos 7.9 x86_64192.168.11.11Docker 19.03
1.3、 任务需求
使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台。限制 Nginx 容器最多使用 500MB 的内存和 1G 的 Swap。限制 Mysql 容器写 /dev/sda 的速率为 10 MB/s。将所有容器进行快照然后将 Docker 镜像打包成 tar 包备份到本地。
[rootdocker ~]# systemctl disable --now firewalld
[rootdocker ~]# setenforce 0
setenforce: SELinux is disabled
[rootdocker ~]# docker pull centos:7
#从公有仓库中下载 centos7 作为系统基础镜像
[rootdocker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 eeb6ee3f44bd 4 weeks ago 204MB
二、部署Nginx
2.1、建立工作目录
在docker容器中拉取centoos7作为基础镜像
docker pull centos7[rootlocalhost ~]$ mkdir /opt/nginx[rootlocalhost ~]$ cd /opt/nginx/[rootlocalhost /opt/nginx]$ lsnginx-1.24.0.tar.gz2.2、 编写 Dockerfile 脚本
[rootlocalhost /opt/nginx/html]$ touch Dockerfile
[rootlocalhost /opt/nginx/html]$ ls
Dockerfile wordpress[rootdocker nginx]# vim Dockerfile
FROM centos:7 AS first
MAINTAINER this is nginx image wl 20231021ADD nginx-1.24.0.tar.gz /opt/
RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make \
useradd -M -s /sbin/nologin nginx \
cd /opt/nginx-1.24.0 \
./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module \
make \
make installFROM centos:7
COPY --fromfirst /usr/local/nginx/ /usr/local/nginx/
RUN useradd -M -s /sbin/nologin nginxEXPOSE 80
EXPOSE 443CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;] 2.3、准备 nginx.conf 配置文件
vim nginx.conf#user nobody;
worker_processes 2;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {use epollworker_connections 1024;
}http {include 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 logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name www.byyb.com;charset utf-8;#access_log logs/host.access.log main;location / {root html;index index.php index.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 html;fastcgi_pass 172.18.0.30:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;include fastcgi_params;}# deny access to .htaccess files, if Apaches document root# concurs with nginxs one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}} 2.4、生成镜像
[rootdocker nginx]# docker build -t nginx:lnmp .
[rootdocker nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx lnmp 35a6404fcfa1 5 seconds ago 522MB
centos 7 eeb6ee3f44bd 4 weeks ago 204MB 2.5、创建自定义网络
docker network create --subnet172.18.0.0/16 --opt com.docker.network.bridge.namedocker1 lnmpnetwork启动镜像容器
docker run -d --name nginx -p 80:80 -v /opt/nginx/html/:/usr/local/nginx/html/ -v /opt/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf --network lnmpnetwork --ip 172.18.0.10 nginx:lnmp 三、部署Mysql
3.1、建立工作目录
[rootdocker nginx]# mkdir /opt/mysql
[rootdocker nginx]# cd /opt/mysql/
[rootdocker mysql]# rz -E
rz waiting to receive.
#传入mysql安装包mysql-boost-5.7.41.tar.gz 3.2、编写 Dockerfile
[rootdocker mysql]# vim Dockerfile FROM centos:7 AS first
MAINTAINER this is mysql image wl 20231021
ADD mysql-boost-5.7.41.tar.gz /opt/
RUN yum -y install gcc gcc-c ncurses ncurses-devel bison cmake make openssl-devel \
cd /opt/mysql-5.7.41/ \
cmake \
-DCMAKE_INSTALL_PREFIX/usr/local/mysql \
-DMYSQL_UNIX_ADDR/usr/local/mysql/mysql.sock \
-DSYSCONFDIR/etc \
-DSYSTEMD_PID_DIR/usr/local/mysql \
-DDEFAULT_CHARSETutf8 \
-DDEFAULT_COLLATIONutf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE1 \
-DWITH_ARCHIVE_STORAGE_ENGINE1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE1 \
-DMYSQL_DATADIR/usr/local/mysql/data \
-DWITH_BOOSTboost \
-DWITH_SYSTEMD1 make -j 2 make installFROM centos:7
COPY --fromfirst /usr/local/mysql/ /usr/local/mysql/
ADD my.cnf /etc/my.cnf
ENV PATH/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
RUN useradd -M -s /sbin/nologin mysql \
chown mysql:mysql /etc/my.cnf \
chown -R mysql:mysql /usr/local/mysql/ \
/usr/local/mysql/bin/mysqld \
--initialize-insecure \
--usermysql \
--basedir/usr/local/mysql \
--datadir/usr/local/mysql/data
EXPOSE 3306
CMD [/usr/local/mysql/bin/mysqld] 3.3、准备 my.cnf 文件
[rootdocker mysql]# vim my.cnf[client]
port 3306
socket/usr/local/mysql/mysql.sock[mysql]
port 3306
socket /usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user mysql
basedir/usr/local/mysql
datadir/usr/local/mysql/data
port 3306
character-set-serverutf8
pid-file /usr/local/mysql/mysqld.pid
socket/usr/local/mysql/mysql.sock
bind-address 0.0.0.0
skip-name-resolve
max_connections2048
default-storage-engineINNODB
max_allowed_packet16M
server-id 1sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES 3.4、创建镜像
docker build -t mysql:lnmp .
#名称:标签 3.5、 使用新的镜像运行容器并测试 docker run -d --name mysql --privileged -v /usr/local/mysql --network lnmpnetwork --ip 172.18.0.20 mysql:lnmp- --namemysql指定容器的名称为mysql。
- -d以后台模式运行容器。
- --privileged在容器内部启用特权模式可以执行一些底层操作。
- -v /usr/local/mysql将宿主机的/usr/local/mysql目录挂载到容器的相应位置。
- --net mynetwork将容器连接到名为mynetwork的网络。 四、部署PHP
4.1、创建工作目录并上传代码包
mkdir /opt/php
cd /opt/php上传 php-7.1.10.tar.bz2 到 /opt/php 目录中 4.2、 编写 Dockerfile 脚本
vim DockerfileFROM centos:7 AS first
MAINTAINER this is php image wl 20231021
ADD php-7.1.10.tar.bz2 /opt/
RUN yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c make pcre-devel \
cd /opt/php-7.1.10/ \
./configure \
--prefix/usr/local/php \
--with-mysql-sock/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip make -j 2 make install \
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini \
sed -i -e 939c date.timezone Asia/Shanghai -e 1170c mysqli.default_socket /usr/local/mysql/mysql.sock /usr/local/php/lib/php.ini \
cd /usr/local/php/etc/ \
cp php-fpm.conf.default php-fpm.conf \
sed -i 17 s/^;// php-fpm.conf \
cd /usr/local/php/etc/php-fpm.d/ \
cp www.conf.default www.conf \
sed -i -e 23c user nginx -e 24c group nginx -e 36c listen 172.18.0.30:9000 -e 62c listen.allowed_clients 172.18.0.10 www.confFROM centos:7
COPY --fromfirst /usr/local/php/ /usr/local/php/
RUN yum -y install gd \
libjpeg-devel \
libpng-devel \
freetype-devel \
libxml2-devel \
zlib-devel \
curl-devel \
openssl-devel \
useradd -M -s /sbin/nologin nginx \
rm -rf /var/cache/yum/*
EXPOSE 9000
CMD [/usr/local/php/sbin/php-fpm, -F]
4.3、准备 php.ini、php-fpm.conf、www.conf 配置文件
4.3.1、 php.ini
该配置文件模板位于安装目录的 php-7.1.10/php.ini-development 位置[rootdocker php]# vim php.ini#939行,取消注释修改
date.timezone Asia/Shanghai
#1170行,修改
mysqli.default_socket /usr/local/mysql/mysql.sock
[rootdocker php]# egrep -v ^; php.ini | egrep -v ^$
[PHP]
engine On
short_open_tag Off
precision 14
output_buffering 4096
zlib.output_compression Off
implicit_flush Off
unserialize_callback_func
serialize_precision -1
disable_functions
disable_classes
zend.enable_gc On
expose_php On
max_execution_time 30
max_input_time 60
memory_limit 128M
error_reporting E_ALL
display_errors On
display_startup_errors On
log_errors On
log_errors_max_len 1024
ignore_repeated_errors Off
ignore_repeated_source Off
report_memleaks On
track_errors On
html_errors On
variables_order GPCS
request_order GP
register_argc_argv Off
auto_globals_jit On
post_max_size 8M
auto_prepend_file
auto_append_file
default_mimetype text/html
default_charset UTF-8
doc_root
user_dir
enable_dl Off
file_uploads On
upload_max_filesize 2M
max_file_uploads 20
allow_url_fopen On
allow_url_include Off
default_socket_timeout 60
[CLI Server]
cli_server.color On
[Date]
date.timezone Asia/Shanghai
[filter]
[iconv]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size 2000
pdo_mysql.default_socket
[Phar]
[mail function]
SMTP localhost
smtp_port 25
mail.add_x_header On
[SQL]
sql.safe_mode Off
[ODBC]
odbc.allow_persistent On
odbc.check_persistent On
odbc.max_persistent -1
odbc.max_links -1
odbc.defaultlrl 4096
odbc.defaultbinmode 1
[Interbase]
ibase.allow_persistent 1
ibase.max_persistent -1
ibase.max_links -1
ibase.timestampformat %Y-%m-%d %H:%M:%S
ibase.dateformat %Y-%m-%d
ibase.timeformat %H:%M:%S
[MySQLi]
mysqli.max_persistent -1
mysqli.allow_persistent On
mysqli.max_links -1
mysqli.cache_size 2000
mysqli.default_port 3306
mysqli.default_socket /usr/local/mysql/mysql.sock
mysqli.default_host
mysqli.default_user
mysqli.default_pw
mysqli.reconnect Off
[mysqlnd]
mysqlnd.collect_statistics On
mysqlnd.collect_memory_statistics On
[OCI8]
[PostgreSQL]
pgsql.allow_persistent On
pgsql.auto_reset_persistent Off
pgsql.max_persistent -1
pgsql.max_links -1
pgsql.ignore_notice 0
pgsql.log_notice 0
[bcmath]
bcmath.scale 0
[browscap]
[Session]
session.save_handler files
session.use_strict_mode 0
session.use_cookies 1
session.use_only_cookies 1
session.name PHPSESSID
session.auto_start 0
session.cookie_lifetime 0
session.cookie_path /
session.cookie_domain
session.cookie_httponly
session.serialize_handler php
session.gc_probability 1
session.gc_divisor 1000
session.gc_maxlifetime 1440
session.referer_check
session.cache_limiter nocache
session.cache_expire 180
session.use_trans_sid 0
session.sid_length 26
session.trans_sid_tags ahref,areahref,framesrc,form
session.sid_bits_per_character 5
[Assertion]
zend.assertions 1
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output Off
[soap]
soap.wsdl_cache_enabled1
soap.wsdl_cache_dir/tmp
soap.wsdl_cache_ttl86400
soap.wsdl_cache_limit 5
[sysvshm]
[ldap]
ldap.max_links -1
[mcrypt]
[dba]
[opcache]
[curl]
[openssl]
4.3.2、 php-fpm.conf
该配置文件位于 /usr/local/php/etc/php-fpm.conf.default[rootdocker php]# vim php-fpm.conf #17行删除注释符号“;”
pid run/php-fpm.pid
[rootdocker php]# egrep -v ^; php-fpm.conf | egrep -v ^$
[global]
pid run/php-fpm.pid
include/usr/local/php/etc/php-fpm.d/*.conf
4.4、 生成镜像
[rootdocker php]# docker build -t php:lnmp .
[rootdocker php]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php lnmp 985842f961f1 About a minute ago 1.2GB
mysql lnmp 49da8f7299af 12 minutes ago 9.98GB
nginx lnmp 35a6404fcfa1 26 minutes ago 522MB
centos 7 eeb6ee3f44bd 4 weeks ago 204MB 4.5、运行容器
docker run -d --namephp -p 9000:9000 --volumes-from mysql --volumes-from nginx --network lnmpnetwork --ip 172.18.0.30 php:lnmp4.6、数据库授权
docker exec -it mysql /bin/bash mysqlcreate database wordpress;grant all on wordpress.* to wordpress172.18.0.% identified by admin123;
grant all on wordptess.* to root172.18.0.% identified by admin123;
grant all on wordpress.* to wordpresslocalhost identified by admin123; 4.7、运行Wordpress
浏览器访问
http://192.168.11.11/wordpress/index.php v