网站管理员怎么做,dw设计模板,wordpress mip img,windows iis运行php网站一、项目1.1 项目环境1.2 服务器环境1.3 任务需求 二、Linux 系统基础镜像三、Nginx1、建立工作目录2、编写 Dockerfile 脚本3、准备 nginx.conf 配置文件4、生成镜像5、创建自定义网络6、启动镜像容器7、验证 nginx 四、Mysql1、建立工作目录2、编写 Dockerfile3、准备 my.cnf… 一、项目1.1 项目环境1.2 服务器环境1.3 任务需求 二、Linux 系统基础镜像三、Nginx1、建立工作目录2、编写 Dockerfile 脚本3、准备 nginx.conf 配置文件4、生成镜像5、创建自定义网络6、启动镜像容器7、验证 nginx 四、Mysql1、建立工作目录2、编写 Dockerfile3、准备 my.cnf 文件4、生成镜像5、启动镜像容器6、验证 mysql 五、Php1、建立工作目录2、编写 Dockerfile 脚本3、准备 php.ini、php-fpm.conf、www.conf 配置文件3.1 php.ini3.2 php-fpm.conf3.3 www.conf 4、生成镜像5、启动镜像容器6、验证 php 六、启动 wordpress 服务1、mysql 授权2、浏览器访问测试 一、项目
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 7172.20.0.10Docker-NginxmysqlCentOS 7172.20.0.20Docker-MysqlphpCentOS 7172.20.0.30Docker-php
1.3 任务需求
使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台
限制 Nginx 容器最多使用 500MB 的内存和 1G 的 Swap
限制 Mysql 容器写 /dev/sda 的速率为 10 MB/s
将所有容器进行快照然后将 Docker 镜像打包成 tar 包备份到本地
二、Linux 系统基础镜像
systemctl disable --now firewalld
setenforce 0docker pull centos:7 #从公有仓库中下载 centos7 作为系统基础镜像
docker images三、Nginx
1、建立工作目录
[rootdocker ~]# mkdir /opt/nginx
[rootdocker ~]# cd /opt/nginx
[rootdocker nginx]# rz -E
rz waiting to receive.
#上传 nginx 安装包 nginx-1.12.0.tar.gz
[rootdocker nginx]# rz -E
rz waiting to receive.
#上传 wordpress 服务包 wordpress-4.9.4-zh_CN.tar.gz2、编写 Dockerfile 脚本
[rootdocker nginx]# vim DockerfileFROM centos:7
MAINTAINER this is nginx image lnmp
RUN yum -y install pcre-devel zlib-devel gcc gcc-c make;useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--with-http_stub_status_module;make -j 4 make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME [ /usr/local/nginx/html/ ]
CMD [ /usr/local/nginx/sbin/nginx,-g,daemon off; ]3、准备 nginx.conf 配置文件
[rootdocker nginx]# ls
Dockerfile nginx-1.12.0.tar.gz nginx.conf wordpress-4.9.4-zh_CN.tar.gz
[rootdocker nginx]# egrep -v ^(.)*#(.)*$ nginx.conf | grep -v ^$
worker_processes 1;
events {worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;charset utf-8;location / {root html;index index.html index.php;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}location ~ \.php$ {root html;fastcgi_pass 172.20.0.30:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;include fastcgi_params;}}
}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 204MB5、创建自定义网络
[rootdocker nginx]# docker network create --subnet172.20.0.0/16 --opt com.docker.network.bridge.namedocker1 mynetwork
cdc7b80633abf6c1f573528234f024f6088340475acae277d9710f0d2d5dc400
[rootdocker nginx]# docker network ls
NETWORK ID NAME DRIVER SCOPE
dd7a55d01f86 bridge bridge local
63ddf1e359e9 host host local
0cbe1bd0bd78 mynetwork bridge local
a4b66a8a6cd2 none null local
[rootbenet23 nginx]# ifconfig docker1
docker1: flags4099UP,BROADCAST,MULTICAST mtu 1500inet 172.20.0.1 netmask 255.255.0.0 broadcast 172.20.255.255ether 02:42:4a:c3:31:e7 txqueuelen 0 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 06、启动镜像容器
[rootbenet23 nginx]# docker run -d --name nginx -p 80:80 -m 500m --memory-swap 1g --net mynetwork --ip 172.20.0.10 nginx:lnmp
24cbedd7982b1cf658cff4efd1ea75a5bfe252b6d01b2a222ed4cde63215479d
[rootbenet23 nginx]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
24cbedd7982b nginx:lnmp /usr/local/nginx/sb… 4 seconds ago Up 3 seconds 0.0.0.0:80-80/tcp, :::80-80/tcp nginx[rootbenet23 nginx]# docker inspect nginxNetworks: {mynetwork: {IPAMConfig: {IPv4Address: 172.20.0.107、验证 nginx
[rootdocker nginx]# curl http://192.168.147.105:80
!DOCTYPE html
html
head
titleWelcome to nginx!/title
stylebody {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
/style
/head
body
h1Welcome to nginx!/h1
pIf you see this page, the nginx web server is successfully installed and
working. Further configuration is required./ppFor online documentation and support please refer to
a hrefhttp://nginx.org/nginx.org/a.br/
Commercial support is available at
a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p
/body
/html四、Mysql
1、建立工作目录
[rootbenet23 nginx]# mkdir /opt/mysql
[rootbenet23 nginx]# cd /opt/mysql/
[rootbenet23 mysql]# rz -E
rz waiting to receive.
#传入mysql安装包mysql-boost-5.7.20.tar.gz2、编写 Dockerfile
[rootdocker mysql]# vim Dockerfile FROM centos:7
MAINTAINER this is mysql image lnmp
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c make;useradd -M -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN 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_EXTRA_CHARSETSall \
-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 -j4;make install
ADD my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./mysqld \
--initialize-insecure \
--usermysql \
--basedir/usr/local/mysql \
--datadir/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld
ENV PATH/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [ /usr/local/mysql ]
CMD [/usr/sbin/init]3、准备 my.cnf 文件
[rootdocker mysql]# vim my.cnf[client]
port 3306
socket/usr/local/mysql/mysql.sock[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_QUOTES4、生成镜像
[rootdocker mysql]# docker build -t mysql:lnmp .
[rootdocker mysql]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql lnmp 49da8f7299af 3 minutes ago 9.98GB
nginx lnmp 35a6404fcfa1 17 minutes ago 522MB
centos 7 eeb6ee3f44bd 4 weeks ago 204MB5、启动镜像容器
[rootbenet23 mysql]# docker run --namemysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 mysql:lnmp
e75631cda20bf2b2da5537699b006e446abba355f39ef39b2c8d2d98582f5bea
[rootbenet23 mysql]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e75631cda20b mysql:lnmp /usr/sbin/init 44 seconds ago Up 35 seconds 3306/tcp mysql
24cbedd7982b nginx:lnmp /usr/local/nginx/sb… 6 days ago Up 6 days 0.0.0.0:80-80/tcp, :::80-80/tcp nginx6、验证 mysql
[rootbenet23 mysql]# docker exec -it mysql bash
[roote75631cda20b bin]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: activating (start) since Sun 2023-01-01 04:35:03 UTC; 1min 49s agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 70 ExecStart/usr/local/mysql/bin/mysqld --daemonize --pid-file/usr/local/mysql/mysqld.pid $MYSQLD_OPTS (codeexited, status0/SUCCESS)Process: 50 ExecStartPre/usr/local/mysql/bin/mysqld_pre_systemd (codeexited, status0/SUCCESS)
CGroup: /docker/e75631cda20bf2b2da5537699b006e446abba355f39ef39b2c8d2d98582f5bea/system.slice/mysqld.service└─73 /usr/local/mysql/bin/mysqld --daemonize --pid-file/usr/local/mysql/mysqld.pid五、Php
1、建立工作目录
[rootbenet23 mysql]# mkdir ../php
[rootbenet23 mysql]# cd ../php/
[rootbenet23 php]# rz -E
rz waiting to receive.
#传入php安装包php-7.1.10.tar.bz22、编写 Dockerfile 脚本
[rootbenet23 php]# vim Dockerfile FROM centos:7
MAINTAINER this is php image lnmp
RUN yum install -y 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;useradd -M -s /sbin/nologin nginx
ADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10
RUN ./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 4 ; make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
ADD php.ini /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
CMD /usr/local/php/sbin/php-fpm -F3、准备 php.ini、php-fpm.conf、www.conf 配置文件
3.1 php.ini
该配置文件模板位于安装目录的 php-7.1.10/php.ini-development 位置
[rootbenet23 php]# vim php.ini
#939行,取消注释修改
date.timezone Asia/Shanghai
#1170行,修改
mysqli.default_socket /usr/local/mysql/mysql.sock[rootbenet23 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]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/*.conf3.3 www.conf
该配置文件位于 usr/local/php/etc/php-fpm.d/www.conf.default
[rootdocker php]# vim www.conf
#23、24行修改用户和组
user nginx
group nginx
#36行修改监听IP和端口为容器IP:9000端口
listen 172.20.0.30:9000[rootdocker php]# egrep -v ^; www.conf | egrep -v ^$
[www]
user nginx
group nginx
listen 172.20.0.30:9000
pm dynamic
pm.max_children 5
pm.start_servers 2
pm.min_spare_servers 1
pm.max_spare_servers 34、生成镜像
[rootbenet23 php]# docker build -t php:lnmp .
[rootbenet23 php]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php lnmp 18366080e46c About a minute ago 1.3GB
mysql lnmp d007959d6f9a 10 hours ago 10GB
nginx lnmp 8c0cf60ecad6 7 days ago 573MB
httpd centos e961c69e1bef 7 days ago 761MB
nginx latest 3964ce7b8458 2 weeks ago 142MB
centos 7 eeb6ee3f44bd 15 months ago 204MB5、启动镜像容器
[rootbenet23 php]# docker run -itd --name php --net mynetwork --ip 172.20.0.30 -p 9000:9000 --volumes-from nginx --volumes-from mysql php:lnmp
03e251af5164d3e7392af541f0f2964badbd653db15e7be5d38caabb210c367d
[rootbenet23 php]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03e251af5164 php:lnmp /bin/sh -c /usr/lo… 7 seconds ago Up 5 seconds 0.0.0.0:9000-9000/tcp, :::9000-9000/tcp php
e75631cda20b mysql:lnmp /usr/sbin/init 10 hours ago Up 10 hours 3306/tcp mysql
24cbedd7982b nginx:lnmp /usr/local/nginx/sb… 7 days ago Up 7 days 0.0.0.0:80-80/tcp, :::80-80/tcp nginx6、验证 php
[rootbenet23 php]# docker exec -it php bash
[root03e251af5164 php-7.1.10]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 113028 7512 pts/0 Ss 14:25 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nginx 7 0.0 0.0 113028 3552 pts/0 S 14:25 0:00 php-fpm: pool www
nginx 8 0.0 0.0 113028 3552 pts/0 S 14:25 0:00 php-fpm: pool www
root 9 0.2 0.0 11828 1908 pts/1 Ss 14:27 0:00 bash
root 22 0.0 0.0 51732 1728 pts/1 R 14:28 0:00 ps -aux六、启动 wordpress 服务
1、mysql 授权
进入 mysql 容器
[roote75631cda20b bin]# mysql -u root -p
Enter password:
#初始密码为空
mysql create database wordpress;
Query OK, 1 row affected (0.00 sec)mysql grant all privileges on wordpress.* to wordpress% identified by 123456;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql grant all privileges on *.* to root% identified by 123456;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)2、浏览器访问测试
访问 http://192.168.147.105/wordpress/index.php