ubuntu搭建LEMP环境,解决 fpm监听失败

1.安装mysql

  1. sudo apt-get install mysql-server mysql-client

安装过程中要输入root用户的密码。

2.安装nginx

  1. sudo apt-get install nginx

2.安装php

   1.  sudo apt-get install php5-fpm php5-cgi php5-mysql php5-fpm php5-curl php5-gd  php-pear php5-imagick php5-imap  php5-memcache   php5-sqlite php5-tidy php5-mongo

这是常用的扩展

一路安装下来后配置nginx

cd  /etc/nginx/ #配置文件默认在此

通过nginx.conf可以看到引入了 sites-available/文件夹下文件,

vi sites-available/default

可以看到这是本地默认的localhost配置,这就是为什么你在nginx.conf里再加入一个localhost的server  nginx会有waring的原因了,因为它已经定义了。

修改default文件为:

server {
listen 80;
listen [::]:80 default_server ipv6only=on;

root /data/www/;

server_name localhost;

location / {
index index.php index.html index.htm;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /data/www/$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}

}

然后重启nginx和php-fpm

service nginx restart

service php5-fpm restart

在网站根目录编写:

info.php:

<?php

    phpinfo() ;

?>

访问,不成功,查看nginx错误日志,默认是放在/var/log/nginx下

cd /var/log/nginx

tail -fn100  error.log

发现:[error] 15980#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: “GET /info.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “127.0.0.1”

可知是php-fpm的问题

netstat -lnp|grep 9000 (查看9000端口是否被监听)

无内容

解决方法

1 . 按照/etc/php5/fpm/pool.d/www.conf的默认配置使用php5-fpm

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;

2 . 修改/etc/php5/fpm/pool.d/www.conf里的修改为listen=9000

# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;

重启php-fpm

ubuntu启用apache的mod_headers和mod_expires

ubuntu部署好wordpress后,发现插件wp_super_cache里面有几个警告,请启用mod_expires和mod_headers.

可以按照以下命令,启用apache的缓存

Ubuntu系统启用Apache Mod_rewrite模块

在终端中执行

sudo a2enmod rewrite

指令后,即启用了 Mod_rewrite 模块。

另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块。用指令操作就是:

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

一点小提示

事实上,当我在 Ubuntu 中采用上述做法并重启了 Apache 服务后,仍然无法正常 rewrite 网址。这里,还有一点需要注意的地方:

sudo vim /etc/apache2/sites-enabled/000-default

将其中的:

AllowOverride None

修改为:

AllowOverride All

上面的 /etc/apache2/sites-enabled/000-default 实则为 /etc/apache2/sites-available/default 的连接。而 AllowwOverride None 则会完全忽略 .htaccess 文件,自然其中所定义的 rewrite 规则也就不能生效了。

最后,别忘了使用下列指令来重启 Apache:

sudo /etc/init.d/apache2 restart.

解决新装IIS7出现503错误的问题

 

win7用了好多年,第一次遇到这个问题。在windows 7 里控制面板-程序-打开关闭windows组件安装IIS7后,发现页面访问后503错误。

我到IIS里应用程序池里一看,原来是进程终止了,于是启用它,刷新检查运行成功。然后再次访问web地址,又是503错误应用程序池任务终止。

我在想可能是安装iis7的时候,先忘了选择开发功能(也就是asp.net支持),后来才加上去的缘故。于是效仿2003运行regiis依然无效。

解决方法,修改应用程序池的高级设置,然后选标识,选择用户为LocalSystem,如下图:

QQ截图20140426085306

ubuntu+apache2环境wordpress固定链接404的问题

我的系统是ubuntu,自己配置的Apache、PHP、Mysql系统架构,或使用的某些安装包,可能会有这个问题,本人曾经遇到过,解决方法如下:

1.  首先.htaccess文件要给权限666

2. AllowOverride Not Enabled

网上教程是修改/etc/httpd.conf 我的貌似叫/etc/apache2.conf 这个里面是修改全局的 其实这个不用改

可以在你网站自己的配置里的<VirtualHost *:80>中加入:

然后执行service apache2 restart

测试完全正常

Asp.net中解决“请求超时”的问题

在数据库或者请求操作时,如果选择的时间段过短或操作数据量过大,就会遇到”请求超时”的的问题,网络上提供很多解决方案,但普遍不完善,根据个人经验及参考网络解决方案,先将其汇总
在数据库或者请求操作时,如果选择的时间段过短或操作数据量过大,就会遇到”请求超时”的的问题,网络上提供很多解决方案,但普遍不完善,根据个人经验及参考网络解决方案,先将其汇总如下:根据错误类型,大致分为如下几种情况
1:Asp.net请求超时
2:IIS请求超时
3:数据库连接超时
4: 数据库操作超时
5:应用程序池回收(低)
6:Webservice等服务请求超时

