LNMP

  • LNMP指的是Linux、Nginx、MySQL和PHP的组合,通常用于搭建和运行网站。

安装docker-compose

关闭selinux和防火墙

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
reboot -f
#关闭防火墙
systemctl stop firewalld ; systemctl disable firewalld

时间同步

yum install ntpdate -y
ntpdate cn.pool.ntp.org
crontab -e
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org

安装基础软件包

yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack ntpdate telnet ipvsadm

修改内核参数

modprobe br_netfilter
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf

配置yum源

#上传kubernetes.repo到/etc/yum.repos.d/目录中
#添加docker在线源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

启动docker

yum install docker-ce docker-compose -y
systemctl start docker && systemctl enable docker.service

准备镜像

#上传mysql、nginx、php镜像
docker load -i nginx.tar.gz
docker load -i mysql.tar.gz
docker load -i php.tar.gz

docker-compose常用的命令

#启动并后台运行所有的服务
docker-compose up -d
#列出项目中目前的所有容器
docker-compose ps
#停止某个服务
docker-compose stop
#启动某个服务
docker-compose start
#停止并删除容器、网络、卷、镜像
docker-compose down

docker-compose部署lnmp

准备nginx配置文件

# nginx挂载目录
mkdir /root/lnmp && cd /root/lnmp && mkdir nginx && cd nginx && mkdir conf && cd conf
# nginx默认配置文件
tee default.conf <<'EOF'
server {
    listen       80;
    root   /usr/share/nginx/html;
    index   index.html index.htm index.php;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
        index  index.html index.htm index.php ;
        try_files $uri $uri/ /index.php?$query_string;
        autoindex  on;
    }

    location ~ \.php$ {
        #php73是容器命名
        fastcgi_pass   php73:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
    }

}
EOF

docker-compose yml文件

cd /root/lnmp/
tee docker-compose.yml <<'EOF'
#定义docker compose yml版本
version: "3"
#定义我们的服务对象
services:
#自定义的服务名称
  nginx:
     #镜像名称,默认拉取本地镜像,没有的话从远程获取
     image: nginx:latest
     #自定义容器的名称
     container_name: c_nginx
     #将宿主机的80端口映射到容器的80端口
     ports:
      - "80:80"
     #将宿主机的~/lnmp/www目录和容器的/usr/share/nginx/html目录进行绑定,并设置rw权限
     #将宿主机的~/lnmp/nginx/conf/default.conf和容器的/etc/nginx/conf.d/default.conf进行绑定
     volumes:
      - ~/lnmp/www/:/usr/share/nginx/html/:rw
      - ~/lnmp/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
     #设置环境变量,当前的时区
     environment:
      TZ: "Asia/Shanghai"
     #容器是否随docker服务启动重启
     restart: always
     #容器加入名为lnmp的网络
     networks:
      - lnmp
  php:
    image: php:7.3.29-fpm
    container_name: php73
    volumes:
      - ~/lnmp/www/:/var/www/html/:rw
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - lnmp

  mysql:
    image: mysql:5.6
    container_name: mysql56
    ports:
      - "3306:3306"
    volumes:
      - ~/lnmp/mysql/data:/var/lib/mysql/:rw
    restart: always
    networks:
      - lnmp
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      TZ: "Asia/Shanghai"
networks:
  #创建了一个自定义的网络叫做lnmp
   lnmp:
EOF

#基于docker-compose启动容器
docker-compose up -d

测试网站主页

cd /root/lnmp/www/
echo "hello,welcome to study" > index.html
#浏览器访问docker-compose机器ip:
http://192.168.40.200/

测试php服务

tee aa.php <<'EOF'
<?php
  phpinfo();
?>
EOF
#浏览器访问docker-compose机器ip:
http://192.168.40.186/aa.php

连接mysql

#安装了 `pdo`、`pdo_mysql` 和 `mysqli` 这三个扩展,这些扩展通常用于 PHP 与 MySQL 数据库进行交互。
docker exec -it php73 /bin/bash
docker-php-ext-install pdo pdo_mysql mysqli
docker-php-ext-enable pdo pdo_mysql mysqli
exit
#重启docker-compose
cd /root/lnmp/
docker-compose restart

#通过php脚本连接数据库
cd /root/lnmp/www/
tee mysql.php <<'EOF'
<?php
// 创建连接
$conn = new mysqli('mysql56','root','123456');
if($conn->connect_error){
    die("连接失败,错误:" . $conn->connect_error);
}
echo "mysql连接成功";
EOF

#浏览器访问docker-compose机器ip:
http://192.168.40.186/mysql.php