容器化部署个人博客系统lnmp环境
#告警:
WARNING: IPv4 forwarding is disabled. Networking will not work.
96c083a8b58112f64e84baf73810197ea8ba4b48fa292bfb9635b92e6efc4e5c
因为转发没开,解决如下:
echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -p
0. 配置源
yum install -y docker-ce
rm -f /etc/docker/*
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl enable docker.service
1. 自定义docker网络 network_lnmp
[root@k8s-master ~]# docker network create network_lnmp
742504219a6955425beb43f5cc014376a1efea2ed5b78b939f7cb92cc8879c83
2. mysql配置
2.1. 创建挂载卷:
docker volume create mysql-vol
2.2. 创建本地持久化卷
mkdir -p /var/lib/mysql/
挂载方法:
方法1:
--name=mysql-vol --mount src=mysql-vol,dst=/var/lib/mysql/
方法2:
--name=mysql-vol -v mysql-vol:/usr/share/nginx/html nginx
2.3 mysql容器创建与登录测试,并挂载到mysql-vol:
创建:
mkdir -p /var/lib/mysql
docker run -d --name lnmp_mysql
--net network_lnmp
--mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7
--character-set-server=utf8
登录测试:
docker inspect lnmp_mysql|sed -nr 's#^.*Address": "(.*)"\,.*$#1#gp'|egrep -o "([0-9]{1,3}.){3}[0-9]"
172.18.0.2 <---获取mysql容器IP
连接mysql测试:
[root@docker-02 ~]# yum install -y mysql
[root@docker-02 ~]# mysql -uroot -p123456 wordpress -h 172.18.0.2
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MySQL [(none)]>
测试链接成功
---------------------------------------------------------------------
#创建授权wordpress数据库:
创建相关数据库:
mysql -uroot -p123456 -h 172.18.0.2
#创建wordpress数据库
create database wordpress;
#wordpress数据库权限配置,只允许本地访问 用户名 wordpress 密码 123456
grant all on wordpress.* to wordpress@'%' identified by '123456';
#刷新权限
flush privileges;
#测试新建账号 wordpress 连接数据库:
mysql -uwordpress -p123456 -h 172.18.0.2
[root@docker-02 _data]# mysql -uwordpress -p123456 -h 172.18.0.2
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MySQL connection id is 8
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MySQL [(none)]>
3. 创建php容器:
规划:
创建网站数据目录 www-vol 启动时指定解析该目录
创建:
docker run -d
--name lnmp_php-1
--net network_lnmp
-p 9000:9000
-v www-vol:/usr/share/nginx/html
registry.cn-hangzhou.aliyuncs.com/iyunw/php:7.1
这里是将本地/www目录挂载到容器中的/usr/share/nginx/html
创建用户:
useradd -s /sbin/nologin -M www-data -u 1000
清理数据卷:
docker volume ls --filter dangling=true 过滤出没有使用的卷,然后使用"docker volume rm [卷名]"删除
#---------------------------------------------------------------------------------------------------------------
3. nginx容器
3.1 准备目录和配置文件:
mkdir /etc/nginx/conf.d/ -p
vim /etc/nginx/conf.d/nginx.conf
#---nginx.conf--------------------------------------------------------------------------------------------------
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/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 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
#---nginx.conf-----------默认就有不用创建------------------------------------------------------------------------
添加server:
[root@docker-02 _data]# vim /root/nginx_php.conf
#---------------include /root/nginx_php.conf-----------------------------#
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
#root /usr/share/nginx/html;
index index.php index.html;
# include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
}
location ~* .php$ {
root /usr/share/nginx/html;
fastcgi_pass lnmp_php-1:9000; ## php的容器名,如果容器名不存在就不会启动容器。注意
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#---------------include /root/nginx_php.conf-----------------------------#
5. 创建nginx容器挂载相关配置文件和目录:
网页目录卷: www-vol
5.1. 创建挂载卷:
docker volume create www-vol
通过 docker inspect www-vol 可以看到这个卷所在的目录
挂载方法:
方法2:
-v www-vol:/usr/share/nginx/html -v /root/nginx_php.conf:/etc/nginx/conf.d/www.conf
5.2 起容器:
docker run -d --name lnmp_nginx
-p 80:80 --net network_lnmp
-v www-vol:/usr/share/nginx/html
-v /root/nginx_php.conf:/etc/nginx/conf.d/www.conf nginx
5.3 容器里创建一个用户,用于和php交互:
useradd -s /sbin/nologin -M www-data -u 1000
#注意,yum安装的时候这个index.html可能就是个软连接,她并不在容器中,而是在宿主机中,并且没有被映射到容器
#此时访问时会出现403错误
#只要删除这些文件。重新创建文件即可
#如:echo hello >/usr/share/nginx/html/index.html [容器中的目录]
#如:echo hello >>/var/lib/docker/volumes/www-vol/_data/index.html [映射出来的目录]
------------------------------------------------------------------------------------------------------
PHP解析测试:
echo '<?php phpinfo(); ?>' >/var/lib/docker/volumes/www-vol/_data/index.php
php-fpm.conf下载地址:
https://www.chenleilei.net/soft/php-fpm.conf
wordpress安装配置:
下载安装包:
cd /var/lib/docker/volumes/www-vol/_data/
wget https://cn.wordpress.org/latest-zh_CN.zip
unzip latest-zh_CN.zip
mv wordpress/* ./
rm -fr wordpress
数据库名:wordpress
用户名: wordpress
密码: 123456
网站目录权限设置:
useradd -u 1000 www-data -M -s /sbin/nologin
chown -R 755 /var/lib/docker/volumes/www-vol/_data
chown -R www-data /var/lib/docker/volumes/www-vol/_data
1. 进入网页数据目录(docker inspect www-vol):
cd /var/lib/docker/volumes/www-vol/_data
echo '<?php phpinfo(); ?>' >./index1.php
访问查看测试页面 index1.php ,如果正常,就将wordpress网站文件放到该目录下
2. 安装wordpress
数据库地址:172.18.0.2 [通过 docker inspect lnmp_mysql |grep IPA 查看]
数据库名: wordpress
用户名:wordpress
密码:123456
链接测试:mysql -uwordpress -p123456 -h 172.18.0.2
图形页面:
出现这个页面,请复制他的内容在服务器网站根目录 创建一个文件 wp-config.php 然后内容写入保存再次访问。