mysql mysql 创建新用户,同时创建同名数据库并赋予所有权限 服务器新建站点时,经常会要求新建一个数据库帐号,并新建与帐号同名的数据库,并赋予所有权限,在此记录下使用的代码。 ```shell [root@ecs-2c24 ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 251978 Server version: 5.6.43-log MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. // 创建名为 zbsc 的数据库 MySQL [(none)]> create database zbsc; Query OK, 1 row affected (0.00 sec) // 创建名为zbsc的用户,允许从任何IP以密码方式登录 MySQL [(none)]> create user 'zbsc'@'%' identified by '密码'; Query OK, 0 rows affected (0.00 sec) // 赋予zbsc用户对zbsc数据库下所有表的完整权限 MySQL [(none)]> grant all on zbsc.* to 'zbsc'@'%'; // 赋予zbsc用户对zbsc数据库下所有表的只读权限 MySQL [(none)]> grant select on zbsc.* to 'zbsc'@'%'; Query OK, 0 rows affected (0.00 sec) // 刷新权限表,使其立刻生效 MySQL [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) // 收工 ``` 阅读全文 2020-03-17 dogify 0 条评论 3123 次浏览
Laravel Laravel 修改分页信息来源 # 简介 Laravel 默认的分页数据来源是url参数,而业务中需要从post参数中获取页码和页长信息。 假设我们有个新闻表,需要分页返回数据,代码如下 ``` return response()->json(News::paginate($pageSize)); ``` 页长信息由 `$pageSize` 变量传入,但是并没有传入页码信息。 # 实现 首先假定,表单参数 `page` 代表页码,`page_size` 代表页长。 在 `AppServiceProvider` 的 boot 方法中添加以下代码,即可从 post 参数中获取页码信息。 ``` namespace App\Providers; class AppServiceProvider extends ServiceProvider { // 省略无关代码 /** * Bootstrap any application services. * * @return void */ public function boot() { Paginator::currentPageResolver(function () { return intval(request()->page) ?: 1; }); } } ``` 阅读全文 2020-03-17 dogify 0 条评论 3089 次浏览
默认分类 Kong install by Docker 中文翻译 [查看原文](https://docs.konghq.com/install/docker/?_ga=2.210969298.678130112.1575253233-797880523.1575253233 "查看原文") 关于如何在 Docker 中使用 Kong 的细节讨论可以在存有 [Kong](https://hub.docker.com/_/kong/ "Kong") 镜像的 DockerHub 页面上找到。我们也有一个 [Docker Compose 模板](https://github.com/Kong/docker-kong/tree/master/compose "Docker"),内置了群组和可扩展性。 # 带数据库模式 以下是一个简单例子,展示了如何将一个 kong 容器连接至 Cassandra 或 PostgreSQL。 1. 创建 docker 网络 你需要手动创建一个网络,用于容器之间互相发现和沟通。在本例中,kong-net是网络的名称,你可以随便改个名字。 ```shell $ docker network create kong-net ``` 2. 运行数据库 期望使用 Cassandra 容器: ```shell $ docker run -d --name kong-database \ --network=kong-net \ -p 9042:9042 \ cassandra:3 ``` 期望使用 PostgreSQL 容器: ```shell $ docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e POSTGRES_USER=kong \ -e POSTGRES_DB=kong \ postgres:9.6 ``` 3. 准备数据库 用一个临时 Kong 容器运行迁移。 ```shell $ docker run --rm \ --network=kong-net \ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=kong-database \ -e KONG_CASSANDRA_CONTACT_POINTS=kong-database \ kong:latest kong migrations bootstrap ``` 在上例中,Cassandra 和 PostgreSQL 均已完成配置,不过,你需要用 Cassandra 或 PostgreSQL 更新 `KONG_DATABASE` 环境变量。 对于版本低于 0.15 的注意点:版本号低于 0.15 的 kong (最高 0.14),用 `up` 子命令替换 `bootstrap`。另外,版本号低于 0.15 的 kong 禁止同时运行迁移。同一时间,只能有一个 kong 节点在运行迁移。这个限制对 kong 0.15,1.0 或更高版本不存在。 4. 启动 kong 准备好数据库和运行迁移后,启动一个连接至数据库容器的 kong 容器,就像前文的临时迁移容器一样。 ```shell $ docker run -d --name kong \ --network=kong-net \ -e KONG_DATABASE=postgres \ -e KONG_PG_HOST=kong-database \ -e KONG_CASSANDRA_CONTACT_POINTS=kong-database \ -e KONG_PROXY_ACCESS_LOG=/dev/stdout \ -e KONG_ADMIN_ACCESS_LOG=/dev/stdout \ -e KONG_PROXY_ERROR_LOG=/dev/stderr \ -e KONG_ADMIN_ERROR_LOG=/dev/stderr \ -e KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 5. 使用 kong kong 正在运行: ```shell $ curl -i http://localhost:8001/ ``` 通过 [5 分钟快速入门](https://docs.konghq.com/1.4.x/getting-started/quickstart/ "5") 快速学习如何使用 kong。 # 无数据库模式 以 [无数据库模式](https://docs.konghq.com/1.4.x/db-less-and-declarative-config/ "无数据库模式") 启动 kong 的步骤: 1. 创建 docker 网络 这与 Pg/Cassandra 教程中的一样。我们使用了相同的网络名 `kong-net`,你也可以改名成你想要的名字。 ```shell $ docker network create kong-net ``` 以无数据库模式运行 kong 并不强制要求此步骤,不过,万一以后你想添加一些其它玩意(例如由 Redis Cluster 驱动的限速插件)时是个不错的伏笔。 2. 创建一个 docker 磁盘 (volume) 本文中,一个 docker 磁盘就是实体主机中的一个目录,它被映射至容器内的一个目录。磁盘有一个名字,本里中,我们将其命名为 `kong-vol`。 ```shell docker volume create kong-vol ``` 现在,你可以检查这个磁盘了: ```shell $ docker volume inspect kong-vol ``` 结果类似这个: ```json [ { "CreatedAt": "2019-05-28T12:40:09Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/kong-vol/_data", "Name": "kong-vol", "Options": {}, "Scope": "local" } ] ``` 注意条目 `MountPoint`,下一步我们会用到这个路径。 3. 准备好你的配置文件 相关语法和属性在 [声明式配置格式](https://docs.konghq.com/1.4.x/db-less-and-declarative-config/#the-declarative-configuration-format "声明式配置格式") 中介绍。 在其中添加所有需要的条目(Services 服务,Route 路由,Plugins 插件,Consumers 消费者,等等)。 本教程中,我们假定你将其命名为 `kong.yml`。 文件保存在上一部步提到的 `MountPoint` 路径下。在本例中,存储路径为 `/var/lib/docker/volumes/kong-vol/_data/kong.yml`。 4. 以无数据库模式启动 kong 虽然可以通过 `KONG_DATABASE=off` 以无数据库模式启动 kong,但更常用的方式是通过 `KONG_DECLARATIVE_CONFIG` 变量将声明式配置文件作为参数传递。为此,我们要让此文件在容器中可见。我们通过 `-v` 实现操作,它将 `kong-vol` 映射至容器内的 `/usr/local/kong/declarative` 目录。 ```shell $ docker run -d --name kong \ --network=kong-net \ -v "kong-vol:/usr/local/kong/declarative" \ -e "KONG_DATABASE=off" \ -e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 5. 使用 kong Kong 应该已经运行起来,包含了 kong.yml 中添加的条目。 ```shell $ curl -i http://localhost:8001/ ``` 例如,获取服务列表: ```shell $ curl -i http://localhost:8001/services ``` 阅读全文 2020-03-17 dogify 0 条评论 3595 次浏览
Laravel 利用 laradock 快速搭建 laravel 开发环境 # 简介 编程的时候,最蛋疼的莫过于最开始的搭建开发环境了。有些开发环境搭建很方便,有些却很麻烦。国内 PHP 开发常见的框架 thinkphp 的环境搭建很简单,Windows 系统目前常见的方案是 PhpStudy 集成环境,而 linux 系统则一般是 LAMP(Linux + Apache + Mysql + PHP) 或 LNMP (Linux + Nginx + Mysql + PHP) 的架构。 目前我使用的开发系统是 Deepin 15.11,开发 IDE 是 PhpStorm,数据库访问工具是 PhpMyAdmin,因为所开发的项目需要使用 Redis 存储一些缓存数据,所以还需要安装 Reids。直接在搭建 LNMP + Redis + PhpMyadmin 的方式是可以满足我的需求,但手动安装太麻烦,且开发阶段,经常会碰到切换 PHP 版本的场景,手动搭建的切换版本麻烦。本着拿来主义的精神,我使用了 laradock 环境。 [laradock][1] 是一套为 PHP 开发精心设计的 docker 配置,为了使用它,你必须安装了 git (获取laradock),docker 和 docker-compose。程序开发时,要讲究一个用,不懂原理不要紧,先用,后面再慢慢搞清楚。 # 必要软件安装 git的安装不做赘述,不会的自行搜索。 docker安装:请参考此书 [Docker 入门到实践][2] docker-compose 的安装请参考 [安装介绍][3] # 构建 laradock 环境 假设你的 PHP 工程代码都位于 /home/user/work 目录下,work 目录下有 A 和 B 两个工程。 1. cd 至 work 目录 `cd /home/user/work` 2. 获取 laradock 源码 `git clone https://github.com/Laradock/laradock.git` 3. 进入 laradock 目录,复制 `env-example` 为 `.env` `cp env-example .env` laradock 提供的 `env-example` 文件是一个示例配置,主要用于配置各个软件的版本,默认采用对应软件的最新版,一般不用修改。 因为我本地开发使用的 mysql 是 5.7 的,所以我将 .env 中配置的 mysql 版本由 latest 改为了 5.7。 4. 配置站点 进入 laradock 下的 nginx 目录,在 sites 文件夹下有个 laravel.conf.example 文件,复制并重命名为 a.test.conf。编辑 a.test.conf,将 server_name 改为 a.test,将 root 改为 /var/www/A/public。因为在 docker 运行时,会根据默认配置,将与 laradock 的上级目录挂载至 nginx 容器的 /var/www 目录下,所以,原来的 A 工程在 nginx 容器内的路径实际为 /var/www/A。sever_name 改为 a.test 指定站点域名,因为是本地开发,此域名实际不存在,所以需要在本地的 hosts 文件中添加一行记录 `127.0.0.1 a.test`。 5. 修改 A 工程的 `.env` 配置文件 `DB_HOST=mysql` `REDIS_HOST=redis` 6. 运行需要的容器 `docker-compose up -d nginx mysql phpmyadmin redis workspace` 此步骤会按照 .env 的配置构建各个容器并运行,因为长城的存在,这步很可能会挂在某些步骤上,推荐挂梯子运行此步。另外,因为从 docker 官方仓库下载镜像速度很慢,推荐将docker配置为拉取国内镜像。 7. 开始使用 访问站点:浏览器访问 `http://a.test` 访问 phpmyadmin:浏览器访问 127.0.0.1:8080 运行 composer 或 laravel 工具:在 laradock 目录下运行 `docker-compose exec --user=laradock workspace bash` 进入容器,工程目录在 `/var/www/A`。 查看 redis:在 laradock 目录下运行 `docker-compose exec redis bash` 进入容器,运行 redis-cli 命令。 [1]: https://laradock.io/ "laradock" [2]: https://yeasy.gitbooks.io/docker_practice/ "Docker 入门到实践" [3]: https://yeasy.gitbooks.io/docker_practice/compose/install.html "参考" 阅读全文 2020-03-17 dogify 0 条评论 3383 次浏览
默认分类 开发人员究竟应该使用什么系统 这是一片杂谈,纯属于扯淡类型的,看个乐就行。 说实话,程序员总会有点 geek 精神,受这种精神的影响,在搬砖日常中,我总是想把系统换成 Linux。平常总是看到文章说 Linux 咋牛逼,咋自由,开发时怎么爽,加上身边有个做 android framework 的同事一直吹,终于在某天,我给我的笔记本装了个 Deepin,与原来的 Win 10 组成了双系统(Win10 有很多东西,不能直接抛弃,怂)。 装完系统了,那就开机体验,结果刚开机,进去就卡在了 logo,动弹不得。网络上查了一下,发现是因为我的笔记本是 Intel 集显 + Nvida 独显双显卡的模式,而独显这种东西,主要的应用场景就是玩游戏,而在 linux 系统,一般都是用来开发,集显就够用了,所以 N 卡驱动在 linux 系统上的兼容性就很差。因为需求少,就没人去优化驱动,所以一直就是这个状态。最后是修改 grub 引导改为用集显进入系统,进入系统后,再由 N 卡驱动托管。同样是因为用的人少的原因,显卡驱动在独显和集显的切换上很差,丝毫没有 windows 上无缝切换的体感。这种切换的体验,不同的发行版的体验也不同。 解决了显卡问题,进入系统,那就开始开发吧,打开了终端,体验了下原生的 shell,的确是比 windows 的 cmd 或 powershell 爽。虽然 windows 也有但其它问题也来了。因为是做安卓开发,那对应的开发环境要装起来啊,Android Studio 要装吧,JDK要装吧,Windows 上软件的安装基本就是下一步,没啥难点。但是 Linux 的软件安装就比较狠了,简单点的从系统的软件库装,这个软件库类似 windos 的应用市场,但是安装软件的方式一般是命令行,现在也开始提供图形界面了。 装好了 AS 和 JDK,然后连上设备,结果电脑上识别不到,搜了下,还要自己手动装驱动才能识别,完全没有 windows 上傻瓜式的体验。折腾来折腾去,最后终于弄完了,也能开发了,但是很多常用的软件都很难折腾。不过经过查询,也都是有替代。 整体折腾完后的感受就是没有在 windows 上那种开箱即用的舒适,大多数常用软件在 linux 上的体验不如 windows,但是,原生的 linux 环境和终端在某些开发时非常的爽,最爽的就是 docker了。 总结,喜欢折腾的人可以换 linux。有钱的可以换 MAC,省事就 windows。 阅读全文 2020-03-17 dogify 0 条评论 3597 次浏览