Client Adapter

基本说明

canal 1.1.1版本之后, 增加客户端数据落地的适配及启动功能, 目前支持功能:

  • 客户端启动器
  • 同步管理REST接口
  • 日志适配器, 作为DEMO
  • 关系型数据库的数据同步(表对表同步), ETL功能
  • HBase的数据同步(表对表同步), ETL功能
  • (后续支持) ElasticSearch多表数据同步,ETL功能

环境版本

  • 操作系统:无要求
  • java版本: jdk1.8 以上
  • canal 版本: 请下载最新的安装包,本文以当前v1.1.1 的canal.deployer-1.1.1.tar.gz为例
  • MySQL版本 :5.7.18
  • HBase版本: Apache HBase 1.1.2, 若和服务端版本不一致可自行替换客户端HBase依赖

一、适配器整体结构

client-adapter分为适配器和启动器两部分, 适配器为多个fat jar, 每个适配器会将自己所需的依赖打成一个包, 以SPI的方式让启动器动态加载, 目前所有支持的适配器都放置在plugin目录下

启动器为 SpringBoot 项目, 支持canal-client启动的同时提供相关REST管理接口, 运行目录结构为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- bin
restart.sh
startup.bat
startup.sh
stop.sh
- lib
...
- plugin
client-adapter.logger-1.1.1-jar-with-dependencies.jar
client-adapter.hbase-1.1.1-jar-with-dependencies.jar
...
- conf
application.yml
- hbase
mytest_person2.yml
- logs

以上目录结构最终会打包成 canal-adapter-*.tar.gz 压缩包

二、适配器配置介绍

2.1 总配置文件 application.yml

adapter定义配置部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
canal.conf:
canalServerHost: 127.0.0.1:11111 # 对应单机模式下的canal server的ip:port
zookeeperHosts: slave1:2181 # 对应集群模式下的zk地址, 如果配置了canalServerHost, 则以canalServerHost为准
mqServers: slave1:6667 #or rocketmq # kafka或rocketMQ地址, 与canalServerHost不能并存
flatMessage: true # 扁平message开关, 是否以json字符串形式投递数据, 仅在kafka/rocketMQ模式下有效
batchSize: 50 # 每次获取数据的批大小, 单位为K
syncBatchSize: 1000 # 每次同步的批数量
retries: 0 # 重试次数, -1为无限重试
timeout: # 同步超时时间, 单位毫秒
mode: tcp # kafka rocketMQ # canal client的模式: tcp kafka rocketMQ
srcDataSources: # 源数据库
defaultDS: # 自定义名称
url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true # jdbc url
username: root # jdbc 账号
password: 121212 # jdbc 密码
canalAdapters: # 适配器列表
- instance: example # canal 实例名或者 MQ topic 名
groups: # 分组列表
- groupId: g1 # 分组id, 如果是MQ模式将用到该值
outerAdapters: # 分组内适配器列表
- name: logger # 日志打印适配器
......

说明:

  1. 一份数据可以被多个group同时消费, 多个group之间会是一个并行执行, 一个group内部是一个串行执行多个outerAdapters, 比如例子中logger和hbase
  2. 目前client adapter数据订阅的方式支持两种,直连canal server 或者 订阅kafka/RocketMQ的消息

2.2 使用远程配置(Mysql)

可以使用远程配置中心(Mysql,可扩展)作为统一配置管理

2.1.1 创建mysql schema

1
CREATE SCHEMA `canal_manager` DEFAULT CHARACTER SET utf8mb4 ;

2.1.2 初始化数据

使用manager_ddl.sql脚本建表并初始化Demo数据,其中canal_config表id=2的数据对应adapter下的application.yml文件,canal_adapter_config表对应每个adapter的子配置文件

2.1.3 修改bootstrap.yml配置

1
2
3
4
5
6
canal:
manager:
jdbc:
url: jdbc:mysql://127.0.0.1:3306/canal_manager?useUnicode=true&characterEncoding=UTF-8
username: root
password: 121212

可以将本地application.yml文件和其他子配置文件删除或清空, 启动工程将自动从远程加载配置

修改mysql中的配置信息后会自动刷新到本地动态加载相应的实例或者应用

三、适配器启动

3.1 启动canal-adapter示例

3.1.1 启动canal server (单机模式), 参考: Canal QuickStart

3.1.2 修改conf/application.yml为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server:
port: 8081
logging:
level:
com.alibaba.otter.canal.client.adapter.hbase: DEBUG
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
default-property-inclusion: non_null

