当前位置:首页 / 分类 it技术 下的文章

0

解决Typecho登录后台出现"Access denied"问题

it技术 | 2018-11-13 | 个浏览

使用Nginx驱动typecho,刚安装后可以看到首页却不能访问管理登录页面,按照这个blog修改了nginx配置后,问题解决。然后却发现,输入用户名密码后提示Access denied.

在log中看到如下:

2014/10/15 23:10:28 [error] 4342#0: *17 FastCGI sent in stderr: "Access to the script '/usr/share/nginx/typecho/index.php/action/login' has been denied (see security.limit_extensions)" while reading response header from upstream, client: 192.168.199.212, server: localhost, request: "POST /index.php/action/login?_=b2389d8dc2c8f5a132342d4d79d0fed6 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.199.20", referrer: "http://192.168.199.20/admin/login.php" 

Google后找到这么一篇文章提示cgi.fix_pathinfo应该为1,在/etc/php5/fpm/php.ini中修改完毕。

最后,重启php5-fpm和nginx服务,便可以正确登录管理页面。

路径 /usr/local/php/etc



0
百度熊掌号是什么?什么是百度熊掌号?有何价值与好处用处

百度熊掌号是什么?什么是百度熊掌号?有何价值与好处用处

it技术 | 2017-11-02 | 个浏览
熊掌号为百度搜索新产品,即原百度官方号百度熊掌号是站长、自媒体、开发者、商家等各种内容和服务提供者入驻百度的身份账号,该账号可实现包括百度搜索资源平台、百度数据开放平台、百家号自媒体平台、用户运营平台等各类平台的能力互通。

基于熊掌号,各内容和服务提供者可以让自己创作的优质内容或服务被百度索引和推荐,从而更好的触达全网用户。基于熊掌号,各内容和服务提供者也可以实现精准的用户留存和全面的互动交流,从而深度满足用户多样化需求。

百度熊掌号
开通百度熊掌号的几大好处

全面凸显内容和服务提供者的品牌价值 熊掌号支持将官网、百家号、官方APP、官方微博等全部内容和服务链接到熊掌号上,有利于用户品牌认知的统一。此外,百度会在用户的各种路径上强化内容和服务提供者的品牌
新的流量分发机制 资源提交更加开放方便,无站点的自媒体也可以提交自身创造的内容 打破传统SEO的桎梏,只要内容优质,就可以被百度索引和收录,触达到用户
新的用户运营赋能 从粉丝沉淀到粉丝促活,再到营销变现,形成完整的闭环生态,为内容和服务提供者带来更多种的粉丝互动手段和更多元的营利模式
熊掌号继承原创保护功能

既然是从官方号改名为熊掌号,那么其融合的原创保护功能依旧,那么为了继续鼓励更多优质原创资源的产生及熊掌号的发展,目前子凡通过泪雪博客在百度移动端搜索结果已经显示“原创”字样标识,也就是说百度认定为优质原创的资源在收录及展现上会给予优待。

但是原创保护为熊掌号的特有权益,若要使用原创保护功能,就必须先开通熊掌号。

如何申请开通百度熊掌号?

首先你必须拥有一个百度帐号,然后可以通过信阳吧之前分享的熊掌号内测申请方法中的链接地址申请。

熊掌号官网地址为:http://xiongzhang.baidu.com/
0

ssh能够连接而sftp不能连接的解决方法

it技术 | 2016-12-14 | 个浏览

使用xshell从命令行切换到sftp时出现错误为:

sftp subsystem request is rejected.
please make sure that sftp subsystem is properly installed in ssh server.

下面找一下原因:

[root@bogon ~]# tail /var/log/secure

Feb 23 16:29:48 localhost sshd[2989]: subsystem request for sftp
Feb 23 16:29:48 localhost sshd[2989]: subsystem request for sftp failed, subsystem not found

可以看出是没有sftp-server的目录没有找到

我们找一下sftp-server的路径地址:

[root@bogon ~]# locate sftp-server
/usr/libexec/openssh/sftp-server
/usr/share/man/man8/sftp-server.8.gz

然后打开配置:

[root@bogon ~]# vi /etc/ssh/sshd_config 

# override default of no subsystems
# Subsystem       sftp /usr/libexec/openssh/sftp-server

替换成

