Laravel项目线上服务器docker化部署实战全过程记录指导(转 2021-04-02)

2023-11-09

最近,笔者终于在重重困难之下,完成了自己的第一个laravel项目,有什么感受呢,当然就是laravel虽然体型大,但是功能也更全了。总起来说,是一个在php后端领域值得深入挖掘,日积月累的框架。项目的本地开发和测试都已经完成,那么接下来面临的自然是部署到公网服务器上。当然我们也不会直接就在服务器上裸露部署,而是使用笔者前几篇文章提到的docker容器技术进行容器化隔离部署。那么从一个刚初始化后的服务器到部署完,该是怎么一个过程呢,让我们来一探究竟。

首先介绍我们的程序及服务器的配置:

后端程序及依赖安装程序
1.Laravel5.8
2.mysql5.7
3.composer

服务器及容器配置
1.腾讯云服务器
2.docker镜像:nginx-php(笔者订制nginx-php开发环境,读者可以自行下载使用,其中集成了nginx1.14,php7.2,以及php7.2-fpm,composer依赖安装器,非常适合php后端开发的开箱即用)
3.docker镜像:mysql5.7

下面开始正题:

一 服务器的初始化配置
我使用的是腾讯云服务器,安装系统为后端人员最喜闻乐见的ubuntu16.04,给服务器装完系统之后,我们需要做以下操作:

1.修改用户名
一般在服务器初始化后,一般会分配统一的用户名,如腾讯云分配的是ubuntu用户名,我们一定要修改用户名为自己的自定义名称,这样就能一定程度上防止黑客猜到你的用户名,进行ssh远程登录,是维护服务器安全的一个基本操作。点此进行操作。记得修改完用户名后将服务器重启

注意,一般不要将服务器开通root登录,否则,一旦服务器被黑,服务器的一切都暴露在危险之中,如果非要修改服务器为root登录的话,点此进行操作。

而后,关于程序环境的搭建,和服务器系统就无关了,因为我们使用了容器技术,就要把所有的软件开发环境放在docker容器中。

2.将apt镜像源换为阿里云镜像源
更换操作如下:更换镜像源

如果是腾讯云服务器的话,本身的源镜像就是腾讯云的国内镜像,就不需要进行替换。

二 Docker环境的搭建及镜像的拉取和运行
1.ubuntu中安装docker
安装教程:ubuntu系统docker官方安装文档

2.设置docker阿里云下载源
(安装时间较为漫长,可以点上一杯咖啡了),但是,如果你是国内服务器的话,很不幸的是,你被wall了,这个时候,万能的阿里云镜像源就会帮助到你了。
使用阿里云docekr-ce镜像进行下载安装:
1.docker阿里云镜像安装操作方法
2.docker阿里云镜像地址

注意:阿里云镜像库已经基本包含了所有常用的开源镜像,可以放心快速的使用:官方镜像

安装完docker之后,可以创建docker用户组,将当前用户加入其中,之后使用docker就不用再打sudo,使用管理员权限:操作方法如下

3.下载,安装,运行docker镜像nginx-php,mysql5.7
如上面介绍的nginx-php容器,是一个集成了Nginx,php,php-fpm.composer,甚至还有imagick 处理图像的php扩展,并且自带php-mysql扩展,能够为laravel的数据库迁移提供数据库驱动。专门为php后端开发量身打造的开发环境,真正做到即插即用。
nginx-php docekr 镜像地址

镜像下载完成之后,开始运行镜像,生成容器。

(1)nginx-php的运行
首先,在宿主服务器中创建nginx服务器架构文件夹,用来完成docekr容器向宿主机的文件映射。因为每次需要更改文件就进入docker容器中,实在是太难受了。
首先在文件中建立以下文件夹目录:
.
├── conf
├── log
│ ├── access.log
│ └── error.log
└── www
conf:用来存放nginx虚拟主机配置文件,后缀同意为.conf
log:用来存放nginx的日志文件
www:用来存放程序代码文件

创建完成之后,运行nginx-php镜像,生成容器,在运行时,注意三个文件夹的映射指定。
命令为:

docker run -itd --name pipihome -p 8601:8601 -p 8602:8602 -p 8603:8603 -v /usr/local/code/mine/pipihome/www/:/var/www -v /usr/local/code/mine/pipihome/conf/:/etc/nginx/conf.d -v /usr/local/code/mine/pipihome/log/:/var/log/nginx 4c2729e78cfa
1
注意:在这里,我不选择目录的映射,而是直接进入docker容器中进行环境的搭建和项目的部署。原因是,在docker中,默认是root权限,因为它不是直接的宿主服务器,所以使用root权限,安全问题要小很多。更重要的原因是,如果将镜像中内容映射到宿主机中,那么文件系统在宿主机和容器中分别进行修改时,就有可能导致用户的权限问题,非常复杂,使用不太友好。不进行目录映射也能够完全的实现容器物理和逻辑的隔离独立。推荐这种使用方法,当然,上面那一种也可以使用,但要视情况而定。一定要注意目录映射导致的宿主机用户和容器用户不同导致的权限不满足问题。

