当前位置: 首页 > news >正文

快速部署PHP Web环境(nginx php mysql redis)

先看最终效果,如下:
在这里插入图片描述

它是什么?

它是 docker 容器虚拟化技术。总共只有几KB大小的描述文件,文件里定义了要安装什么、配置什么,一执行就全自动处理好了。

它有什么用?

  1. 解决新来同事搭环境搭半天的问题
  2. 解决重装系统后要搭环境浪费时间的问题
  3. 环境一致,快速部署

进入详情讲解(此脚本针对debian系操作系统,如deepin、ubuntu)

如图,四个文件:
在这里插入图片描述

  1. 准备文件 Dockerfile-php7.4,内容如下。这是基于 docker 官方的 7.4版本的PHP ,并且定义了要安装 MySQL 扩展、GD 扩展、Redis 扩展,如果有需要,你可以自行增减。
FROM php:7.4-fpm

# 系统更新
RUN apt-get update \
# 安装sql扩展
&& docker-php-ext-install pdo_mysql \ 
# 安装图形处理扩展
&& apt install libjpeg62-turbo-dev libfreetype6-dev -y \
&& docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd \ 
# 安装redis扩展
&& pecl install -o -f redis \
# 删除临时文件
&& rm -rf /tmp/pear \
# 启用redis扩展
&& docker-php-ext-enable redis
  1. 准备文件 docker-compose.yml,内容如下。这是一个工程描述文件,里面描述了要安装什么、配置什么。
version: '3'
services:
 php:
   build:
     context: ./
     dockerfile: Dockerfile-php7.4 #从这个文件名里构建php
   ports:
     - "9100:9000"
   container_name: common_1.0_php #容器名
   volumes:
     - "/opt/wwwroot/www:/www" #把宿主机的 /opt/wwwroot/www 目录挂载到容器内的 /www 目录
   restart: always #自动启动


 nginx:
   image: nginx:1.23 #基于官方的镜像nginx:1.23
   ports:
     - "80:80"
   container_name: common_1.0_nginx
   restart: always
   volumes:
     - "/opt/wwwroot/www:/www"
     - "/opt/wwwroot/nginx/conf.d:/etc/nginx/conf.d"
     - "/opt/wwwroot/nginx/logs:/etc/nginx/logs"


 redis:
   image: redis:7.0
   ports:
     - "6179:6379"
   container_name: common_1.0_redis
   restart: always


 mysql:
   image: mysql:8.0
   ports:
     - "3106:3306"
   container_name: common_1.0_mysql
   restart: always
   volumes:
     - "/opt/wwwroot/mysql:/var/lib/mysql"
   environment:
     MYSQL_ROOT_PASSWORD: 123qwe.
  1. 准备文件 start.sh ,这是一个自动化处理脚本,内容如下:
#!/bin/bash
echo "请问,您想要做什么?这里是php通用开发环境。输入 exit 退出。"
echo "  安装docker:install docker"
echo "  卸载docker:remove docker"
echo "  安装docker-compose:install compose"
echo "  卸载docker-compose:remove compose"
echo "  生成PHP环境:build php env"
echo "  查看容器列表:docker ps"
echo "  查看镜像列表:docker images"

echo ""


function go(){
	if [ "$install_type" ]
	then
		if [ "$install_type" == "install docker" ]
		then
			sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
		elif [ "$install_type" == "remove docker" ]
		then
			sudo apt-get purge docker-ce
			sudo rm -rf /var/lib/docker
		elif [ "$install_type" == "install compose" ]
		then
			sudo curl -L "https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
			sudo chmod +x /usr/local/bin/docker-compose
			sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
			docker-compose version
		elif [ "$install_type" == "remove compose" ]
		then
			sudo /usr/local/bin/docker-compose
		elif [ "$install_type" == "build php env" ]
		then
			sudo docker-compose up -d

		elif [ "$install_type" == "docker ps" ]
		then
			sudo docker ps

		elif [ "$install_type" == "docker images" ]
		then
			sudo docker images
		else
			echo "请输入正确的值"
		fi
	else
		echo "请输入一个值"
	fi		
}