# override default of no subsystems
Subsystem       sftp /usr/libexec/openssh/sftp-server

ok,重新load一下sshd.

[root@bogon ~]# /etc/init.d/sshd reload

重新连接发现OK了。


0

win7系统浏览器总是会弹出“是否停止运行此脚本”的提示窗口怎么办?

it技术 | 2016-11-09 | 个浏览

1.首先,咱们同时按下win7电脑的win+R快捷键打开电脑的运行窗口,在打开的运行窗口中,咱们输入regedit并单击回车,这样就可以打开win7电脑的注册表编辑器窗口了

2.在打开的注册表编辑器窗口中,咱们依次点击展开左侧菜单中的
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer,之后,咱们在左侧窗口中右键点击这个“Internet Explorer”选项,选择新建项,然后咱们将这个额新建项命名为Styles。

3.完成之后,咱们双击展开这个Styles,然后在右侧窗口中点击鼠标右键,选择新建一个DWORD 32位值,将其命名为MaxScriptStatements,最后一步,咱们双击打开这个MaxScriptStatements,然后将数值数据设置为0xFFFFFFFF,最后点击确定保存即可。


0
linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置

linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置

it技术 | 2016-11-09 | 个浏览

如果ping域名的时候出现ping:unknown host  xxx.xxx

但是ping IP地址的时候可以通的话

可知是dns服务器没有配置好,

查看一下配置文件/etc/resolv.conf,里面是否有nameserver xxx.xxx.xxx.xxx,比如使用dns服务器 nameserver 8.8.8.8,如果有,修改一个可用的dns服务器,如8.8.8.8或者4.4.4.4,保存退出即可!



当然,如果连ip都ping 8.8.8.8都ping不通的话,那么就说明网络配置有问题:可以这样解决:

1,首先查看ifconfig是否有内网ip地址,如果没有,那么配置一下

ifconfig eth0 192.168.1.100 up,

可以同时配置好掩码:


另外使用route命令查看一下当前的默认网关,如果没有,也配置一个,

route add default gw 192.168.1.1,

配置好这两个以后,就可以正常的ping通网络了,如果还不能ping www.baidu.com,那么就要去查看dns服务器啦

0

dz应用中心 数据下载错误(105/102)的解决方法

it技术 | 2016-09-30 | 个浏览

discuz应用中心安装插件的时候最后提示数据下载错误(105)或数据下载错误(102)的问题,搜索了下看见很多站长在X2.5的时候出现比较多,今天有个站长的Discuz
x3.2论坛也出现类似的数据下载错误(105)的问题,经过排查解决了,现在在杨雨个人博客分享下dz应用中心 数据下载错误(105/102)的解决方法



出现类似的错误主要原因是服务器和应用中心对接出现问题,可以从以下3点去排查:



1、云平台需要保证正常,所以先看工具--云平台诊断-是否正常

2、服务器是否有阻止执行一些文件的限制,如果一些杀毒软件阻止导致

3、插件目录的权限是否正确



如果上面方法还是无法解决你的问题,还可以尝试去修改程序文件,不过这样无法根治你的问题而且还可能带来新的问题,个人不推荐

打开文件sourceadmincpadmincp_cloudaddons.php使用 //
加在代码前面注释掉

105行

//cpmsg('cloudaddons_download_error', '', 'error',
array('ErrorCode' => 102));

128行

//cpmsg('cloudaddons_download_error', '', 'error',
array('ErrorCode' => 103));

0
社交软件APP开源PhxSQL:高可用、强一致的MySQL集群

社交软件APP开源PhxSQL:高可用、强一致的MySQL集群

it技术 | 2016-08-31 | 个浏览

PhxSQL是一个兼容MySQL、服务高可用、数据强一致的关系型数据库集群。PhxSQL以单Master多Slave方式部署,在集群内超过一半机器存活的情况下,可自身实现自动Master切换,且保证数据一致性。

PhxSQL基于Percona 5.6开发。Percona是MySQL的一个分支,功能和实现与MySQL基本一致。因此本文后续直接把MySQL作为讨论对象。

MySQL半同步复制存在缺陷,在Master进行切换的场景下,数据难以保证一致。

  • 当旧Master复制失败时,旧Master和Updated Slave(已收到Binlog的Slave)需要回滚数据。
  • 当Master进行切换时,旧Master仍有部分Client进行读写。