下面根据上述情况一一作出处理
1:Asp.net请求超时
http请求超时可以在webconfig中进行全局配置,(单位为秒,默认为90秒)如下
<system.web>
<httpRuntime maxRequestLength=”102400″ executionTimeout=”180″ />
<system.web>

2:IIS请求超时
直接去IIS进行设置:IIS-网站-属性   设置一个较大的值,但是不能太大,具体情况具体分析。

3:数据库连接超时
在配置数据库连接字符串的时候一起配置
<connectionStrings>
<add name=”MarketingMate” connectionString=”Data Source=192.168.1.1; Database=MarketingMate; User Id=sa; Password=123; Connect Timeout=30;Min Pool Size=16;Max Pool Size=100;”
providerName=”System.Data.SqlClient”/>
connectionStrings>

4. 数据库操作超时
数据库操作超时目前还没有全局设置方法,只能设置Command类的CommandTimeOut属性(单位为秒,默认为30秒)
context.CommandTimeout = 180;

5:应用程序池回收(底)这种出现的情况很低,请酌情设置
应用程序池会在一定的时间内回收线程,直接设置即可:应用程序池–属性–回收工作进程

6:Webservice等服务请求超时 (这种是参考网上提供的解决方法,本人没遇到过)
扩大代理类的超时限制,默认是90秒  ,即在调用方法前指定超时时间。
[csharp]YourWebService yws = new YourWebService(); yws.Timeout = 1200000; //20分钟,单位是毫秒[/csharp]
如果将 Timeout 属性设置为 Timeout.Infinite,则指示该请求无超时。即使 XML Web services 客户端可以将 Timeout 属性设置为无超时,Web 服务器仍可以在服务器端使请求超时。

vs2012使用64位IIS EXPRESS调试

使用Visual Studio 2012开发网站或web应用程序时,可以使用两种web server。自带的development server和IIS EXPRESS。development server是x86版本的,IIS EXPRESS是同时x86和x64版。

然而在引用64位dll时,调试时会报错,因为即便使用IIS EXPRESS调试,vs2012默认只会调用其32位版本。可以通过任务管理器中的进程来查看你调试时启用的是什么版本的IIS EXPRESS。

之后的Visual Studio也许会集成IIS EXPRESS x64的调试调用,但是2012我们必须通过修改注册表来使vs调用x64版IIS EXPRESS,修改方法如下。

reg add HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio12.0WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1

注册表修改完成后需要重启vs2012使其生效。

64位系统 VS2010 各种问题 及 提示“ORA-06413: 连接未打开”

今天在把asp.net系统改为oracle数据连接时,确实出了N多问题,到最后也一一解决了,

连接符:Data Source=SHServer;User ID=lcdtjk;Password=lcdtjk;Provider=MSDAORA

 

ORA-06413: 连接未打开

连接数据库的程序所在的路径是不允许有怪字符的。

2010在windows 2008 64位版本下安装时,默认有个program files ( x86 ) ,就是这个“()”引起的;

修改2010的安装目录,则在form程序中新建数据源,测试通过了;

但是新建web程序,手写连接数据库,运行,仍然提示“ORA-06413: 连接未打开”;