canal.conf:
canalServerHost: 127.0.0.1:11111
batchSize: 500
syncBatchSize: 1000
retries: 0
timeout:
mode: tcp
canalAdapters:
- instance: example
groups:
- groupId: g1
outerAdapters:
- name: logger

3.1.3 启动

1
bin/startup.sh

3.2 adapter管理REST接口

3.2.1 查询所有订阅同步的canal instance或MQ topic

1
curl http://127.0.0.1:8081/destinations

3.2.2 数据同步开关

1
curl http://127.0.0.1:8081/syncSwitch/example/off -X PUT

针对 example 这个canal instance/MQ topic 进行开关操作. off代表关闭, instance/topic下的同步将阻塞或者断开连接不再接收数据, on代表开启

注: 如果在配置文件中配置了 zookeeperHosts 项, 则会使用分布式锁来控制HA中的数据同步开关, 如果是单机模式则使用本地锁来控制开关

3.2.3 数据同步开关状态

1
curl http://127.0.0.1:8081/syncSwitch/example

查看指定 canal instance/MQ topic 的数据同步开关状态

3.2.4 手动ETL

1
curl http://127.0.0.1:8081/etl/hbase/mytest_person2.yml -X POST -d "params=2018-10-21 00:00:00"

导入数据到指定类型的库, 如果params参数为空则全表导入, 参数对应的查询条件在配置中的etlCondition指定

3.2.5 查看相关库总数据

1
curl http://127.0.0.1:8081/count/hbase/mytest_person2.yml

适配器列表

logger适配器

1
2
3
4
最简单的处理, 将受到的变更事件通过日志打印的方式进行输出, 如配置所示, 只需要定义name: logger即可
...
outerAdapters:
- name: logger

Hbase适配器

同步HBase配置 : Sync-HBase

RDB适配器

同步关系型数据库配置 : Sync-RDB

目前内置支持的数据库列表:

  1. MySQL
  2. Oracle
  3. PostgresSQL
  4. SQLServer

使用了JDBC driver,理论上支持绝大部分的关系型数据库

ES适配器

同步关ES配置 : Sync-ES

MongoDB适配器

Redis适配器


原文地址 : Client Adapter
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

SyncEs

canal 1.1.1版本之后, 内置增加客户端数据同步功能, Client适配器整体介绍: ClientAdapter
canal adapter 的 Elastic Search 版本支持6.x.x以上, 如需其它版本的es可替换依赖重新编译client-adapter.elasticsearch模块

阅读更多

Canal 简介


**canal [kə’næl]**,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)
阅读更多

快速入门

准备

  • 对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下
    1
    2
    3
    4
    [mysqld]
    log-bin=mysql-bin # 开启 binlog
    binlog-format=ROW # 选择 ROW 模式
    server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
    • 注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步
  • 授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant
    1
    2
    3
    4
    CREATE USER canal IDENTIFIED BY 'canal';  
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
    FLUSH PRIVILEGES;

启动

  • 下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.0.17 版本为例

    1
    wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz
  • 解压缩

    1
    2
    mkdir /tmp/canal
    tar zxvf canal.deployer-$version.tar.gz -C /tmp/canal
    • 解压完成后,进入 /tmp/canal 目录,可以看到如下结构
1
2
3
4
drwxr-xr-x 2 jianghang jianghang  136 2013-02-05 21:51 bin
drwxr-xr-x 4 jianghang jianghang 160 2013-02-05 21:51 conf
drwxr-xr-x 2 jianghang jianghang 1.3K 2013-02-05 21:51 lib
drwxr-xr-x 2 jianghang jianghang 48 2013-02-05 21:29 logs
  • 配置修改

    1
    vi conf/example/instance.properties
    • canal.instance.connectionCharset 代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1
    • 如果系统是1个 cpu,需要将 canal.instance.parser.parallel 设置为 false
  • 启动

    1
    sh bin/startup.sh
  • 查看 server 日志

    1
    vi logs/canal/canal.log
    1
    2
    3
    2013-02-05 22:45:27.967 [main] INFO  com.alibaba.otter.canal.deployer.CanalLauncher - ## start the canal server.
    2013-02-05 22:45:28.113 [main] INFO com.alibaba.otter.canal.deployer.CanalController - ## start the canal server[10.1.29.120:11111]
    2013-02-05 22:45:28.210 [main] INFO com.alibaba.otter.canal.deployer.CanalLauncher - ## the canal server is running now ......
  • 查看 instance 的日志

    1
    vi logs/example/example.log
  • 关闭

    1
    sh bin/stop.sh

原文地址 : 快速入门
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

Canal 说明

Canal 作为一个优秀的工具, 文档却不太好找, 可能是对 非 java 开发不友好, 包含 spring, jackson