关于MySQL半同步复制的数据一致性问题可查看微信后台团队公众号文章MySQL半同步复制的数据一致性探讨

PhxSQL的设计是为了解决MySQL半同步复制的不足,使MySQL集群在Master切换过程中保证数据的一致。

PhxSQL架构

图片描述

 

图1 PhxSQL 三层架构

 

为了解决MySQL的两个问题(Binlog复制和Master切换),PhxSQL设计了两个模块(Phxbinlogsvr、Phxsqlproxy)和一个MySQL插件(Phxsync)。Phxbinlogsvr负责处理MySQL的Binlog复制和Master管理;Phxsqlproxy负责透传Client请求到Master;Phxsync插件负责MySQL和Phxbinlogsvr的交互。 一台部署了Phxsqlproxy,MySQL和Phxbinlogsvr的机器称为PhxSQL Node。如图1。

PhxSQL复制流程

图片描述

 

图2.1 MySQL复制流程

 

图片描述

 

图2.2 PhxSQL复制流程

 

 

图2 MySQL和PhxSQL的数据复制流程

 

在PhxSQL中,Phxbinlogsvr负责管理MySQL的角色和存储MySQL的Binlog、Phxbinlogsvr和其管理的MySQL部署在同一台物理机上。

MySQL Master在Send Event阶段不再把Binlog复制给Slave,而是通过Phxsync插件,把数据复制到Phxbinlogsvr集群。

MySQL Slave也不再从Master获取Binlog,而是从本机的Phxbinlogsvr获取。

Phxbinlogsvr集群使用Paxos协议进行数据复制。

PhxSQL使用PhxPaxos库,详情请查看微信后台团队公众号文章微信自研生产级paxos类库PhxPaxos实现原理介绍

图片描述

图3 Phxbinlogsvr形成一个可靠日志存储

图片描述

图4 重启向Phxbinlogsvr询问PendingBinlog状态

从逻辑上来看,利用Paxos协议进行复制,使Phxbinlogsvr形成一个可靠的日志存储。PhxSQL可以看成是为MySQL增加了一个用Paxos实现的可靠Binlog存储,只要集群中多数派机器存活,就可以解决半同步复制的回滚问题。如图3。

分别从Master和Slave的角度来解释:

1. Master重启时,通过询问Phxbinlogsvr(多数派)Pending Binlog是否存在来决定是否需要回滚。如图4。 

2. Slave从本机Phxbinlogsvr能拉取到的Binlog都已经经过Paxos协议成功复制到多数派机器,因此对于Slave来说不存在回滚的问题。

Phxbinlogsvr通过Paxos协议复制数据,很好的解决了MySQL中需要手动回滚Binlog和在大集群时同时需要回滚Updated Slave上的Binlog的问题。

PhxSQL的Master管理

图片描述

图5 多个Master同时写入数据,导致数据不一致

MySQL多Master同时写入会导致数据的不一致。如图5,机器A是旧Master,在收到机器B成为了新Master的消息之前提交了Transaction 3;而同时机器B已成为新Master,Transaction 3则会留在机器A而未复制到机器B,最终两机的数据不一致。

MySQL多Master问题的产生,源于机器间无法得知当前Master的状态,最后导致两台机器的数据不一致。

即使使用外部服务(例如zookeeper)也无法解根本问题。 

1. 对Master查询和查询之后的操作不是原子操作,无法保证操作时的准确状态(例如机器A向外部服务查询得知自己是Master,然后执行复制Binlog操作。但期间出现故障导致两个操作之间停顿了很长时间(譬如1天)。在该期间内Master被切换,使得机器A在执行复制Binlog时,已不再是Master,导致了多Master的情况发生。) 

2. Master管理依赖外部服务的稳定性。 

多Master问题由于细节太多,暂不在此讨论。

PhxSQL自身进行了Master管理,具有以下特点:

1. Master通过Paxos协议投票选出。 

2. Master带有租约,并定时续租。租约过期后,需重新选举新的Master。 

3. 全局只有1个Master,或者没有Master存在。 

4. 有效拒绝过期Master的非法写入。

PhxSQL的Master自动切换