原来在项目中运行web程序,默认是使用vs内置web服务器(develop server),而这个内置服务器的程序被安装在了c:/program files(x86)/common files/ 下面,这里也用到了”(“,因此造成了错误。

但是目前也没有找到在安装时能够修改这个内置server的安装路径的地方。

所以这里只用了一个方法绕开内置server。那就是使用本机IIS来调试程序。在解决方案中,选中web项目点右键选属性,在web标签下可以把调试服务器该为本机iis。这是再调试web程序,连接数据库成功了。

 

把程序放在windows 2008 R2 64bit的服务器上,处理Excel时出现上面的错误。

解决方法,是到服务器的打开IIS管理器。go to Application Pool,找到对应站点的池。右击Advanced setting… 参考下图,把Enable 32-Bit Application 设为由False 为True。

aspx最小化html 压缩html 去空字符

对网站的代码、资源的压缩,可以提高网站打开速度,减少请求次数,节省流量,提高用户体验等,好处肯定多了 最重要的是不用花一分钱。

我一直觉得一个优秀的站长,一定不能是开发者。我个人就是身有所处,开发者总希望把自己的程序优化到极致,无止尽的折腾,不断的最求完美。虽然说是细节可以决定成败,其实更多时候任何优化都不是关键,时机才是最重要的。说了这么多,又跑题了。。。

压缩包括web服务器的压缩,比如iis6,7就有动态压缩 静态压缩gzip,其实那些都是web服务器和解析的浏览器之间的压缩方式,如果你是个coder,当然还可以进一步的压缩。

之前应该介绍过使用AjaxMin,YUICompressor.NET等工具压缩css和js等文件(不记得是否真写过了)。至于html的压缩,在C#方向的资源比较少见,大家可以看ikanman.com,右键查看源代码,里面的html代码是没有任何空字符比如换行、空格和注释文字的,其实源码里面当然有 不然怎么看得懂呢。

原来我是用的是用正则的方式来去除空字符,代码如下:

如果希望压缩aspx自动输出的html代码,可以覆盖Render方法来实现,代码如下:

注意#if !DEBUG的功能是在web.config里的debug=false的时候才去空格,这样可以在开发环境看到正常的代码。

但是处理的页面多了以后发现正则不那么好处理,因为html中代码注释的情况很多有的如下

这些格式的代码也会被错误的过滤掉。于是发现了google code上有一个叫htmlcompressor开源项目,非常好用项目地址:https://code.google.com/p/htmlcompressor/,遗憾的是没有c#版本,只支持php和java,只好自己改了一个。用法如下:

是不是很方便呀,还有很多高级选项可以设定呢。详细用法请在官网查看吧!

谈谈C#验证码识别的方法集合

前段一直没有时间维护博客,还是因为太懒了只当它是一个wordpress的文具,其实工作生活记录一下没有什么不好。

个人项目中需要验证码识别,所以研究了一阵子,图像识别是c#的弱项。到互联网飞速发展的今天,验证码识别已经没当初那么简单了。

使用c#有以下几种识别方式:

tesseract-ocr

这是一个开源项目,项目地址:https://code.google.com/p/tesseract-ocr/。现在已经被google接手。当前最新的是3.02版,支持多个平台。需要注意的是安装了之后还需要下载与版本对应的语言包放到安装目录,默认设置下的识别能力一般,但是可以通过学习训练来得到最优的配置,具体设置方法请参阅wiki

windows平台下面可以通过cmd调用

执行识别图像的命令格式为:
tesseract .exe [-l lang]
Imagename: 需要识别的图片文件名
outputname: 输出结果txt文件名,用来存放识别出来的文字结果
lang: 使用的文字字库,根据要识别的文字类型来选择。
例如:输入命令:tesseract.exe 6.jpg 6 –l chi_sim

遗憾的是web用户调用cmd需要特殊权限,对于安全性是不好的

2 Asprise OCR

最新的是Asprise OCR v4.0 for C# [C Sharp] .NET,官网在http://asprise.com/product/ocr/index.php?lang=csharp。这不是一个开源项目,好在伟大的天朝到处都是破解版可以下载。没有繁琐的学习和训练,dll是由c++编译的,c#调用方便。如果是web项目甚至可以不用把dll放在项目里面。数字和字母的识别率挺高的。

调用方式:

需要注意的是代码里虽然只调用了一个AspriseOCR.dll,但是同一目录下还需要放另外2dll个哦。我在win7+vs2012+iisexpress环境测试成功,server上失败,也许是dll版本和系统不匹配

3 Tessnet2

Tessnet2 a .NET 2.0 Open Source OCR assembly using Tesseract engine 项目地址:http://www.pixel-technology.com/freeware/tessnet2/ 。其实就是前面说的tesseract-ocr 旧版本2.0的。net版。可以直接集成到framework2.0的web项目,同样需要下载语言包,语言包也在tesseract-ocr地址里下载,但是版本号一定要对应,也就是说只能使用tesseract-ocr 2的语言包。

4 自己写代码处理验证码图像,这个不详细讲了,通用性不高。也可以把图片简单处理后采用前面的方式来识别,提高成功率。


 

总结:不管使用什么识别工具,都存在一个识别率的问题,一句话没有百分之百的识别。还是要具体情况具体分析:

如果你想做一个qq空间游戏外挂,个人建议还是把验证码request下来给用户输吧,我相信没有人会为了少输一个验证码而容忍连续失败10次的登录(这个可是经常会有);

如果你想做的是自动化暴力的http post,比如自动注册机,不在乎失败反正挂在那循环。。。你应该采用验证码识别技术。

分享经验只为节省大家的时间:)