运行完全独立的容器,命令为:

docker run -itd --name pipihome -p 8601:8601 -p 8602:8602 -p 8603:8603 --privileged 4c2729e78cfa
1
注意:加入 --privileged 启动选项,就能够使docker中的root用户拥有宿主机的root权限,能够使用宿主机的硬件等资源,具有宿主机的完全权限。否则的话docker中root的权限就相当于宿主机中普通用户。
该项是必须加入的,否则在之后的开发中,如果需要在docker容器中使用宿主机资源,就会提示权限不足,从而产生很多配置问题。

而后进入容器bash中,进行开发环境的搭建和代码的部署。

(2)nginx的配置
1.增大nginx服务器客户端上传文件的大小限制:
因为往往在客户端都有文件上传服务器的需求存在,且现在上传的文件都较大。
打开文件/etc/nginx/nginx.conf,添加如下代码:

client_max_body_size 50m;
1
修改完成之后重启nginx服务。
然而,本镜像已经预先添加了该功能,可以不用管该条配置了。

2.配置虚拟服务器:
首先配置后端laravel api访问的虚拟主机:
注意:该nginx-php框架已经配置好在nginx配置文件中的虚拟主机配置文件夹路径,只用在/etc/nginx/conf.d中新建以conf为后缀的配置文件就可以为服务器添加新的虚拟主机。
在文件夹/etc/nginx/conf.d中添加api.conf虚拟主机配置文件,代码如下:
(如果是开启ssl协议,https访问的虚拟主机,则需要提前将ssl证书上传至能引用到的位置)

server {
        listen 443;
        server_name domain.com;
        root filepath;
        index index.html index.htm index.php;

        ssl on;
        ssl_certificate /etc/nginx/ssl/www.domain.com_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/www.domain.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";

        charset utf-8;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }

        error_page 404 /index.php;

        location ~ \.php$ {
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
                fastcgi_pass   unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.(?!well-known).* {
                deny all;
        }
    }

配置完成之后,将laravel项目程序文件移至服务器文件根目录中,笔者使用git直接pull远程仓库代码:
首先

git init
1
初始化git仓库,而后添加远程代码仓库地址:

git remote add origin https://github.com/user/repo.git
1
laravel项目代码拉取本地之后,使用composer进行项目依赖的安装

composer install
1
如果你的服务器配置太低,内存过小,比如说1G或者2G,就会发生这个异常:

产生这个异常的原因是因为composer在安装依赖的时候,会占用大量内存,如果内存不足,就会报错,并停止安装依赖。那该怎么办呢?是有办法能解决的。
思路就是把服务器的物理存储作为暂时性的内存使用,来顺利完成本次依赖的安装:
ubuntu进行物理存储虚拟内存化
操作成功之后,即可进行依赖的安装。

注意:在安装完依赖之后,注意将暂时的虚拟内存释放至物理内存,要不然,物理内存的io速度远远小于真正的内存,影响服务器效率。
进入虚拟内存配置文件文件夹

/etc/swap
1
输入关闭释放物理存储虚拟内存化的命令

swapoff swapfile
1
即可完成虚拟内存的释放,释放虚拟内存。

注意:安装完成后,要新建.env文件,作为laravel项目的配置文件。且要文件递归式的将整个项目文件夹的权限改为700,保证laravel项目中日志文件等其他文件的创建执行过程。

(3) php配置
修改php.ini配置,增加php处理上传文件的大小限制:
php配置文件位置为:

/etc/php/7.2/fpm/php.ini
1
修改的配置内容为:

upload_max_filesize = 50M
post_max_size = 50M
1
2
修改完成之后,重启php-fpm服务即可。
然而,本镜像已经预先添加了该功能,可以不用管该条配置了。

(4) mysql镜像的运行和配置
运行mysql镜像,命令为:

docker run -itd -p port:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password 8679ced16d20
1
注意:docker中mysql启动的运行端口为3306.

注意:docker启动时 -p 指定的端口映射和容器中主体应用的运行端口不是一回事。即docker中mysql运行的端口和-p指定的没有任何关系,-p 只是指定了一个宿主机和容器的端口映射关系。