PhxSQL实现了旧Master的自动数据回滚和Master管理,使得PhxSQL可以安全地实现Master的自动切换,提供高可用服务。和常见的MySQL切换Master方案不同,PhxSQL在切换Master之后仍然保证集群内各机数据一致。

图片描述

图6

PhxSQL自动Master流程如下:

1. Slave机器上的Phxbinlogsvr定期检查Master是否过期。如果过期转第2步,否则继续第1步; 

2. Phxbinlogsvr检查本机MySQL是否已执行完所有Binlog。如果已完成转第3步,否则继续第1步; 

3. Phxbinlogsvr发起投票选举新的Master。如果投票成功,提升本机MySQL为Master,关闭readonly开关;否则继续第1步; 

4. 旧Master恢复,本机的Phxbinlogsvr查询发现已不是Master,切换MySQL角色为Slave,设置从本机Phxbinlogsvr拉取Binlog,并开启readonly开关。

Phxsqlproxy请求透传

Phxbinlogsvr解决了多Master同时写入的问题,使得MySQLClient向旧Master写入数据会产生失败。虽然保证了数据的一致性,但仍存在下面2个问题:

1. MySQLClient持续向旧Master写入数据,从而持续的失败。(服务不可用) 

2. 部分MySQLClient向新Master写入数据,但其他MySQLClient仍然向旧Master读取数据,导致读不到最新的数据。

图片描述

图7

上述两个问题都是由于MySQLClient的Master信息更新不及时;部分Client没有及时更新,使得有可能产生PhantomRead(两次读的结果不一致)。

图片描述

图8 Phxsqlproxy的请求透传

若Slave机器被访问,Phxsqlproxy则会把请求透传到Master机器的Phxsqlproxy。由于PhxSQL Master的全局唯一性,保证了只存在一台MySQL被访问。从而解决了多台机器同时被读写的问题。

PhxSQL性能

使用sysbench工具对PhxSQL和MySQL的半同步复制进行了性能对比。PhxSQL因为增加了Phxsqlproxy,导致读性能比原生MySQL略低;但由于PhxPaxos的实现比MySQL的半同步更加高效,让PhxSQL的写性能比半同步复制更好。

PhxSQL比MySQL读性能比原生MySQL略低,但写性能比MySQL半同步复制更好。

  读性能   写性能  
Client线程数 QPS 耗时 QPS 耗时
200 约降低3% 耗时约增加2% 约增高25% 约降低20%
500 约降低13% 约增加10% 约增高16% 约降低10%

测试环境和结果如下:

机型信息

CPU : Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz * 24

内存 : 32G

磁盘 : SSD Raid10

网络互Ping耗时

Master -> Slave : 3 ~ 4ms

Client -> Master : 4ms

压测工具和参数

sysbench –oltp-tables-count=10 –oltp-table-size=1000000 –num-threads=500 –max-requests=100000 –report-interval=1 –max-time=200

压测内容

PhxSQL和半同步复制在Client线程200和500的环境下进行下面方式的压测:

  • insert.lua (100%写)
  • select.lua (0%写)
  • OLTP.lua (20%写)

压测结果

Client线程数:200

  insert.lua (100%写)  
  QPS 耗时
PhxSQL 5076 39.34/56.93
MySQL半同步 4055 49.27/66.64

0

typecho管理员帐号密码忘记的修改方法

it技术 | 2016-08-31 | 个浏览

在此分享下利用PHPMYADMIN修改管理员密码的方法,高手表笑我,新手都需要慢慢成长嘛。

步骤1:
登录你的PHPMYADMIN账户,如果连PHPMYADMIN账户的密码都忘了请直接点屏幕右上角的XX。
打开typecho安装数据库,找typecho_users点进去在password前面打勾,选择浏览,就能看到uid1的详细信息了。
步骤2:
选择uid1然后点最前面的笔形图标“更改”,把第三行的password改为
e10adc3949ba59abbe56e057f20f883e
其他项目不要动,选择执行。这时候密码就是“123456”了。
步骤3:登录typecho后台,用你的帐号登录密码是123456然后到后台修改密码。

0

正确删除MYSQl日志方法

it技术 | 2016-08-05 | 个浏览

当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
mysql-bin.000005

有三种解决方法:1.关闭mysql主从,关闭binlog;2.开启mysql主从,设置expire_logs_days;3.手动清除binlog文件,> PURGE MASTER LOGS TO ‘MySQL-bin.010′;

