wordpress博客最近变慢之解决(fonts.google.com)出现Wordpress 只能将修改保存到可写的文件。参见Codex文档以了解更多。
Php/Js/Shell/Go jackxiang 2014-6-22 22:59
这个直接用国内的也成,实践OK:
http://tieba.baidu.com/p/3086275811
一、wordpress博客最近变慢之解决(fonts.google.com)
进入wordpress后台管理,选择“外观”,再选择“编辑”。
在右边,选择“模板函数(functions.php)”
注意:多个模板时有一个下拉:
模板
模板函数(functions.php)
然后在左边的编辑框内,查找googleapis.com
然后按如图的方法注释掉这行。
然后再点“更新文件”
好了,就完成了。
需要注意的是,这样操作后,你查看博客文章的源码,还是可以看到fonts.googleapis.com的引用那行。
但是只要退出管理员登录wordpress后,就可以看到,源码里,已经没有这行了。
来自:http://blog.csdn.net/metababy/article/details/28892173
二、Wordpress 只能将修改保存到可写的文件。参见Codex文档以了解更多。
使用wordpress的朋友都知道wordpress博客程序后台有个主题编辑器,是让我们方便的在后台直接编辑修改主题源文件用的,小简觉得这个功能很实用也很方便!
小简用nginx服务器装wordpress的时候,在这个wordpress网站后台主题编辑器的使用上遇到了点问题!可以确定wordpress数据完整搬移!
像以前,小简在wordpress后台使用主题编辑器修改完代码后下面有一个“更新文件”的按钮!我们只要点一下这个按钮,修改的内容就可以保存了。
小简把网站数据搬到服务器后,在wordpress后台主题编辑器里修改了一些源码,改完后想就去点击“更新文件”按钮,却发现更新按钮不见了,在原来那个地方找不到那个按钮了!(如图)
--------------------------------------------------------------------------------
原来显示“更新文件”的那个位置变成了“文档:函数名(下拉框)“查询”按钮,下面还有一行字“只能将修改保存到可写的文件。参见 Codex 文档以了解更多。”
--------------------------------------------------------------------------------
权限
现在小简面临的问题是,wordpress后台主题编辑器里编辑好的代码,无法保存?
出现问题当然要解决了,这个问题其实很简单,涉及到了权限问题,记得小简曾经分享过pureftpd新建FTP账户无法管理文件(没有权限)的解决方法,同样的权限问题!
在之前小简已经分享过lnmp搭建WordPress博客后台不能显示所有主题和无法编辑主题的问题的解决方法,这个算是小简遇到的第二个关于wordpress后台主题编辑器的问题。。。
解决方法很简单,我们ssh使用命令:
查看源代码打印帮助1 chown www:www -R /home/wwwroot/www.jannn.com/
其中/home/wwwroot/www.jannn.com/这个是古月小简博客的目录路径,你需要改成你自己网站的!然后刷新下,后台主题编辑器就可以恢复正常了!
关于目录属主和属组修改代码解析
chown www:www -R /home/wwwroot/www.jannn.com/
命令中第一个www为UID,第二个www为GID, -R递归
UID是拥有者ID(User ID)也就是用户ID
GID就是群组ID(Group ID)
Linux系统中的所有文件/文件夹都有拥有者ID和群组ID,即UID和GID.
一般从一个服务器迁移应用程序到另一个服务器时将需要更改文件/文件夹的所有者.
如果你之前服务器上文件/文件夹所有者为root,如果我们没有更改文件/文件夹的所有者,那么使用ftp账户执行操作(比如写入)就不能正常操作!同样,Wordpress等程序也无法正常上传附件,在wordpress后台主题(插件)编辑器中对源文件做了修改也如法写入保存。
代码中利用chown指令将目录的所有权限指派为www用户及www组
来自:http://www.jannn.com/1356.html
http://tieba.baidu.com/p/3086275811
一、wordpress博客最近变慢之解决(fonts.google.com)
进入wordpress后台管理,选择“外观”,再选择“编辑”。
在右边,选择“模板函数(functions.php)”
注意:多个模板时有一个下拉:
模板
模板函数(functions.php)
然后在左边的编辑框内,查找googleapis.com
然后按如图的方法注释掉这行。
然后再点“更新文件”
好了,就完成了。
需要注意的是,这样操作后,你查看博客文章的源码,还是可以看到fonts.googleapis.com的引用那行。
但是只要退出管理员登录wordpress后,就可以看到,源码里,已经没有这行了。
来自:http://blog.csdn.net/metababy/article/details/28892173
二、Wordpress 只能将修改保存到可写的文件。参见Codex文档以了解更多。
使用wordpress的朋友都知道wordpress博客程序后台有个主题编辑器,是让我们方便的在后台直接编辑修改主题源文件用的,小简觉得这个功能很实用也很方便!
小简用nginx服务器装wordpress的时候,在这个wordpress网站后台主题编辑器的使用上遇到了点问题!可以确定wordpress数据完整搬移!
像以前,小简在wordpress后台使用主题编辑器修改完代码后下面有一个“更新文件”的按钮!我们只要点一下这个按钮,修改的内容就可以保存了。
小简把网站数据搬到服务器后,在wordpress后台主题编辑器里修改了一些源码,改完后想就去点击“更新文件”按钮,却发现更新按钮不见了,在原来那个地方找不到那个按钮了!(如图)
--------------------------------------------------------------------------------
原来显示“更新文件”的那个位置变成了“文档:函数名(下拉框)“查询”按钮,下面还有一行字“只能将修改保存到可写的文件。参见 Codex 文档以了解更多。”
--------------------------------------------------------------------------------
权限
现在小简面临的问题是,wordpress后台主题编辑器里编辑好的代码,无法保存?
出现问题当然要解决了,这个问题其实很简单,涉及到了权限问题,记得小简曾经分享过pureftpd新建FTP账户无法管理文件(没有权限)的解决方法,同样的权限问题!
在之前小简已经分享过lnmp搭建WordPress博客后台不能显示所有主题和无法编辑主题的问题的解决方法,这个算是小简遇到的第二个关于wordpress后台主题编辑器的问题。。。
解决方法很简单,我们ssh使用命令:
查看源代码打印帮助1 chown www:www -R /home/wwwroot/www.jannn.com/
其中/home/wwwroot/www.jannn.com/这个是古月小简博客的目录路径,你需要改成你自己网站的!然后刷新下,后台主题编辑器就可以恢复正常了!
关于目录属主和属组修改代码解析
chown www:www -R /home/wwwroot/www.jannn.com/
命令中第一个www为UID,第二个www为GID, -R递归
UID是拥有者ID(User ID)也就是用户ID
GID就是群组ID(Group ID)
Linux系统中的所有文件/文件夹都有拥有者ID和群组ID,即UID和GID.
一般从一个服务器迁移应用程序到另一个服务器时将需要更改文件/文件夹的所有者.
如果你之前服务器上文件/文件夹所有者为root,如果我们没有更改文件/文件夹的所有者,那么使用ftp账户执行操作(比如写入)就不能正常操作!同样,Wordpress等程序也无法正常上传附件,在wordpress后台主题(插件)编辑器中对源文件做了修改也如法写入保存。
代码中利用chown指令将目录的所有权限指派为www用户及www组
来自:http://www.jannn.com/1356.html
Linux 与 BSD 有什么不同?
Unix/LinuxC技术 jackxiang 2014-6-18 23:06
背景:MySQL-Fullltext: 使用 MySQL 实现简单的搜索引擎,搜索下博文啥的,方便自己。
http://blog.csdn.net/zajin/article/details/10970207
零、 Mysql下的Web程序,如何实现全文检索:
使用逻辑搜索修饰符(Boolean search modifiers)
++表示必须
+表示要有的-表示不能有的
不带+或者-表示,任意一种
http://blog.csdn.net/froole/article/details/3497907
阅读全文
http://blog.csdn.net/zajin/article/details/10970207
零、 Mysql下的Web程序,如何实现全文检索:
使用逻辑搜索修饰符(Boolean search modifiers)
++表示必须
+表示要有的-表示不能有的
不带+或者-表示,任意一种
http://blog.csdn.net/froole/article/details/3497907
阅读全文
【需求】
不影响服务器处理的前提下,检测客户端程序是否被强制终了。
【现状】
服务器端和客户端的Socket都设定了keepalive属性。
服务器端设定了探测次数等参数,客户端、服务器只是打开了keepalive机能
服务器端起了一个监视线程,利用select来检测socket是否被关闭。。。
下面这是我的一点肤浅理解。
1.关于keep alive
无论windows,还是linux,keepalive就三个参数:
sk->keepalive_probes:探测次数
sk->keepalive_time 探测的超时
sk->keepalive_intvl 探测间隔
对 于一个已经建立的tcp连接。如果在keepalive_time时间内双方没有任何的数据包传输,则开启keepalive功能的一端将发送 eepalive数据包,若没有收到应答,则每隔keepalive_intvl时间再发送该数据包,发送keepalive_probes次。一直没有 收到应答,则发送rst包关闭连接。若收到应答,则将计时器清零。例如★:
sk->keepalive_probes = 3;
sk->keepalive_time = 30;
sk->keepalive_intvl = 1;
意 思就是说对于tcp连接,如果一直在socket上有数据来往就不会触发keepalive,但是如果30秒一直没有数据往来,则keep alive开始工作:发送探测包,受到响应则认为网络,是好的,结束探测;如果没有相应就每隔1秒发探测包,一共发送3次,3次后仍没有相应,
就 关闭连接,也就是从网络开始断到你的socket能够意识到网络异常,最多花33秒。但是如果没有设置keep alive,可能你在你的socket(阻塞性)的上面,接收: recv会一直阻塞不能返回,除非对端主动关闭连接,因为recv不知道socket断了。发送:取决于数据量的大小,只要底层协议站的buffer能放 下你的发送数据,应用程序级别的send就会一直成功返回。 直到buffer满,甚至buffer满了还要阻塞一段时间试图等待buffer空闲。所以你对send的返回值的检查根本检测不到失败。开启了keep alive功能,你直接通过发送接收的函数返回值就可以知道网络是否异常。设置的方法(应用层):
int keepalive = 1; // 开启keepalive属性
int keepidle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测
int keepinterval = 5; // 探测时发包的时间间隔为5 秒
int keepcount = 3; // 探测尝试的次数.如果第1次探测包就收到响应了,则后2次的不再发.
setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepalive , sizeof(keepalive ));
setsockopt(rs, SOL_TCP, TCP_KEEPIDLE, (void*)&keepidle , sizeof(keepidle ));
setsockopt(rs, SOL_TCP, TCP_KEEPINTVL, (void *)&keepinterval , sizeof(keepinterval ));
setsockopt(rs, SOL_TCP, TCP_KEEPCNT, (void *)&keepcount , sizeof(keepcount ));
2.select和keep alive的关系
select 是为单个线程使用多个socket而设计的,跟检测连接无关,如果只是检测一个socket的话,没有必要使用select。开了keepalive机能 的话,每次调用recv或send时检查返回值,判断是否出错或为0.如果出错,再检查errno查资料,看哪个或哪几个错误号表示链接断了或不存在就可 以了。
另外,谁想定期检查连接状况,谁就启用keep alive。另一端可以不起,只是被动地对探测包进行响应,这种响应是tcp协议的基本要求,跟keep alive无关。并不需要客户端和服务器端都开启keep alive。
3.测试结果
按照例★的值在一端的socket上开启keep alive,然后阻塞在一个recv或者不停的send,这个时候拔了网线,测试从拔掉网线到recv/send返回失败的时间。
在linux kernel里头的测试发现,对于阻塞型的socket,当recv的时候,如果没有设置keep alive,即使网线拔掉或者ifdown,recv很长时间不会返回,最长达17分钟,虽然这个时间比linux的默认超时时间()短了很多。但是如果 设置了keep alive,基本都在keepalive_time +keepalive_probes*keepalive_intvl =33秒内返回错误。
但是对于循环不停send的socket,当拔掉网线后,会持续一段时间send返 回成功(0~10秒左右,取决 于发送数据的量),然后send阻塞,因为协议层的buffer满了,在等待buffer空闲,大概90秒左右后才会返回错误。由此看来,send的时 候,keep alive似乎没有起到作用,这个原因至今也不清楚。后来通过给send之前设置timer来解决的。
来自:http://blog.csdn.net/guomsh/article/details/8484207
linux下使用TCP存活(keepalive)定时器
一、什么是keepalive定时器?[1]
在一个空闲的(idle)TCP连接上,没有任何的数据流,许多TCP/IP的初学者都对此感到惊奇。也就是说,如果TCP连接两端没有任何一个进程在向对方发送数据,那么在这两个TCP模块之间没有任何的数据交换。你可能在其它的网络协议中发现有轮询(polling),但在TCP中它不存在。言外之意就是我们只要启动一个客户端进程,同服务器建立了TCP连接,不管你离开几小时,几天,几星期或是几个月,连接依旧存在。中间的路由器可能崩溃或者重启,电话线可能go down或者back up,只要连接两端的主机没有重启,连接依旧保持建立。
这就可以认为不管是客户端的还是服务器端的应用程序都没有应用程序级(application-level)的定时器来探测连接的不活动状态(inactivity),从而引起任何一个应用程序的终止。然而有的时候,服务器需要知道客户端主机是否已崩溃并且关闭,或者崩溃但重启。许多实现提供了存活定时器来完成这个任务。
存活定时器是一个包含争议的特征。许多人认为,即使需要这个特征,这种对对方的轮询也应该由应用程序来完成,而不是由TCP中实现。此外,如果两个终端系统之间的某个中间网络上有连接的暂时中断,那么存活选项(option)就能够引起两个进程间一个良好连接的终止。例如,如果正好在某个中间路由器崩溃、重启的时候发送存活探测,TCP就将会认为客户端主机已经崩溃,但事实并非如此。
存活(keepalive)并不是TCP规范的一部分。在Host Requirements RFC罗列有不使用它的三个理由:(1)在短暂的故障期间,它们可能引起一个良好连接(good connection)被释放(dropped),(2)它们消费了不必要的宽带,(3)在以数据包计费的互联网上它们(额外)花费金钱。然而,在许多的实现中提供了存活定时器。
一些服务器应用程序可能代表客户端占用资源,它们需要知道客户端主机是否崩溃。存活定时器可以为这些应用程序提供探测服务。Telnet服务器和Rlogin服务器的许多版本都默认提供存活选项。
个人计算机用户使用TCP/IP协议通过Telnet登录一台主机,这是能够说明需要使用存活定时器的一个常用例子。如果某个用户在使用结束时只是关掉了电源,而没有注销(log off),那么他就留下了一个半打开(half-open)的连接。在图18.16,我们看到如何在一个半打开连接上通过发送数据,得到一个复位(reset)返回,但那是在客户端,是由客户端发送的数据。如果客户端消失,留给了服务器端半打开的连接,并且服务器又在等待客户端的数据,那么等待将永远持续下去。存活特征的目的就是在服务器端检测这种半打开连接。
二、keepalive如何工作?[1]
在此描述中,我们称使用存活选项的那一段为服务器,另一端为客户端。也可以在客户端设置该选项,且没有不允许这样做的理由,但通常设置在服务器。如果连接两端都需要探测对方是否消失,那么就可以在两端同时设置(比如NFS)。
若在一个给定连接上,两小时之内无任何活动,服务器便向客户端发送一个探测段。(我们将在下面的例子中看到探测段的样子。)客户端主机必须是下列四种状态之一:
1) 客户端主机依旧活跃(up)运行,并且从服务器可到达。从客户端TCP的正常响应,服务器知道对方仍然活跃。服务器的TCP为接下来的两小时复位存活定时器,如果在这两个小时到期之前,连接上发生应用程序的通信,则定时器重新为往下的两小时复位,并且接着交换数据。
2) 客户端已经崩溃,或者已经关闭(down),或者正在重启过程中。在这两种情况下,它的TCP都不会响应。服务器没有收到对其发出探测的响应,并且在75秒之后超时。服务器将总共发送10个这样的探测,每个探测75秒。如果没有收到一个响应,它就认为客户端主机已经关闭并终止连接。
3) 客户端曾经崩溃,但已经重启。这种情况下,服务器将会收到对其存活探测的响应,但该响应是一个复位,从而引起服务器对连接的终止。
4) 客户端主机活跃运行,但从服务器不可到达。这与状态2类似,因为TCP无法区别它们两个。它所能表明的仅是未收到对其探测的回复。
服务器不必担心客户端主机被关闭然后重启的情况(这里指的是操作员执行的正常关闭,而不是主机的崩溃)。当系统被操作员关闭时,所有的应用程序进程(也就是客户端进程)都将被终止,客户端TCP会在连接上发送一个FIN。收到这个FIN后,服务器TCP向服务器进程报告一个文件结束,以允许服务器检测这种状态。
在第一种状态下,服务器应用程序不知道存活探测是否发生。凡事都是由TCP层处理的,存活探测对应用程序透明,直到后面2,3,4三种状态发生。在这三种状态下,通过服务器的TCP,返回给服务器应用程序错误信息。(通常服务器向网络发出一个读请求,等待客户端的数据。如果存活特征返回一个错误信息,则将该信息作为读操作的返回值返回给服务器。)在状态2,错误信息类似于“连接超时”。状态3则为“连接被对方复位”。第四种状态看起来像连接超时,或者根据是否收到与该连接相关的ICMP错误信息,而可能返回其它的错误信息。
三、在Linux中如何使用keepalive?[2]
Linux has built-in support for keepalive. You need to enable TCP/IP networking in order to use it. You also need procfs support andsysctl support to be able to configure the kernel parameters at runtime.
The procedures involving keepalive use three user-driven variables:
tcp_keepalive_time
the interval between the last data packet sent (simple ACKs are not considered data) and the first keepalive probe; after the connection is marked to need keepalive, this counter is not used any further
tcp_keepalive_intvl
the interval between subsequential keepalive probes, regardless of what the connection has exchanged in the meantime
tcp_keepalive_probes
the number of unacknowledged probes to send before considering the connection dead and notifying the application layer
Remember that keepalive support, even if configured in the kernel, is not the default behavior in Linux. Programs must request keepalive control for their sockets using the setsockopt interface. There are relatively few programs implementing keepalive, but you can easily add keepalive support for most of them following the instructions.
上面一段话已经说得很明白,linux内核包含对keepalive的支持。其中使用了三个参数:tcp_keepalive_time(开启keepalive的闲置时长)tcp_keepalive_intvl(keepalive探测包的发送间隔) 和tcp_keepalive_probes (如果对方不予应答,探测包的发送次数);如何配置这三个参数呢?
There are two ways to configure keepalive parameters inside the kernel via userspace commands:
procfs interface
sysctl interface
We mainly discuss how this is accomplished on the procfs interface because it's the most used, recommended and the easiest to understand. The sysctl interface, particularly regarding the sysctl(2) syscall and not the sysctl(8) tool, is only here for the purpose of background knowledge.
The procfs interface
This interface requires both sysctl and procfs to be built into the kernel, and procfs mounted somewhere in the filesystem (usually on/proc, as in the examples below). You can read the values for the actual parameters by "catting" files in /proc/sys/net/ipv4/directory:
# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
# cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75
# cat /proc/sys/net/ipv4/tcp_keepalive_probes
9
The first two parameters are expressed in seconds, and the last is the pure number. This means that the keepalive routines wait for two hours (7200 secs) before sending the first keepalive probe, and then resend it every 75 seconds. If no ACK response is received for nine consecutive times, the connection is marked as broken.
Modifying this value is straightforward: you need to write new values into the files. Suppose you decide to configure the host so that keepalive starts after ten minutes of channel inactivity, and then send probes in intervals of one minute. Because of the high instability of our network trunk and the low value of the interval, suppose you also want to increase the number of probes to 20.
Here's how we would change the settings:
# echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time
# echo 60 > /proc/sys/net/ipv4/tcp_keepalive_intvl
# echo 20 > /proc/sys/net/ipv4/tcp_keepalive_probes
To be sure that all succeeds, recheck the files and confirm these new values are showing in place of the old ones.
这样,上面的三个参数配置完毕。使这些参数重启时保持不变的方法请阅读参考文献[2]。
四、在程序中如何使用keepalive?[2]-[4]
All you need to enable keepalive for a specific socket is to set the specific socket option on the socket itself. The prototype of the function is as follows:
int setsockopt(int s, int level, int optname,
const void *optval, socklen_t optlen)
The first parameter is the socket, previously created with the socket(2); the second one must be SOL_SOCKET, and the third must beSO_KEEPALIVE . The fourth parameter must be a boolean integer value, indicating that we want to enable the option, while the last is the size of the value passed before.
According to the manpage, 0 is returned upon success, and -1 is returned on error (and errno is properly set).
There are also three other socket options you can set for keepalive when you write your application. They all use the SOL_TCP level instead of SOL_SOCKET, and they override system-wide variables only for the current socket. If you read without writing first, the current system-wide parameters will be returned.
TCP_KEEPCNT: overrides tcp_keepalive_probes
TCP_KEEPIDLE: overrides tcp_keepalive_time
TCP_KEEPINTVL: overrides tcp_keepalive_intvlint keepAlive = 1; // 开启keepalive属性
我们看到keepalive是一个开关选项,可以通过函数来使能。具体地说,可以使用以下代码:
setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive));
上面英文资料中提到的第二个参数可以取为SOL_TCP,以设置keepalive的三个参数(具体代码参考文献[3]),在程序中实现需要头文件“netinet/tcp.h”。当然,在实际编程时也可以采用系统调用的方式配置的keepalive参数。
关于setsockopt的其他参数可以参考文献[4]。
五、如何判断TCP连接是否断开?[3]
当tcp检测到对端socket不再可用时(不能发出探测包,或探测包没有收到ACK的响应包),select会返回socket可读,并且在recv时返回-1,同时置上errno为ETIMEDOUT。
来自:http://machael.blog.51cto.com/829462/211989/
背景:外网仿真机是通过nginx代理到真实的某台虚拟机上,而仿真机上是http,此时有一个https服务需要进行配置并代理,于是,得通过nginx去作反向https代理,这篇文章就是干这事儿的,如下:
作者:敖士伟
说明:
1.nginx 1.2.0 centos 6.2
2.这里所指的反向代理https是指nginx为ssl服务器,nginx与后端服务器的通信还是http,当然可能也可以实现nginx与后端服务器实现https通信,不过本文没有测试
步骤:
nginx要实现ssl,在编译时要添加--with-http_ssl_module,如:
./configure --with-http_ssl_module
#cd /usr/local/nginx/conf
#mkdir ssl
#cd ssl
生成一个私有key
# openssl genrsa -des3 -out aoshiwei.com.key 1024
提示输入密码
生成CSR(Certificate Signing Request)文件:
# openssl req -new -key aoshiwei.com.key -out aoshiwei.com.csr
填写证书内容,组织机构、域名等,Common Name填写域名
# cp aoshiwei.com.key aoshiwei.com.key.bak
# openssl rsa -in aoshiwei.com.key.bak -out aoshiwei.com.key
# openssl x509 -req -days 365 -in aoshiwei.com.csr -signkey aoshiwei.com.key -out aoshiwei.com.crt
在nginx.conf中添加:
server {
### server port and name ###
listen 443 ssl;
server_name member.aoshiwei.com;
ssl on;
### SSL log files ###
access_log logs/ssl-access.log;
error_log logs/ssl-error.log;
### SSL cert files ###
ssl_certificate ssl/aoshiwei.com.crt;
ssl_certificate_key ssl/aoshiwei.com.key;
### Add SSL specific settings here ###
keepalive_timeout 60;
### Limiting Ciphers ########################
# Uncomment as per your setup
#ssl_ciphers HIGH:!ADH;
#ssl_perfer_server_ciphers on;
#ssl_protocols SSLv3;
##############################################
### We want full access to SSL via backend ###
location / {
proxy_pass http://member.aoshiwei.com;
### force timeouts if one of backend is died ##
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
### Set headers ####
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
### Most PHP, Python, Rails, Java App can use this header ###
proxy_set_header X-Forwarded-Proto https;
### By default we don't want to redirect it ####
proxy_redirect off;
}
}
来自:http://blog.csdn.net/ikmb/article/details/7618172
作者:敖士伟
说明:
1.nginx 1.2.0 centos 6.2
2.这里所指的反向代理https是指nginx为ssl服务器,nginx与后端服务器的通信还是http,当然可能也可以实现nginx与后端服务器实现https通信,不过本文没有测试
步骤:
nginx要实现ssl,在编译时要添加--with-http_ssl_module,如:
./configure --with-http_ssl_module
#cd /usr/local/nginx/conf
#mkdir ssl
#cd ssl
生成一个私有key
# openssl genrsa -des3 -out aoshiwei.com.key 1024
提示输入密码
生成CSR(Certificate Signing Request)文件:
# openssl req -new -key aoshiwei.com.key -out aoshiwei.com.csr
填写证书内容,组织机构、域名等,Common Name填写域名
# cp aoshiwei.com.key aoshiwei.com.key.bak
# openssl rsa -in aoshiwei.com.key.bak -out aoshiwei.com.key
# openssl x509 -req -days 365 -in aoshiwei.com.csr -signkey aoshiwei.com.key -out aoshiwei.com.crt
在nginx.conf中添加:
server {
### server port and name ###
listen 443 ssl;
server_name member.aoshiwei.com;
ssl on;
### SSL log files ###
access_log logs/ssl-access.log;
error_log logs/ssl-error.log;
### SSL cert files ###
ssl_certificate ssl/aoshiwei.com.crt;
ssl_certificate_key ssl/aoshiwei.com.key;
### Add SSL specific settings here ###
keepalive_timeout 60;
### Limiting Ciphers ########################
# Uncomment as per your setup
#ssl_ciphers HIGH:!ADH;
#ssl_perfer_server_ciphers on;
#ssl_protocols SSLv3;
##############################################
### We want full access to SSL via backend ###
location / {
proxy_pass http://member.aoshiwei.com;
### force timeouts if one of backend is died ##
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
### Set headers ####
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
### Most PHP, Python, Rails, Java App can use this header ###
proxy_set_header X-Forwarded-Proto https;
### By default we don't want to redirect it ####
proxy_redirect off;
}
}
来自:http://blog.csdn.net/ikmb/article/details/7618172
swoole之代码热更新实现
Php/Js/Shell/Go jackxiang 2014-6-16 14:40
背景:作为swoole项目的顾问,平时工作时间很少看QQ群里如此有系统讲到swoole的热重启实现,特转载。
阅读全文
阅读全文
修改/dev/shm的大小
Unix/LinuxC技术 jackxiang 2014-6-14 15:12
背景:
root@119.10.*.23:/dev/shm# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 14G 5.4G 7.3G 43% /
tmpfs tmpfs 2.9G 0 2.9G 0% /dev/shm
/dev/sda1 ext4 504M 43M 436M 9% /boot
/dev/sdb ext4 94G 284M 89G 1% /data
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults 0 0
——————————————文章学习——————————————
修改/etc/fstab的这行: 默认的:
none /dev/shm tmpfs defaults 0 0
改成:
none /dev/shm tmpfs defaults,size=1024M 0 0
size参数也可以用G作单位:size=1G。
重新mount /dev/shm使之生效:
# mount -o remount /dev/shm
马上可以用"df -h"命令检查变化。
阅读全文
root@119.10.*.23:/dev/shm# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/sda3 ext4 14G 5.4G 7.3G 43% /
tmpfs tmpfs 2.9G 0 2.9G 0% /dev/shm
/dev/sda1 ext4 504M 43M 436M 9% /boot
/dev/sdb ext4 94G 284M 89G 1% /data
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults 0 0
——————————————文章学习——————————————
修改/etc/fstab的这行: 默认的:
none /dev/shm tmpfs defaults 0 0
改成:
none /dev/shm tmpfs defaults,size=1024M 0 0
size参数也可以用G作单位:size=1G。
重新mount /dev/shm使之生效:
# mount -o remount /dev/shm
马上可以用"df -h"命令检查变化。
阅读全文
[实践OK]PHP出现Notice: Undefined offset 的解决方法
Php/Js/Shell/Go jackxiang 2014-6-13 16:48
前面不成立,后面就不运行了,解决这个问题很简单如:
这样就很好的解决这个问题了。
来自:http://www.111cn.net/phper/31/46438.htm
Notice: Undefined offset 的解决方法,
在PHP 5.3.5中出现Undefined offset: 0的解决方法:
http://blog.csdn.net/jallin2001/article/details/6644194
附带:
解决phpmyadmin安装过程中Notice: Undefined offset: 以及Function eregi() is deprecated 的报错信息:
http://jackxiang.com/post/7028/
解决办法:在php.ini里面设置error_reporting = E_ALL & ~E_NOTICE,error_reporting 不能有分号,有分号表示不使用这个设置。如果有多个error_reporting,以最后一个为准。 操作后,问题解决。
; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能
终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组$A[]有10个元数,如果出现了$A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !发也有可能是unset数组后再尝试读取其内容,php手册中有:
$array[1] ='www.111cn.net';
echo $array[0] ;
输入结果是
Notice: Undefined offset: 1 in D:wwwrootwraskseo404.php on line 5 下面我们来看解决办法
解决这个问题很简单如
echo isset($array[0])?$array[0]:'数组未定义';
这样就很好的解决这个问题了。
来自:http://www.111cn.net/phper/31/46438.htm
实践如下:
---------- 调试PHP ----------
数组未定义
输出完成 (耗时 4 秒) - 正常终止
这样就很好的解决这个问题了。
来自:http://www.111cn.net/phper/31/46438.htm
Notice: Undefined offset 的解决方法,
在PHP 5.3.5中出现Undefined offset: 0的解决方法:
http://blog.csdn.net/jallin2001/article/details/6644194
附带:
解决phpmyadmin安装过程中Notice: Undefined offset: 以及Function eregi() is deprecated 的报错信息:
http://jackxiang.com/post/7028/
解决办法:在php.ini里面设置error_reporting = E_ALL & ~E_NOTICE,error_reporting 不能有分号,有分号表示不使用这个设置。如果有多个error_reporting,以最后一个为准。 操作后,问题解决。
; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能
终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组$A[]有10个元数,如果出现了$A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !发也有可能是unset数组后再尝试读取其内容,php手册中有:
$array[1] ='www.111cn.net';
echo $array[0] ;
输入结果是
Notice: Undefined offset: 1 in D:wwwrootwraskseo404.php on line 5 下面我们来看解决办法
解决这个问题很简单如
echo isset($array[0])?$array[0]:'数组未定义';
这样就很好的解决这个问题了。
来自:http://www.111cn.net/phper/31/46438.htm
实践如下:
---------- 调试PHP ----------
数组未定义
输出完成 (耗时 4 秒) - 正常终止
背景:Mysql新版本的慢查询配置和旧的版本不太一样,为此,特转下这这篇文章,以备案。近来发现我们用程序写啥慢sql还不如包自己带呢,
MySQL分支 Percona 5.6.15 发布: http://www.open-open.com/news/view/18ed41c ,这自己带着杀sql的功能: Percona5.6自身已支持杀死慢SQL, http://hcymysql.blog.51cto.com/5223301/1621218
零、关闭mysql:
一、Mysql启动参数 -u root:
二、配置my.cnf如下:
mysql版本:
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.13-log |
+------------+
1 row in set (0.00 sec)
[root@mysql_multi ~]# vi /etc/my.cnf
【mysqld3307】
long_query_time=1
#slow_query_log
slow_query_log=1
#slow_query_log_file=/data/mysql/mysqldata3307/log/slow-query.log
#以前版本的参数格式跟5.6的不一致
slow_query_log_file=/data/mysql/mysqldata3307/log/slow-query.log
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1
对 3307 端口的mysql:
[root@mysql_multi ~]# mysqld_multi start 3307
[root@mysql_multi ~]# netstat -nlp|grep mysql
tcp 0 0 :::3306 :::* LISTEN 20211/mysqld
tcp 0 0 :::3307 :::* LISTEN 18693/mysqld
unix 2 [ ACC ] STREAM LISTENING 42309 20211/mysqld /data/mysql/mysqldata3306/sock/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 69806 18693/mysqld /data/mysql/mysqldata3307/sock/mysql.sock
root@localhost : mysql 01:00:16> show variables like '%slow%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 2
Current database: mysql
+---------------------------+----------------------------------------------+
| Variable_name | Value |
+---------------------------+----------------------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/mysql/mysqldata3307/log/slow-query.log |
+---------------------------+----------------------------------------------+
5 rows in set (0.00 sec)
root@localhost : mysql 01:03:44> show variables like '%index%';
+----------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------+-------+
| eq_range_index_dive_limit | 10 |
| innodb_adaptive_hash_index | ON |
| innodb_cmp_per_index_enabled | OFF |
| log_bin_index | |
| log_queries_not_using_indexes | ON |
| log_throttle_queries_not_using_indexes | 0 |
| relay_log_index | |
+----------------------------------------+-------+
7 rows in set (0.00 sec)
然后运行一个需要长时间才能执行完毕的sql,
select sleep(2);
使用mysqldumpslow 查看日志:
/data/mysql/mysqldata3307/log/slow-query.log (直接使用cat 进行查看也可以)
转自:http://blog.itpub.net/29291882/viewspace-1064074
实践如下:
一、
vi /usr/local/mysql/conf/my.cnf
slow_query_log=1
long_query_time = 2
slow_query_log_file=/data/db/mysql/localhost-slow.log
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1
#如果开启了log_queries_not_using_indexes选项,slow query日志会充满过多的垃圾日志记录,这些快且高效的全表扫描查询(表小)会冲掉真正有用的slow queries记录。比如select * from category这样的查询也会被记录下来。
二、
mysql> show variables like '%slow%';
+---------------------------+-----------------------------------+
| Variable_name | Value |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/db/mysql/localhost-slow.log |
+---------------------------+-----------------------------------+
三、
du -sh /data/db/mysql/localhost-slow.log
803M /data/db/mysql/localhost-slow.log
四、
Mysql 测试配置文件是否正确 my.cnf,那个nginx 有-t,mysql呢?
一)这个没必要重启,直接 set @@global.slow_query_log=1;
二)起动一个新端口的副本测试,有道理。
mysql> show variables like '%slow%';
+---------------------------+--------------------------------------------+
| Variable_name | Value |
+---------------------------+--------------------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/db/mysql/localhost-xiyou-slowsql.log |
+---------------------------+--------------------------------------------
__________________________________________
mysql5.6和5.5中打开slow_query_log的方式有所改变:
mysql5.6.10关于慢查询的设置slow-query-log
前两天,刚把开发用的环境升级为2008R2,,所以想试试5.6.10的64位的数据库,是在mysql的官方下载的win32x64版本,一共有200多M。发现里面只有一个默认的my.ini文件,想进行优化试试,结果发现老是启动不了。后来发现,主要是这个关于慢查询的设置变了,之前是:
slow_query_log
long_query_time = 5
log-slow-queries=slow.log
现在必须要这种设置才行
slow_query_log=1
slow_query_log_file=slow.log
看来从5.6.* 可能已经全面取消了
log_slow_queries=slow.log这种写法了
来自:http://www.2cto.com/database/201304/203100.html
MySQL分支 Percona 5.6.15 发布: http://www.open-open.com/news/view/18ed41c ,这自己带着杀sql的功能: Percona5.6自身已支持杀死慢SQL, http://hcymysql.blog.51cto.com/5223301/1621218
零、关闭mysql:
一、Mysql启动参数 -u root:
二、配置my.cnf如下:
mysql版本:
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.13-log |
+------------+
1 row in set (0.00 sec)
[root@mysql_multi ~]# vi /etc/my.cnf
【mysqld3307】
long_query_time=1
#slow_query_log
slow_query_log=1
#slow_query_log_file=/data/mysql/mysqldata3307/log/slow-query.log
#以前版本的参数格式跟5.6的不一致
slow_query_log_file=/data/mysql/mysqldata3307/log/slow-query.log
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1
对 3307 端口的mysql:
[root@mysql_multi ~]# mysqld_multi start 3307
[root@mysql_multi ~]# netstat -nlp|grep mysql
tcp 0 0 :::3306 :::* LISTEN 20211/mysqld
tcp 0 0 :::3307 :::* LISTEN 18693/mysqld
unix 2 [ ACC ] STREAM LISTENING 42309 20211/mysqld /data/mysql/mysqldata3306/sock/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 69806 18693/mysqld /data/mysql/mysqldata3307/sock/mysql.sock
root@localhost : mysql 01:00:16> show variables like '%slow%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 2
Current database: mysql
+---------------------------+----------------------------------------------+
| Variable_name | Value |
+---------------------------+----------------------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/mysql/mysqldata3307/log/slow-query.log |
+---------------------------+----------------------------------------------+
5 rows in set (0.00 sec)
root@localhost : mysql 01:03:44> show variables like '%index%';
+----------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------+-------+
| eq_range_index_dive_limit | 10 |
| innodb_adaptive_hash_index | ON |
| innodb_cmp_per_index_enabled | OFF |
| log_bin_index | |
| log_queries_not_using_indexes | ON |
| log_throttle_queries_not_using_indexes | 0 |
| relay_log_index | |
+----------------------------------------+-------+
7 rows in set (0.00 sec)
然后运行一个需要长时间才能执行完毕的sql,
select sleep(2);
使用mysqldumpslow 查看日志:
/data/mysql/mysqldata3307/log/slow-query.log (直接使用cat 进行查看也可以)
转自:http://blog.itpub.net/29291882/viewspace-1064074
实践如下:
一、
vi /usr/local/mysql/conf/my.cnf
slow_query_log=1
long_query_time = 2
slow_query_log_file=/data/db/mysql/localhost-slow.log
#将所有没有使用带索引的查询语句全部写到慢查询日志中
log_queries_not_using_indexes=1
#如果开启了log_queries_not_using_indexes选项,slow query日志会充满过多的垃圾日志记录,这些快且高效的全表扫描查询(表小)会冲掉真正有用的slow queries记录。比如select * from category这样的查询也会被记录下来。
二、
mysql> show variables like '%slow%';
+---------------------------+-----------------------------------+
| Variable_name | Value |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/db/mysql/localhost-slow.log |
+---------------------------+-----------------------------------+
三、
du -sh /data/db/mysql/localhost-slow.log
803M /data/db/mysql/localhost-slow.log
四、
Mysql 测试配置文件是否正确 my.cnf,那个nginx 有-t,mysql呢?
一)这个没必要重启,直接 set @@global.slow_query_log=1;
二)起动一个新端口的副本测试,有道理。
mysql> show variables like '%slow%';
+---------------------------+--------------------------------------------+
| Variable_name | Value |
+---------------------------+--------------------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/db/mysql/localhost-xiyou-slowsql.log |
+---------------------------+--------------------------------------------
__________________________________________
mysql5.6和5.5中打开slow_query_log的方式有所改变:
mysql5.6.10关于慢查询的设置slow-query-log
前两天,刚把开发用的环境升级为2008R2,,所以想试试5.6.10的64位的数据库,是在mysql的官方下载的win32x64版本,一共有200多M。发现里面只有一个默认的my.ini文件,想进行优化试试,结果发现老是启动不了。后来发现,主要是这个关于慢查询的设置变了,之前是:
slow_query_log
long_query_time = 5
log-slow-queries=slow.log
现在必须要这种设置才行
slow_query_log=1
slow_query_log_file=slow.log
看来从5.6.* 可能已经全面取消了
log_slow_queries=slow.log这种写法了
来自:http://www.2cto.com/database/201304/203100.html
正确计算linux系统内存使用率,Linux对大内存在长时间运行依旧有吃光的感觉的解释。
Unix/LinuxC技术 jackxiang 2014-6-12 11:47
背景:我最近买了一vps 5G内存,发现其内存刚开始还我很多剩余,逐渐发现内存越来越少,最近备案就开lnmp套件也没开几个进程呀。
[root@ZWCLC6X-7198 ~]# uptime
11:20:48 up 6 days, 37 min, 1 user, load average: 0.00, 0.00, 0.00
阅读全文
[root@ZWCLC6X-7198 ~]# uptime
11:20:48 up 6 days, 37 min, 1 user, load average: 0.00, 0.00, 0.00
阅读全文
背景:在lvs环境也好,f5也好,在后端配置的php-fpm可能会不太多,而在用户端反映出502错误,so,排查得一台台绑定ip排查,但偶会出现,不易发现,这种情况一般就是php-fpm起得太少,没啥说的现在内存不是问题,多启动一些php-fpm的数目总是好事。
一、nginx访问日志中查找http返回头包含502的个数:
二、PHP-fpm数量查看:
三、是不是应该加大到22个或以上呢?
一、nginx访问日志中查找http返回头包含502的个数:
二、PHP-fpm数量查看:
三、是不是应该加大到22个或以上呢?
[实践OK]svn: Can't convert string from 'UTF-8' to native encoding 的解决办法
Unix/LinuxC技术 jackxiang 2014-6-11 18:08
页面构建时有中文名:
你里面是不是有中文文件名,出现:svn: Can't convert string from native encoding to 'UTF-8':
svn: ?\229?\143?\130?\228?\184?\142?\230?\180?\187?\229?\138?\168?\231?\172?\172?\228?\184?\137?\230?\173?\165-?\229?\143?\130?\228?\184?\142?\230?\136?\144?\229?\138?\159.html
实践OK如下:
于是在shell刚开始加入三行,如下:
#! #/bin/sh
export LC_CTYPE="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
[root@test ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=为空,我在上面给全设置了:-)
这样设置后,如下:
export LC_CTYPE="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
好了:
跳过“set-depth=exclude”
跳过“data”
于修订版 1444。
跳过“set-depth=exclude”
跳过“data”
————————————————————————————————————————————————————————————————
svn 版本库中有文件是以中文字符命名的,在 Linux 下 checkout 会报错:
svn: Can't convert string from 'UTF-8' to native encoding
然后 checkout 程序就退出了!
解决办法很简单,正确设置当前系统的 locale:
export LC_CTYPE="zh_CN.UTF-8"
然后重新 checkout 即可。
注意,根据你的系统字符集设置变量,如果 zh_CN.UTF-8 不行,有可能要改成 GB2312:
export LC_CTYPE="zh_CN.GB2312"
另外,看别人的帖子,有的变量名不同,用的是:
export LANG="zh_CN.UTF-8"
来自:
http://www.toplee.com/blog/566.html
http://svnbook.red-bean.com/en/1.2/svn.advanced.l10n.html
——————————————————————————————————————
方法一:只需要修改bash_profile文件就可以,添加下面几行:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
然后source一下:
. ~/.bashrc
这时候,再重新进行SVN操作就会再报svn: Can't convert string from 'UTF-8' to native encoding:的错误了。
方法二:另一种解决办法
解决办法很简单,正确设置当前系统的 locale:
export LC_CTYPE=“zh_CN.UTF-8″
然后重新 checkout 即可。
摘自:http://www.111cn.net/sys/linux/60107.htm
你里面是不是有中文文件名,出现:svn: Can't convert string from native encoding to 'UTF-8':
svn: ?\229?\143?\130?\228?\184?\142?\230?\180?\187?\229?\138?\168?\231?\172?\172?\228?\184?\137?\230?\173?\165-?\229?\143?\130?\228?\184?\142?\230?\136?\144?\229?\138?\159.html
实践OK如下:
于是在shell刚开始加入三行,如下:
#! #/bin/sh
export LC_CTYPE="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
[root@test ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=为空,我在上面给全设置了:-)
这样设置后,如下:
export LC_CTYPE="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
好了:
跳过“set-depth=exclude”
跳过“data”
于修订版 1444。
跳过“set-depth=exclude”
跳过“data”
————————————————————————————————————————————————————————————————
svn 版本库中有文件是以中文字符命名的,在 Linux 下 checkout 会报错:
svn: Can't convert string from 'UTF-8' to native encoding
然后 checkout 程序就退出了!
解决办法很简单,正确设置当前系统的 locale:
export LC_CTYPE="zh_CN.UTF-8"
然后重新 checkout 即可。
注意,根据你的系统字符集设置变量,如果 zh_CN.UTF-8 不行,有可能要改成 GB2312:
export LC_CTYPE="zh_CN.GB2312"
另外,看别人的帖子,有的变量名不同,用的是:
export LANG="zh_CN.UTF-8"
来自:
http://www.toplee.com/blog/566.html
http://svnbook.red-bean.com/en/1.2/svn.advanced.l10n.html
——————————————————————————————————————
方法一:只需要修改bash_profile文件就可以,添加下面几行:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
然后source一下:
. ~/.bashrc
这时候,再重新进行SVN操作就会再报svn: Can't convert string from 'UTF-8' to native encoding:的错误了。
方法二:另一种解决办法
解决办法很简单,正确设置当前系统的 locale:
export LC_CTYPE=“zh_CN.UTF-8″
然后重新 checkout 即可。
摘自:http://www.111cn.net/sys/linux/60107.htm
CentOS6.4下创建本地yum源,挂载ISO后直接mount上后从里面安装任意rpm包。
Unix/LinuxC技术 jackxiang 2014-6-11 13:04
[创建本地yum源]
挂载iso文件
mount -o loop -t iso9660 CentOS-6.3-x86_64-bin-DVD1.iso /mnt
设置本地yum源
在/etc/yum.repos.d/创建 “任意文件名.repo" 文件
vi 刚才新建的文件名编辑
【localyum】任意名称 ,不能有空格。
name= local yum 任意名称
baseurl=file:////mnt/Packages 这个路径是自定的。Server为光盘中的Server目录 ,Packages与Server放在同一目录下。即/software目录下
enabled=1 代表 生效 0为不生效
gpgcheck=1 检查gpgkey 1 生效 0不生效
gpgkey=file:///software 安装光盘里有这个文件 不指定 安装时,可能提示没有注册
保存退出
执行命令 yum clean all
摘自:http://www.server110.com/kvm/201310/2721.html
挂载iso文件
mount -o loop -t iso9660 CentOS-6.3-x86_64-bin-DVD1.iso /mnt
设置本地yum源
在/etc/yum.repos.d/创建 “任意文件名.repo" 文件
vi 刚才新建的文件名编辑
【localyum】任意名称 ,不能有空格。
name= local yum 任意名称
baseurl=file:////mnt/Packages 这个路径是自定的。Server为光盘中的Server目录 ,Packages与Server放在同一目录下。即/software目录下
enabled=1 代表 生效 0为不生效
gpgcheck=1 检查gpgkey 1 生效 0不生效
gpgkey=file:///software 安装光盘里有这个文件 不指定 安装时,可能提示没有注册
保存退出
执行命令 yum clean all
摘自:http://www.server110.com/kvm/201310/2721.html
背景:整个vps,想在上面整个windows,装个Rtx Server,你说是不是得装个界面,得vnc,再装个vmware?呵呵。
CentOS下安装KDE/GNOME+VNC实现远程图形界面管理
通常,我们用ssh命令行来管理linux服务器。但有时候,我们需要像Windows下的远程桌面这样的图形远程程序来管理服务器(比如安装ORACLE),然而Linux下默认并不存在这样的程序。所以,我们需要安装KDE或gnome桌面环境和VNC来实现远程图形管理!具体步骤如下:
1.安装KDE
yum install kdepim
或安装Gnome(256M以上内存可两个都安装)
yum groupinstall gnome-desktop
yum install gnome-session
内存大的建议用GNOME!
再运行
yum groupinstall "X Window System" "GNOME Desktop Environment" "KDE (K Desktop Environment)"
2.安装VNC
yum -y install vnc vnc-server firefox x11-xorg
yum -y install fonts-chinese
3.配置
运行如下代码
vncserver
运行完后会提示你设置密码,需要输两遍。设好你的密码后,然后程序会建立一个.vnc的目录,一般情况下是/root/.vnc
杀掉VNC的进程并删除临时sockets。
pkill -9 vnc
rm -rf /tmp/.X1*
编辑/root/.vnc/xstartup
vi /root/.vnc/xstartup
在最后一行将twm
KDE则改成startkde
GNOME则改成gnome-session
4.重新开启vncserver
vncserver
到此,安装结束。现在可以使用vnc客户端远程图形化管理服务器了。
http://yongsheng0550.blog.163.com/blog/static/249841052011443444574/
CentOS6.3的VNC--远程桌面:
http://www.douban.com/note/290552870/
Linux(CentOS 6.4)下安装VMware Tools:
http://blog.itpub.net/29409386/viewspace-1081603/
VMware Server 2.0使用手册(加入了USB设备连接方法):(感觉靠谱)
http://wenku.baidu.com/link?url=G1ZO2IqwPIBEDW5wiy2UZV5Ni-OC5619xST2BtkISzwmxuNXLSXNhNjDdH5t4JGjs793g0zo3vj-mBjEv4NqILp0CQiG-jJ2H02SlTtMk4q
首先我想说vmware 在linux下安装真TM坑爹..
吐槽结束,然后看看我如何搞定它..:
http://www.bianceng.cn/OS/Linux/201406/41369.htm
centos下安装VMware Server 虚拟机的方法:
http://www.jb51.net/os/RedHat/31989.html
三、安装vnc
注意:CentOS6.3 VNC的命名rpm为tiggervnc-server
(1)
yum install tiggervnc-server
(2)
vi /etc/sysconfig/vncservers
#加一行
VNCSERVERS="1:root"
(3)
vncpasswd
创建密码
(4)
/etc/init.d/vncserver start
[root@jackxiang ~]# /etc/init.d/vncserver start
正在启动 VNC 服务器:no displays configured [失败]
实践OK:
[root@jackxiang ~]# vncserver :2
xauth: (stdin):1: bad display name "jackxiang:2" in "add" command
New 'jackxiang:2 (root)' desktop is jackxiang:2
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/jackxiang:2.log
/root/startvnc.sh
#vncserver :1
vncserver -geometry 1504x807
/usr/bin/Xvnc :1 -desktop jackxiang:1 (root) -auth /root/.Xauthority -geometry 1504x807 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn
在服务器端启动VNC服务时按如下命令启动:vncserver -geometry 1152x864 -depth 24 即可以1152x864的分辨率和24位的颜色深度来显示。
-geometry x指定显示桌面的分辨率,默认为1024x768,比1152x864更大一点的:1152x864 1440x900 1600x1200 。
http://blog.sina.com.cn/s/blog_45a43d6d01017smq.html
(5)
# netstat -nulpt | grep vnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 29167/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 29167/Xvnc
tcp 0 0 :::6001 :::* LISTEN 29167/Xvnc
表示vnc可以使用了
以上来自:http://www.server110.com/kvm/201310/2721.html
Linux(CentOS下)安装VMware Server 2.0:
http://www.cuwww.com/help/detail-11.html
CentOS下安装KDE/GNOME+VNC实现远程图形界面管理
通常,我们用ssh命令行来管理linux服务器。但有时候,我们需要像Windows下的远程桌面这样的图形远程程序来管理服务器(比如安装ORACLE),然而Linux下默认并不存在这样的程序。所以,我们需要安装KDE或gnome桌面环境和VNC来实现远程图形管理!具体步骤如下:
1.安装KDE
yum install kdepim
或安装Gnome(256M以上内存可两个都安装)
yum groupinstall gnome-desktop
yum install gnome-session
内存大的建议用GNOME!
再运行
yum groupinstall "X Window System" "GNOME Desktop Environment" "KDE (K Desktop Environment)"
2.安装VNC
yum -y install vnc vnc-server firefox x11-xorg
yum -y install fonts-chinese
3.配置
运行如下代码
vncserver
运行完后会提示你设置密码,需要输两遍。设好你的密码后,然后程序会建立一个.vnc的目录,一般情况下是/root/.vnc
杀掉VNC的进程并删除临时sockets。
pkill -9 vnc
rm -rf /tmp/.X1*
编辑/root/.vnc/xstartup
vi /root/.vnc/xstartup
在最后一行将twm
KDE则改成startkde
GNOME则改成gnome-session
4.重新开启vncserver
vncserver
到此,安装结束。现在可以使用vnc客户端远程图形化管理服务器了。
http://yongsheng0550.blog.163.com/blog/static/249841052011443444574/
CentOS6.3的VNC--远程桌面:
http://www.douban.com/note/290552870/
Linux(CentOS 6.4)下安装VMware Tools:
http://blog.itpub.net/29409386/viewspace-1081603/
VMware Server 2.0使用手册(加入了USB设备连接方法):(感觉靠谱)
http://wenku.baidu.com/link?url=G1ZO2IqwPIBEDW5wiy2UZV5Ni-OC5619xST2BtkISzwmxuNXLSXNhNjDdH5t4JGjs793g0zo3vj-mBjEv4NqILp0CQiG-jJ2H02SlTtMk4q
首先我想说vmware 在linux下安装真TM坑爹..
吐槽结束,然后看看我如何搞定它..:
http://www.bianceng.cn/OS/Linux/201406/41369.htm
centos下安装VMware Server 虚拟机的方法:
http://www.jb51.net/os/RedHat/31989.html
三、安装vnc
注意:CentOS6.3 VNC的命名rpm为tiggervnc-server
(1)
yum install tiggervnc-server
(2)
vi /etc/sysconfig/vncservers
#加一行
VNCSERVERS="1:root"
(3)
vncpasswd
创建密码
(4)
/etc/init.d/vncserver start
[root@jackxiang ~]# /etc/init.d/vncserver start
正在启动 VNC 服务器:no displays configured [失败]
实践OK:
[root@jackxiang ~]# vncserver :2
xauth: (stdin):1: bad display name "jackxiang:2" in "add" command
New 'jackxiang:2 (root)' desktop is jackxiang:2
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/jackxiang:2.log
/root/startvnc.sh
#vncserver :1
vncserver -geometry 1504x807
/usr/bin/Xvnc :1 -desktop jackxiang:1 (root) -auth /root/.Xauthority -geometry 1504x807 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn
在服务器端启动VNC服务时按如下命令启动:vncserver -geometry 1152x864 -depth 24 即可以1152x864的分辨率和24位的颜色深度来显示。
-geometry x指定显示桌面的分辨率,默认为1024x768,比1152x864更大一点的:1152x864 1440x900 1600x1200 。
http://blog.sina.com.cn/s/blog_45a43d6d01017smq.html
(5)
# netstat -nulpt | grep vnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 29167/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 29167/Xvnc
tcp 0 0 :::6001 :::* LISTEN 29167/Xvnc
表示vnc可以使用了
以上来自:http://www.server110.com/kvm/201310/2721.html
Linux(CentOS下)安装VMware Server 2.0:
http://www.cuwww.com/help/detail-11.html
[版本控制]Linux下的svn命令行和Windows下中解决冲突有关问题步骤,命令行删除svn里版本中的文件等操作备案。
Unix/LinuxC技术 jackxiang 2014-6-10 18:54
背景:经常用Windows的小乌龟提交东西习惯了后,发现Linux下修改一个文件后,再sz下来,再用那个小乌龟太麻烦,直接svn ci得了,但发出冲突,如何解决冲突是一个关键,于是此篇博文产生了,来自网上。
[版本控制]Linux下的svn命令行和Windows下中解决冲突有关问题步骤。
一、Linux下:svn命令行中解决冲突问题
如果不小心提交了一些动态改变根本不需要的文件到svn服务器上,出现冲突如何解决,基本思路是首先使用svn resolved filename 放弃对文件的修改,然后就可以提交上去了。然后svn rm test.log删除掉这个文件。然后再次提交,如果其他人更新的也同样处理。
1.svn ci -m "update"
svn: Commit failed (details follow):
svn: Aborting commit: 'test.log' remains in conflict
2.使用svn resolved test.log
3.svn ci -m "update"
这个时候应该可以提交了
4.svn rm test.log
删除掉这个文件
5.svn ci -m "update"
再次提交
这个时候服务器上就没有这个文件了。
在其他的服务器终端上如果遇到这个问题的时候重复这个操作。
http://www.myexception.cn/cvs-svn/486458.html
二、Windows下:svn更新报错 remains in tree-conflict
今天做项目,svn报错
xx remains in tree-conflict
更新可以,commit 不行.网上找到解决方法
右击冲突的文件或文件夹(一般上面有个感叹号)选择Edit TreeConflicts
有2个按钮(全英文的)
keep the directory from the reostitroy和Mark the conflict as resovled(我是点选这个就好了).
希望对大家有帮助,谢谢.
http://jfbcb.com/article/detail/54
[版本控制]Linux下的svn命令行和Windows下中解决冲突有关问题步骤。
一、Linux下:svn命令行中解决冲突问题
如果不小心提交了一些动态改变根本不需要的文件到svn服务器上,出现冲突如何解决,基本思路是首先使用svn resolved filename 放弃对文件的修改,然后就可以提交上去了。然后svn rm test.log删除掉这个文件。然后再次提交,如果其他人更新的也同样处理。
1.svn ci -m "update"
svn: Commit failed (details follow):
svn: Aborting commit: 'test.log' remains in conflict
2.使用svn resolved test.log
3.svn ci -m "update"
这个时候应该可以提交了
4.svn rm test.log
删除掉这个文件
5.svn ci -m "update"
再次提交
这个时候服务器上就没有这个文件了。
在其他的服务器终端上如果遇到这个问题的时候重复这个操作。
http://www.myexception.cn/cvs-svn/486458.html
二、Windows下:svn更新报错 remains in tree-conflict
今天做项目,svn报错
xx remains in tree-conflict
更新可以,commit 不行.网上找到解决方法
右击冲突的文件或文件夹(一般上面有个感叹号)选择Edit TreeConflicts
有2个按钮(全英文的)
keep the directory from the reostitroy和Mark the conflict as resovled(我是点选这个就好了).
希望对大家有帮助,谢谢.
http://jfbcb.com/article/detail/54