在一般开发情况下,我们一般会使用navicat远程连接mysql数据库,那么远程连接mysql数据库需要注意什么呢?
1.mysql数据库要开启root的远程主机访问权限。
2.mysql数据库要解除默认的只能本地访问的配置。
3.云服务器要开启mysql对应端口的安全组访问。
三条同时满足,才可以远程连接mysql。参考链接

注意:docker中的apt软件源是国外的官方源,下载速度那简直是一言难尽啊,所以,首先要将docker容器的软件源换为阿里云的软件源。方法如下:

进入宿主机apt软件源配置文件目录

/etc/apt
1
在该文件夹中,新建文件sources.list.aliyun
编辑该文件,写入以下内容:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
保存,退出。

将该文件从宿主机中复制进入容器中,替换容器中原有的sources.list文件,命令为:

docker cp sources.list.aliyun 1ae6a9b82595:/etc/apt/sources.list
1
然后进入容器bash内部,执行:

apt-get update
1
此时会出现以下异常:

GPG error: The following signatures couldn't be verified because the public key is not available
1
此时,执行以下两条命令即可完美解决:

sudo gpg --keyserver keyserver.ubuntu.com --recv 5523BAEEB01FA116 //(这个公钥根据提示来写的)
sudo gpg --export --armor 5523BAEEB01FA116 | sudo apt-key add -
1
2
解决完成之后,再次运行update,即可完美更换为阿里云apt源。

注意:docker的mysql5.7镜像运行后直接满足上文所述的 ”mysql远程连接三大条件“ 的前两条,再将腾讯云相应端口的入向端口的安全组打开,即可完美实现远程mysql的navicat连接。

三 laravel项目配置注意事项。
1.文件夹执行权限的注意。
如果需要在程序中向某个文件夹中创建新文件夹或者文件,需要用户对于该文件夹有执行权限,也就是至少需要该文件夹的权限为700,注意在部署后运行前修改这类文件夹的权限。可用于上传图片文件夹中的创建和操作。

2.laravel环境配置文件中数据库连接的配置
在laravel .env文件中配置项目数据库连接时,如果mysql,redis也是docker容器服务,在填写数据库服务主机地址,host时,注意,可以使用docker容器的虚拟网络地址,而不用直接写公网地址,相应的,端口就直接写数据库服务在容器中的运行端口,而不是宿主机的外部映射端口。
查看容器虚拟网络地址的命令:

docker inspect containerId(容器id) | grep IPAddress
1
3.laravel中数据迁移提示找不到数据库驱动的问题
该问题一般是由于php缺少php-mysql扩展的问题,直接安装该扩展即可,安装命令为:

apt-get install php-mysql
service php7.2-fpm restart
1
2
安装完成之后即可进行数据库迁移。
注意:上文提到的,笔者自己制作的laravel开发环境docker镜像 nginx-php 的最新版本已经集成了php-mysql扩展,可以放心直接使用,是不是很香呢?
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel项目线上服务器docker化部署实战全过程记录指导(转 2021-04-02) 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • Docker Compose 无法连接到数据库

    我使用 Nestjs 作为后端 并使用 typeorm 作为 ORM 我尝试在 docker compose 文件中定义我的数据库和应用程序 如果我将数据库作为容器运行 并从本地计算机运行应用程序 那么它运行良好 我的程序连接并创建表等 但
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲

随机推荐

  • AngularJS的使用总结

    1 AngularJS是一个前端JavaScript框架 它可通过
  • 无法使用域名访问服务器,但IP访问正常

    具体判断方法和解决办法 问题判断 在电脑的windows系统左下角点击 开始 运行 输入 cmd 确定 然后在弹出的命令提示符界面输入命令 nslookup 空格 域名 若命令结果中域名指向的ip和服务器实际公网ip一致 那么问题产生的原因
  • C语言 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)

    1 汇编实现 text global start start LED1点灯 gt PE10 RCC章节初始化 CC INIT 1 使能GPIOE组控制器 通过RCC MP AHB4ENSETR寄存器设置GPIOE组使能0x50000A28
  • C++11多线程之条件变量

    文章目录 一 关于多线程的同步 二 初始条件变量 三 关于条件变量的例题 四 生产者消费者模型 一 关于多线程的同步 函数被调用 分配相应的栈帧 进行现场保护 void func char c char filename 20 sprint
  • elementUI table组件渲染问题

    elementUI table组件渲染问题 1 问题 问题描述 页面内 使用选项卡 进行内容显示的切换 切换后 原本高度合适的表格出现白边 以及滚动条 检查Dom会发现 el table组件内 发现了一个类名为 is scrolling n
  • 分布式文件存储Minio学习入门

    文章目录 一 分布式文件系统应用场景 1 Minio介绍 Minio优点 2 MinIO的基础概念 3 纠删码ES Erasure Code 4 存储形式 5 存储方案 二 Docker部署单机Minio 三 minio纠删码模式部署 四
  • html空格符号代码及特殊符号

    一 html空格符号代码 nbsp 一个字符的半角的不断行的空格 如果需要在网页中插入多个空格 可以将 nbsp 代码写多遍 ensp 一个字符的半角的空格 也可以将 写多遍来插入多个空格 emsp 两个字符的全角的空格 也可以将 emsp
  • Flask框架入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

    Flask框架 一 简介 Flask是一个非常小的PythonWeb框架 被称为微型框架 只提供了一个稳健的核心 其他功能全部是通过扩展实现的 意思就是我们可以根据项目的需要量身定制 也意味着我们需要学习各种扩展库的使用 二 概要 1 安装
  • 【学习笔记】python实现excel数据处理

    概述 Excel固然功能强大 也有许多函数实现数据处理功能 但是Excel仍需大量人工操作 虽然能嵌入VB脚本宏 但也容易染上宏病毒 python作为解释性语言 在数据处理方面拥有强大的函数库以及第三方库 excel作为主要基础数据源之一
  • MySQL中的事务(隔离性详解)

    1 什么是事务 事务是指逻辑上的一组操作 组成这组操作的各个单元 要么全部成功 要么全部失败 通俗的说一组SQL语句 要么全部执行成功 一条语句出错则全部出粗 在不同的环境中 都可以有事务 对应在数据库中 就是数据库事务 2 为什么使用事务
  • RobotFramework学习系列--(一)

    测试工作需要用到了RobotFramework 之前只是使用 用了一段时间后 决定深入研究一下它 使用平台为Windows Linux 由于是基于Linux 系统方面的测试工作 使用的RobotFramework版本为2 8 5 先简单介绍
  • 强力推荐:Atom入坑必备插件

    You are my warm gloves my cloud beer my sun kissed shirt my day after day dreams 你是我温暖的手套 冰冷的啤酒 带着阳光味道的衬衫 日复一日的梦想 强力推荐 A
  • vue 快速入门--快速使用vue2

    关于mvvm的理解 说到mvvm 就要提到vue的优点了 vue有什么优点呢 更改变量很容易 具有即时性 这是我们广泛所知道的 vue的优点 在原来只有jquery的时候 我们改变一个元素的值的时候 我们需要深入到原代码里 重新绑定元素啦
  • C51数码管显示

    一 数码管简介 LED数码管 数码管是一种简单 廉价的显示器 是由多个发光二极管封装在一起组成 8 字 型的器件 管按段数可分为七段数码管和八段数码管 八段数码管比七段数码管多一个发光二极 管单元 也就是多一个小数点 DP 这个小数点可以更
  • 通过关键词模拟百度搜索并爬取前30页的URL

    想快速获取到百度搜索结果原始URL 一次一次输入搜索太慢了 所以就写了一个小爬虫 效率提升10000倍 平均耗时一个关键词爬取百度搜索结果前30页的链接耗时4秒内 1 你要准备一些搜索词 我的环境下我的搜索词是放在 key file pat
  • ini文件的读取

    ini文件 每行末尾有换行符 每个section之间有一空行 文件 0 id 0 key2 def key start 456 end 78 1 id 1 key1 abc key start 123 end 456 代码示例 includ
  • 2023-数仓建设规范指南

    一 数据模型架构原则 1 数仓分层原则 优秀可靠的数仓体系 往往需要清晰的数据分层结构 即要保证数据层的稳定又要屏蔽对下游的影响 并且要避免链路过长 那么问题来了 一直在讲数仓要分层 那数仓分几层最好 目前市场上主流的分层方式眼花缭乱 不过
  • MySQL中神奇的show命令详解

    show binary logs 列出服务器上的二进制日志文件 show binlog events 显示二进制日志中的事件 show character set 显示所有可用的字符集 show collation 列出服务器支持的排序规则
  • 全网最全的Postman接口自动化测试(史实级攻略)

    背景 该篇文章针对已经掌握 Postman 基本用法的读者 即对接口相关概念有一定了解 已经会使用 Postman 进行模拟请求的操作 当前环境 Window 7 64 Postman 版本 免费版 Chrome App v5 5 3 不同
  • Laravel项目线上服务器docker化部署实战全过程记录指导(转 2021-04-02)

    最近 笔者终于在重重困难之下 完成了自己的第一个laravel项目 有什么感受呢 当然就是laravel虽然体型大 但是功能也更全了 总起来说 是一个在php后端领域值得深入挖掘 日积月累的框架 项目的本地开发和测试都已经完成 那么接下来面