purge binary logs to 'mysql-bin.000037'; //清除 之前的日志 不包含此日志

实现:
1.关闭mysql主从,关闭binlog

# vim /etc/my.cnf  //注释掉log-bin,binlog_format# Replication Master Server (default)# binary logging is required for replication# log-bin=mysql-bin# binary logging format - mixed recommended# binlog_format=mixed

然后重启数据库

2.重启mysql,开启mysql主从,设置expire_logs_days

# vim /etc/my.cnf  //修改expire_logs_days,x是自动删除的天数,一般将x设置为短点,如10expire_logs_days=x//二进制日志自动删除的天数。默认值为0,表示“没有自动删除”

此方法需要重启mysql,附录有关于expire_logs_days的英文说明

当然也可以不重启mysql,开启mysql主从,直接在mysql里设置expire_logs_days

>show binary logs;>show variables like'%log%';>setglobalexpire_logs_days=10;

 
3.手动清除binlog文件

# /usr/local/mysql/bin/mysql -u root -p>PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE,INTERVAL10DAY);//删除10天前的MySQL binlog日志,附录2有关于PURGE MASTER LOGS手动删除用法及示例>show master logs;

 
也可以重置master,删除所有binlog文件:

# /usr/local/mysql/bin/mysql -u root -p>reset master;//附录3有清除binlog时,对从mysql的影响说明

 
附录:
1.expire_logs_days英文说明

Where X is the number of days you’d like to keep them around. I would recommend 10, but this depends on how busy your MySQL server is and how fast these log files grow. Just make sure it is longer than the slowest slave takes to replicate the data from your master.
Just a side note: You know that you should do this anyway, but make sure you back up your mysql database. The binary log can be used to recover the database in certain situations; so having a backup ensures that if your database server does crash, you will be able to recover the data.

2.PURGE MASTER LOGS手动删除用法及示例,MASTER和BINARY是同义词

>PURGE{MASTER|BINARY}LOGS TO'log_name'>PURGE{MASTER|BINARY}LOGS BEFORE'date'

删除指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除MySQL BIN-LOG 日志,这样被给定的日志成为第一个。

实例:

>PURGE MASTER LOGS TO'MySQL-bin.010';//清除MySQL-bin.010日志>PURGE MASTER LOGS BEFORE'2008-06-22 13:00:00';//清除2008-06-22 13:00:00前binlog日志>PURGE MASTER LOGS BEFORE DATE_SUB(NOW(),INTERVAL3DAY);//清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。

 
3.清除binlog时,对从mysql的影响
如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

0

centos安装proftpd详细教程

it技术 | 2016-08-04 | 个浏览

首先前往proftpd的官方FTP查找你需要下载的proftpd版本。

FTP地址:ftp://ftp.proftpd.org/distrib/source/

我这里安装最新版本的:proftpd-1.3.5.tar.gz

OK,下面开始正式的安装。

首先进入到root用户

sudo su

然后进入到你平常放下载文件的目录(我这里自己创建一个,大家随意),输入

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5.tar.gz

注:我的是国内的服务器,访问国外网站比较慢,所以放到了新浪上,大家根据实际情况定。国外也可以就是网速慢。

  1. 解压

    tar -zxvf proftpd-1.3.5.tar.gz

  2. 4

    下面需要编译,编译时请注意,你的linux系统必须支持编译,也就是说可以make,不可以的请看下面,可以的跳过此步骤

    输入下面命令

    yum install gcc gcc-c++ autoconf automake

    1. 下面开始编译阶段

      输入下面命令

      ./configure --prefix=/var/proftpd --sysconfdir=/etc

      make

      make install


    2. 建立FTP组和FTP用户(用户名、用户组),设置密码

      groupadd ftpgroup

      useradd ftpuser -g ftpgroup -d /var/ftp -s /sbin/nologin

      passwd ftpuser


    3. 修改配置文件

      vi /etc/proftpd.conf

      把Group的nogroup修改为ftpgroup
      User 改成 ftpuer

      然后保存、退出(esc->:wq)

      启动服务

      /var/proftpd/sbin/proftpd






  select.lua (0%写)  
  QPS 耗时
PhxSQL 46334 4.21/5.12
MySQL半同步475284.10/5.00