# 死循环,这样可以多次处理
while [ true ]
do
	read -p "请输入一个值:" install_type
	if [ "$install_type" ] && [ "$install_type" == "exit" ]
	then
		break
	fi
	go $install_type
done

搭建 PHP Web 环境

  1. 进入当前目录,执行 ./start.sh,就会看到文章开头的图片效果。此教程,需要先安装docker 和
    docker-compose,可自行安装,也可在这里安装,输入对应命令即可。

  2. 输入:build php env ,可能会提示输入密码,这是当前 linux 系统管理员的密码。
    在这里插入图片描述
    就这么简单,搞定了。看到如上几个 started 表示 PHP Web 环境构建成功并启动了,mysql启动了,php启动了,redis启动了,nginx启动了。连接的时候,用宿主机IP也行、用容器名也行。

  3. 输入:docker ps 查看这四个容器是否启动了,名称都是 common_1.0_xx
    在这里插入图片描述

新增一个网站

  1. 设置 host 域名,或去域名商解析一个域名。请自行完成。我这里配置了一个 sdt.com

  2. 配置 nginx ,在 /opt/wwwroot/nginx/conf.d 目录里,新建一个 sdt.com.conf 文件,内容如下:

# 服务端配置节点
server {
    # 监听端口。此端口不能被占用了
    listen       80;
    # 此站点的域名。直接在宿主机配置一个host域名,或者在阿里云等云服务商那里解析过来。
    server_name  sdt.com;
    # 此站点的入口目录,也就是php容器的目录。宿主机挂载到容器内的目录。
    root  /www/shangdiantuanfenxiao/public;
    # 入口目录里可识别的入口文件
    index index.html index.htm index.php;
    
	# 配置url。Thinkphp的伪静态设置。这个是fastadmin,用的是thinkphp5.0
    location / {
        #访问路径的文件不存在则重写URL转交给ThinkPHP处理
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
        }
    }
    
     # 配置url,处理及转发PHP请求
    location ~ \.php(/|$) {
    # 可以直接写容器名,也可以直接写宿主机的IP
	fastcgi_pass   common_1.0_php:9000;
	fastcgi_index  index.php;
	fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	fastcgi_param  PATH_INFO  $fastcgi_path_info;
	fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
	include        fastcgi_params;
    }
    # 目录会自动生成。
    access_log  /etc/nginx/logs/sdt.com.log;
    # 错误日志
    error_log  /etc/nginx/logs/sdt.com.error.log;
}

注意,新增一个网站,就在 /opt/wwwroot/nginx/conf.d 里增加一个配置文件即可,nginx 会自动去这个目录里读取所有配置文件。

  1. 打开网站看看
    在这里插入图片描述

附上下载地址:https://gitee.com/gogls/php-web-environment.git

相关文章:

  • 玉溪网站建设现状/app营销模式有哪些
  • 电商网站国内外需求分析/百度域名
  • 网站建设价值/软件定制开发平台
  • 包头网站建设熊掌号/品牌推广方案思维导图
  • 北京做网站建设的公司哪家好/牛推网
  • 网页的网站建设/网络网站推广选择乐云seo
  • Gadget-2在一个加速卡异构平台上的移植与优化
  • 【矩阵论】7.范数理论——基本概念——矩阵范数生成向量范数谱范不等式
  • 还有1个月,乘用车搭载首超5百万辆!L2/L2+前装交付一路狂奔
  • 数商云SRM供应商系统打造家居建材企业完整电商数据生态平台
  • 向内而生 向远而行 | 希尔贝壳荣获“2022年度最具投资价值创新企业”奖
  • android 定时器
  • 联想C2E摄像头的折腾
  • Debezium系列之:认证方式使用kerberos认证SASL/GSSAPI
  • 常用的 Emoji 符号
  • 实验室设计有哪些基本原则
  • 使用 Pygame Zero 构建一个捕捉游戏(详细步骤含源码)
  • Debian系列-在新的GNOME下无法启动Qt