这里把相关的文档做下记录, 以防漏掉

https://www.cnblogs.com/LQBlog/p/14661570.html
zk分布式锁
配置文件修改
增加es文件夹
全量
增量
根据条件增量
动态更新配置文件
配置application.properties

一份共享文档
canal入门


原文地址 : Canal 说明
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

ElasticSearch 分词使用

安装

地址 : https://github.com/medcl/elasticsearch-analysis-ik
1. 选择对应的ES的版本
2. 安装插件

1
2
3
cd /usr/share/elasticsearch/bin

./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.5/elasticsearch-analysis-ik-7.17.5.zip

这个版本的 7.17.5 安装失败, 可以使用第一种办法(参考 github 文档)

1
2
3
4
5
# ./elasticsearch-plugin install elasticsearch-analysis-ik-7.17.5.zip
-> Installing elasticsearch-analysis-ik-7.17.5.zip
-> Failed installing elasticsearch-analysis-ik-7.17.5.zip
-> Rolling back elasticsearch-analysis-ik-7.17.5.zip
-> Rolled back elasticsearch-analysis-ik-7.17.5.zip

示例

示例参考官方网站, 这里不做赘述
这里创建索引并创建属性, 也可以向github 中, 创建索引再创建字段

1
2
3
4
5
POST /index/_analyze
{
"text": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首",
"tokenizer": "ik_smart"
}

原文地址 : ElasticSearch 分词使用
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

Mac 使用Docker进行低版本PHP项目开发

安装环境

安装 docker

安装 PHP

搜索 php

1
2
3
4
5
6
7
8
$ docker search php
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
php While designed for web development, the PHP … 6569 [OK]
composer Composer is a dependency manager written in … 866 [OK]
adminer Database management in a single PHP file. 709 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 534 [OK]
mediawiki MediaWiki is a free software open source wik… 419 [OK]
php-zendserver Zend Server - the integrated PHP application… 201 [OK]

安装镜像

1
2
3
4
$ docker pull php:7.1-fpm
...
Status: Downloaded newer image for php:7.1-fpm
docker.io/library/php:7.1-fpm

重命名镜像, 挂载目录

1
2
3
$ docker run --name php71-fpm \
-v /Users/duoli/Documents/workbench:/var/www \
-d php:7.1-fpm

--name php71-fpm
将容器命名为 php71-fpm。
-v /Users/duoli/Documents/workbench:/var/www
将主机中项目的目录 /Users/duoli/Documents/workbench 挂载到容器的 /var/www

安装 Nginx

nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# /Users/duoli/Documents/program/docker/php71-conf.d
# default.conf
server {
listen 80;
server_name localhost;

# 根目录
root /var/www;
index index.php;

location ~ \.php$ {
# 映射 9000
fastcgi_pass php71-fpm:9000;
include fastcgi_params;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

启用映射

1
2
3
4
$ docker run --name nginx-php71 -p 8071:80 \
-v /Users/duoli/Documents/program/docker/php71-conf.d:/etc/nginx/conf.d:ro \
--link php71-fpm \
-d nginx

-p 8071:80
端口映射,把 nginx 中的 80 映射到本地的 8071 端口
-v ...
映射服务器的 conf.d 目录到本地目录, 方便配置
--link php71-fpm
php71-fpm 镜像的网络并入nginx 网络, 使用 php71-fpm便可识别到镜像服务
在目录创建

1
2
<?php
phpinfo();

使用 [http://localhost:8071/index.php](http://localhost:8071/index.php) 访问, 可以看到 phpinfo 信息
image.png

配置 Phpstorm 编辑器

配置 cli

打开 Preferences | PHP 配置
image.png

运行 cli

打开 Services, 运行 Docker, 找到启动的镜像, 运行 Terminal
image.png
这样既可运行 php

1
2
3
4
root@c5368c4120cc:/var/www/html# php -v
PHP 7.1.33 (cli) (built: Nov 22 2019 18:34:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

配置 composer

下载 composer.phar 到代码目录

A long-term-support version (2.2.x) still offers support for PHP 5.3.2+ in case you are stuck with a legacy PHP version

这里下载 composer 2.2 版本既可
运行 composer

1
2
3
4
5
6
7
# 更换源
$ php composer.phar config repos.packagist composer https://mirrors.cloud.tencent.com/composer/

# 更新代码
$ php composer.phar update
Loading composer repositories with package information
....

后续根据项目需求配置 nginx 映射访问即可


原文地址 : Mac 使用Docker进行低版本PHP项目开发
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

CentOS 使用 docker 安装 sentry

服务器配置不能低于 4U 8G
Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。Sentry 分为服务端和客户端 SDK,前者可以直接使用提供的在线服务,也可以本地自行搭建;后者提供了对多种主流语言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同时它可提供了和其他流行服务集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。
Sentry 本身是基于 Django 开发的,而且也依赖到其他的如 Postgresql、 Redis 等组件,所以一般有两种途径进行安装:通过 Docker 或用 Python 搭建。官网下分别有以下的两个介绍:
如果你选择了通过 Docker 进行安装,其实还有更加便捷的方式 —— docker-compose 。在 github 上有一个开源项目用于部署 Sentry ,我们可以直接使用该项目进行部署,首先是克隆该项目:
地址 : https://github.com/getsentry/onpremise/

阅读更多

# apache 安装记录

# apache 安装记录

apachectl -t 检测错误信息

cgi 模式

参考文章:Run PHP Applications under CGI with Apache on Debian 5

Local 8021 cgi

a2enmod actions
ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /local-bin/php-cgi

fastcgi 模式

a2enmod proxy
a2enmod proxy_fcgi
<FilesMatch "\.php$">
    SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch "\.php$">
    SetHandler  "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
%60apachectl%20-t%60%20%E6%A3%80%E6%B5%8B%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF%0A%0A%23%23%20cgi%20%E6%A8%A1%E5%BC%8F%0A%E5%8F%82%E8%80%83%E6%96%87%E7%AB%A0%EF%BC%9A%5BRun%20PHP%20Applications%20under%20CGI%20with%20Apache%20on%20Debian%205%5D(https%3A%2F%2Fwww.linode.com%2Fdocs%2Fwebsites%2Fapache%2Frun-php-applications-under-cgi-with-apache-on-debian-5-lenny)%0A%5BLocal%208021%20cgi%5D(http%3A%2F%2F192.168.1.103%3A8021%2Finfo.php)%0A%0A%60%60%60%0Aa2enmod%20actions%0A%60%60%60%0A%60%60%60%0AScriptAlias%20%2Flocal-bin%20%2Fusr%2Fbin%0AAddHandler%20application%2Fx-httpd-php5%20php%0AAction%20application%2Fx-httpd-php5%20%2Flocal-bin%2Fphp-cgi%0A%60%60%60%0A%0A%23%23%20fastcgi%20%E6%A8%A1%E5%BC%8F%0A%0A%60%60%60%0Aa2enmod%20proxy%0Aa2enmod%20proxy_fcgi%0A%60%60%60%0A%60%60%60%0A%3CFilesMatch%20%22%5C.php%24%22%3E%0A%20%20%20%20SetHandler%20%22proxy%3Aunix%3A%2Fvar%2Frun%2Fphp5-fpm.sock%7Cfcgi%3A%2F%2Flocalhost%22%0A%3C%2FFilesMatch%3E%0A%60%60%60%0A%60%60%60%0A%3CFilesMatch%20%22%5C.php%24%22%3E%0A%20%20%20%20SetHandler%20%20%22proxy%3Afcgi%3A%2F%2F127.0.0.1%3A9000%22%0A%3C%2FFilesMatch%3E%0A%60%60%60%0A%0A

原文地址 : # apache 安装记录
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

Apache alias 实现目录别名访问 和目录索引

Apache alias 实现目录别名访问 和目录索引

目录别名访问


Alias /phpmyadmin "d:/wamp/apps/phpmyadmin3.3.9/"  

# to give access to phpmyadmin from outside  
# replace the lines
#
#         Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
#
# by
#
#         Order Allow,Deny  
#    Allow from all

<Directory "d:/wamp/apps/phpmyadmin3.3.9/">
          Options Indexes FollowSymLinks MultiViews
          AllowOverride all
          Order Deny,Allow
          Deny from all
          Allow from 127.0.0.1
</Directory>




如何开启Apache的目录索引功能


模块加载

LoadModule dir_module modules/mod_dir.so
LoadModule autoindex_module modules/mod_autoindex.so

配置alias和目录权限

Alias /photo e:/photo
<Directory "e:/photo">
AllowOverride None
Options Indexes FollowSymLinks MultiViews
indexOptions FancyIndexing ScanHTMLTitles NameWidth=128 DescriptionWidth=256 HTMLTable VersionSort FoldersFirst
Order allow,deny  
Allow from all  
</Directory>







原文地址 : Apache alias 实现目录别名访问 和目录索引
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

apache做301重定向的方法

apache做301重定向的方法

重写方式

使用mod_rewrite重写URL的方式来做,做之前朋友记得检查一下你的apache是否已经加载了rewrite模块。如图所示的那个模块,在apahce的httpd.conf文件里面查看

如果已经支持了rewrite,直接在你要做的站点配置文件里面添加以下代码,注意修改域名为你要做的域名。

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^wctx123.com 
RewriteRule ^(.*)$ http://www.wctx123.com/$1 [R=permanent,L]

在这里判断当前服务器变量HTTP_HOST是否等于php100.com,为真就进行重写,按照R=permanent进行永久重定向,L表示并立即停止重写操作,并不再应用其他重写规则。

url跳转方式

在apache中用这个域名建立了两个虚拟主机,一个带www,一个不带。

然后我将不带www的正确解析到对应的网站上面,然后我将带www的域名解析i到不带www的主机目录下面的一个二级目录里面,然后我在这个二级目录里面放了一个index.php,我利用php代码来做这个301。

<?php         
Header("HTTP/1.1 301 Moved Permanently");
// 你要定向的域名
Header("Location:http://XXX.com")       

这样当用户访问带www的域名的时候,就会访问这个二级目录下面的index.php,php就会执行301,将域名跳转会不带www的域名,这个跳转的时间非常短,用户感觉不出来的。


原文地址 : apache做301重定向的方法
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

# [译] Apache 使用 MOD_REWRITE 启用 url rewrite/url重写

# [译] Apache 使用 MOD_REWRITE 启用 url rewrite/url重写

原文地址:ENABLING MOD_REWRITE ON WINDOWS APACHE FOR URL REWRITING

以下几步将帮助你 windows 平台上的 wamp 启用 mod_rewrite 组件
我需要使用 .htaccess 文件来启用本地 Wordpress 站点上的url重写功能, 让url地址看起来更通俗易懂, 更漂亮. 如果 mod_rewrite 组件没有开启, 网站将不能使用任何的 url重写功能, 这个将会在 WordPress 站点报出一个 404 错误页面.
启用 mod_rewrite 将走以下步骤:

  • 启用conf 文件中的 mod_rewrite
    打开 Apache 目录的 配置文件 http.conf 对于我来说, 这个位置是 apache~/conf/httpd.conf , 在更改之前备份下这个文件, 如果出错可以从这个文件再恢复回来.
    找到#LoadModule rewrite_module modules/mod_rewrite.so, 取消前边的# 注释

  • 启用 AllowOverride
    定位到 <directory /> 所在的部分. 修改如下的内容为

<directory />
    Options All
    AllowOverride All
</directory>

找到所有的 AllowOverride None 的位置, 将其修改为 AllowOverride All
最后重启服务器并且刷新你的浏览器, 你会看到网站不报错了. 心情也好多了

写给自己
对于我配置的虚拟主机来说, 为了测试 laravel 的重写功能, 我把配置写在了 vhosts 文件的配置中.
apache~/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerName www.lartest.com
    DocumentRoot "G:/wamp/www/mark/laravelRun/public"
    Options FollowSymLinks Indexes
    <Directory "G:/wamp/www/mark/laravelRun/public">
        Options +Indexes
        Options All
        AllowOverride All
    </Directory>
</VirtualHost>
%E5%8E%9F%E6%96%87%E5%9C%B0%E5%9D%80%3A%5BENABLING%20MOD_REWRITE%20ON%20WINDOWS%20APACHE%20FOR%20URL%20REWRITING%5D(http%3A%2F%2Fwww.webdevdoor.com%2Fphp%2Fmod_rewrite-windows-apache-url-rewriting%2F)%0A%0A%E4%BB%A5%E4%B8%8B%E5%87%A0%E6%AD%A5%E5%B0%86%E5%B8%AE%E5%8A%A9%E4%BD%A0%20windows%20%E5%B9%B3%E5%8F%B0%E4%B8%8A%E7%9A%84%20wamp%20%E5%90%AF%E7%94%A8%20mod_rewrite%20%E7%BB%84%E4%BB%B6%0A%E6%88%91%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%20%60.htaccess%60%20%E6%96%87%E4%BB%B6%E6%9D%A5%E5%90%AF%E7%94%A8%E6%9C%AC%E5%9C%B0%20Wordpress%20%E7%AB%99%E7%82%B9%E4%B8%8A%E7%9A%84url%E9%87%8D%E5%86%99%E5%8A%9F%E8%83%BD%2C%20%E8%AE%A9url%E5%9C%B0%E5%9D%80%E7%9C%8B%E8%B5%B7%E6%9D%A5%E6%9B%B4%E9%80%9A%E4%BF%97%E6%98%93%E6%87%82%2C%20%E6%9B%B4%E6%BC%82%E4%BA%AE.%20%E5%A6%82%E6%9E%9C%20%60mod_rewrite%60%20%E7%BB%84%E4%BB%B6%E6%B2%A1%E6%9C%89%E5%BC%80%E5%90%AF%2C%20%E7%BD%91%E7%AB%99%E5%B0%86%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8%E4%BB%BB%E4%BD%95%E7%9A%84%20url%E9%87%8D%E5%86%99%E5%8A%9F%E8%83%BD%2C%20%E8%BF%99%E4%B8%AA%E5%B0%86%E4%BC%9A%E5%9C%A8%20WordPress%20%E7%AB%99%E7%82%B9%E6%8A%A5%E5%87%BA%E4%B8%80%E4%B8%AA%20404%20%E9%94%99%E8%AF%AF%E9%A1%B5%E9%9D%A2.%20%0A%E5%90%AF%E7%94%A8%20%60mod_rewrite%60%20%E5%B0%86%E8%B5%B0%E4%BB%A5%E4%B8%8B%E6%AD%A5%E9%AA%A4%3A%0A%0A-%20%E5%90%AF%E7%94%A8conf%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%20%60mod_rewrite%60%0A%E6%89%93%E5%BC%80%20Apache%20%E7%9B%AE%E5%BD%95%E7%9A%84%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%20%60http.conf%60%20%E5%AF%B9%E4%BA%8E%E6%88%91%E6%9D%A5%E8%AF%B4%2C%20%E8%BF%99%E4%B8%AA%E4%BD%8D%E7%BD%AE%E6%98%AF%20%60apache~%2Fconf%2Fhttpd.conf%60%20%2C%20%E5%9C%A8%E6%9B%B4%E6%94%B9%E4%B9%8B%E5%89%8D%E5%A4%87%E4%BB%BD%E4%B8%8B%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%2C%20%E5%A6%82%E6%9E%9C%E5%87%BA%E9%94%99%E5%8F%AF%E4%BB%A5%E4%BB%8E%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E5%86%8D%E6%81%A2%E5%A4%8D%E5%9B%9E%E6%9D%A5.%0A%E6%89%BE%E5%88%B0%60%23LoadModule%20rewrite_module%20modules%2Fmod_rewrite.so%60%2C%20%E5%8F%96%E6%B6%88%E5%89%8D%E8%BE%B9%E7%9A%84%60%23%60%20%E6%B3%A8%E9%87%8A%0A%0A-%20%E5%90%AF%E7%94%A8%20AllowOverride%0A%E5%AE%9A%E4%BD%8D%E5%88%B0%20%60%3Cdirectory%20%2F%3E%60%20%E6%89%80%E5%9C%A8%E7%9A%84%E9%83%A8%E5%88%86.%20%E4%BF%AE%E6%94%B9%E5%A6%82%E4%B8%8B%E7%9A%84%E5%86%85%E5%AE%B9%E4%B8%BA%0A%0A%60%60%60%0A%3Cdirectory%20%2F%3E%0A%09Options%20All%0A%09AllowOverride%20All%0A%3C%2Fdirectory%3E%0A%60%60%60%0A%E6%89%BE%E5%88%B0%E6%89%80%E6%9C%89%E7%9A%84%20%60AllowOverride%20None%60%20%E7%9A%84%E4%BD%8D%E7%BD%AE%2C%20%E5%B0%86%E5%85%B6%E4%BF%AE%E6%94%B9%E4%B8%BA%20%60AllowOverride%20All%60%0A%E6%9C%80%E5%90%8E%E9%87%8D%E5%90%AF%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E4%B8%94%E5%88%B7%E6%96%B0%E4%BD%A0%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%2C%20%E4%BD%A0%E4%BC%9A%E7%9C%8B%E5%88%B0%E7%BD%91%E7%AB%99%E4%B8%8D%E6%8A%A5%E9%94%99%E4%BA%86.%20%E5%BF%83%E6%83%85%E4%B9%9F%E5%A5%BD%E5%A4%9A%E4%BA%86%0A%0A**%E5%86%99%E7%BB%99%E8%87%AA%E5%B7%B1**%0A%E5%AF%B9%E4%BA%8E%E6%88%91%E9%85%8D%E7%BD%AE%E7%9A%84%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%9D%A5%E8%AF%B4%2C%20%E4%B8%BA%E4%BA%86%E6%B5%8B%E8%AF%95%20laravel%20%E7%9A%84%E9%87%8D%E5%86%99%E5%8A%9F%E8%83%BD%2C%20%E6%88%91%E6%8A%8A%E9%85%8D%E7%BD%AE%E5%86%99%E5%9C%A8%E4%BA%86%20vhosts%20%E6%96%87%E4%BB%B6%E7%9A%84%E9%85%8D%E7%BD%AE%E4%B8%AD.%20%0A%60apache~%2Fconf%2Fextra%2Fhttpd-vhosts.conf%60%0A%0A%60%60%60%0A%3CVirtualHost%20*%3A80%3E%0A%20%20%20%20ServerName%20www.lartest.com%0A%20%20%20%20DocumentRoot%20%22G%3A%2Fwamp%2Fwww%2Fmark%2FlaravelRun%2Fpublic%22%0A%20%20%20%20Options%20FollowSymLinks%20Indexes%0A%20%20%20%20%3CDirectory%20%22G%3A%2Fwamp%2Fwww%2Fmark%2FlaravelRun%2Fpublic%22%3E%0A%20%20%20%20%20%20%20%20Options%20%2BIndexes%0A%20%20%20%20%20%20%20%20Options%20All%0A%20%20%20%20%20%20%20%20AllowOverride%20All%0A%20%20%20%20%3C%2FDirectory%3E%0A%3C%2FVirtualHost%3E%0A%60%60%60%0A%0A

原文地址 : # [译] Apache 使用 MOD_REWRITE 启用 url rewrite/url重写
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

Zabbix 主动被动

  • 主动
    zabbix server开启默认10051端口,agent调用10051接口api把数据定期上传上去。agent配置

ServerActive=zabbix_server_ip:10051

  • 被动
    zabbix agent开启默认10050端口,server定期调用10050接口api获取数据。
    配置

Server=zabbix_server_ip #防火墙一样的白名单(注意外网需要公网IP),3.4版本后可以0.0.0.0/0允许所有端口
ListenPort=10050 #接口端口号
Hostname=gpu #与zabbix web中的host name一致,唯一
上面两种模式使用一种就可以了。
StartAgents代表被动模式的工作线程数。
StartAgents=0没有被动模式的工作,即只允许主动模式。


原文地址 : Zabbix 主动被动
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

[转] Zabbix解决图片字体乱码问题

原文地址 : Zabbix解决图片字体乱码问题
当部署完Zabbix Server以后,点击筛选,看到监控项里面图片中的字体会有乱码情况

1、在Windows-控制面板-字体中选择自己喜欢的,并copy到/usr/local/zabbix/php/front/下面。  

2、编辑 vim /usr/local/zabbix/php/include/defines.inc.php  
将字体名称修改为front目录下的文件名,省去ttf后缀即可。

阅读更多

apache 开启伪静态

apache 开启伪静态 1. 打开伪静态模块

LoadModule rewrite_module modules/mod_rewrite.so

2. 配置.htaccess, 放入到mark文件夹下
  
<IfModule mod_rewrite.c>
           RewriteEngine On
           RewriteBase /mark/
           RewriteRule (.*)-(.*) index.php?m=$1&a=$2
</IfModule>

3. 开启目录中的allowOverride


4. 看结果


原文地址 : apache 开启伪静态
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

[译+] 设置通过 Nginx 来访问 SupervisorUI 并支持 tail 访问

原文地址:Set up Supervisor Web UI behind nginx with tail function working
Supervisor (supervisord) 是广为人知的 UNIX 进程控制系统
它包含了 Web UI, 可以列出当前的进程, start/stop, tail log;

使用  nginx 作为代理来访问 supervisord, 使用访问  /supervisord/  作为示例, 如果使用 tail 函数可以正常访问可能会有些棘手.
首先,确保您的 Supervisor 配置文件(默认位于 /etc/supervisord.conf 中)包含以下内容:

阅读更多

调整Virtual Box硬盘大小

原因

我在 ubuntu 系统上运行, 给 XP 机器的虚拟机大小为 10G 大小, 运行之后发现空间不太够用,于是便开始折腾变更大小. 目标更改为 15G左右.

操作步骤

关闭虚拟机
如果不关闭虚拟你可能会造成无法调整大小, 或者错误.
列出现有的虚拟机并获取 uuid

1
VBoxManage list hdds

UUID: 770538c2-93dc-4793-9724-cc36c2509f6b
Parent UUID: base
State: created
Type: normal (base)
Location: /home/php/VirtualBox VMs/xp/xp.vdi
Storage format: VDI
Capacity: 10240 MBytes

这里的 UUID 便是我们可以调整的ID值
调整实体硬盘大小
这里调整的大小单位是M
我们使用的命令是 VBoxManage modifyhd uuid --resize 15960 , 替换时候将 uuid 替换为我们上边获取到的 UUID

1
VBoxManage modifyhd 770538c2-93dc-4793-9724-cc36c2509f6b --resize 15960

0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%

虚拟机中调整使用
下载一个分区工具, 然后调整可用磁盘大小, 将新增的作为可用

参考文章


原文地址 : 调整Virtual Box硬盘大小
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

# apache 配置反向代理

# apache 配置反向代理
<VirtualHost *:80>
    ServerName ft.sour-lemon.com
    ServerAlias ft.wanyuhd.com
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://127.0.0.1:9023/
    ProxyPassReverse / http://ft.sour-lemon.com/
</VirtualHost>
%0A%0A%60%60%60%0A%3CVirtualHost%20*%3A80%3E%0A%20%20%20%20ServerName%20ft.sour-lemon.com%0A%20%20%20%20ServerAlias%20ft.wanyuhd.com%0A%20%20%20%20ProxyRequests%20Off%0A%20%20%20%20ProxyPreserveHost%20On%0A%20%20%20%20%3CProxy%20*%3E%0A%20%20%20%20%20%20%20%20Order%20deny%2Callow%0A%20%20%20%20%20%20%20%20Allow%20from%20all%0A%20%20%20%20%3C%2FProxy%3E%0A%20%20%20%20ProxyPass%20%2F%20http%3A%2F%2F127.0.0.1%3A9023%2F%0A%20%20%20%20ProxyPassReverse%20%2F%20http%3A%2F%2Fft.sour-lemon.com%2F%0A%3C%2FVirtualHost%3E%0A%60%60%60%0A%0A

原文地址 : # apache 配置反向代理
本站是作者语雀文档的镜像站, 如对文章有任何疑问请移步语雀进行 提问

Apache Rewrite 规则详解

Apache Rewrite 规则详解

Apache Rewrite 规则详解

April 11, 2009 by SLJ | Category:HTTP Servers,  PHP  |  28 CommentsFont size:  AA      AA

在开篇之前:
我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的。需要原文的可以在谷歌上搜索一下”Apache Rewrite 规则详解”
好在我对正则表达式有所了解,把原文的代码都通过自己的理解改写了一下,并都能够达到题设的要求,并联想需求添加了例子。
本文是经过我实验后修改有效的,如果还是出现500错误请去掉  #  及后面的注释(也许有些环境不支持中文注解),如果还是错误请在下面给我留言。

1、Rewrite规则简介:

Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。

基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。

基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。

2、举例说明:

例一.下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.kiya.cn和70.40.213.183都跳转到主机前缀为http://www.kiya.cn,避免相同内容的网页有多个指向的域名,如http://kiya.cn。

NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot “/web”
ServerName kiya.cn

RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.kiya.cn [NC] #声明Client请求的主机中前缀不是www.kiya.cn,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明Client请求的主机中前缀不是70.40.213.183,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空
RewriteRule ^(.*) http://www.kiya.cn/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.kiya.cn/,[L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。

例二.将输入 en.sicasoft.com 的域名时跳转到www.sicasoft.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.sicasoft.com [NC]
RewriteRule ^(.*) http://www.sicasoft.com/ [L]

例三.赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http://ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]

3.Apache mod_rewrite规则重写的标志一览

1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联

如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。

8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量

4.Apache rewrite例子集合

URL重定向

例子一:
同时达到下面两个要求:
1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.zzz.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.zzz.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1

例子二:

/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html

RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]

5.使用Apache的URL Rewrite配置多用户虚拟服务器

要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.kiya.us和 *.kiya.cn全部解析到了我的IP地址70.40.213.183上。

然后,看一下我的Apache中关于*.kiya.us的虚拟主机的设定。

ServerAdmin webmaster@kiya.us
DocumentRoot /home/www/www.kiya.us
ServerName dns.kiya.us
ServerAlias dns.kiya.us kiya.us *.kiya.us
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
AllowOverride None
Order deny,allow

#AddDefaultCharset GB2312

RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/www.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]

在这段设定中,我把*.kiya.cn和*.kiya.us 的Document Root都设定到了 /home/www/www.kiya.us

继续看下去,在这里我就配置了URL Rewrite规则。

RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.kiya.us 或者 xxxx.kiya.cn 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]

阅读更多

Mac 上使用 brew 安装 Supervisor

在 Mac 上, 你可以使用 brew 很方便的安装 mongo, redis 等服务. 并且将这些服务加入启动项目中, 由于 supervisor 必须是以 root 用户方式去运行的, 所以加入到启动项目的时候需要加入到可以以 root 进行的目录, 否则 supervisor 运行没有相关权限会报错的.

阅读更多

[转] 使用 supervisor 管理进程

原文地址 : 使用 supervisor 管理进程
Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

阅读更多