分类归档 Windows平台

通过清心醉

网站进阶-什么叫并发-什么叫访问量

首先一张图,来看看常规的WEB请求:

bingfa

 

以上规则,为每一个用户的请求,包括建立HTTP协议连接;

何为并发?并发其实就是短暂时间内进行访问,比如1-3秒内同时2000个用户执行以上操作,就是2000个实际并发;
何为访问量?访问量为非同一短暂时间内进行服务器的访问,比如有100个用户是17:00访问,又有100个用户是17:01分访问,实际2分钟内就有200个访问量,但实际并发量只有100;
注:高并发如果为真实用户访问即会消耗系统、带宽等资源;如果非法访问,就是所谓的DDOS攻击,即1秒内发起10000+的伪用户进行网站访问,消耗服务器所有资源,导致其他用户打不开,包括服务器宏机!

 

附:

针对高并发,吞吐量来说,大家都知道使用NGINX,因为占用内存资源少,如果是APACHE,会浪费过多的内存资源,基于带宽来说,消费的基本都是同等的!

通过清心醉

Apache配置站点泛解析

作品前几篇文章写了:

Nginx配置域名泛解析

针对作者开发的盼盈网,由于是B2B的模式,需要对泛域名的解析

而且作者刚重构了WEB架构。APACHE的泛解析作者在进行共享:

首先我们要知道,Nginx把动态数据反向请求给apache

 

<VirtualHost 127.0.0.1:88>
DocumentRoot /var/www/ipanying
ServerName ipanying.com
ServerAlias *.ipanying.com
</VirtualHost>
<Directory “/var/www/ipanying”>
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Require all granted
</Directory>

如此一来,apache就可以无限解析ipanying.com的二级域名了。

通过清心醉

PHP开启INTL扩展之WINDOWS版

为了测试新的magento开源系统,所以在当前的WIN系统内安装了个WAMP快速部署环境.
安装完成之后,发现新的magento电子商城程序需要INTI的扩展支持
好吧,WINDOWS下的扩展开启比较简单,果断php.ini里打开extension=php_intl.dll
重启APACHE,发现还是存在对应的问题,提示扩展未开启
经过GOOGLE一翻,发现问题不在该扩展上,而是扩展以来的其他扩展文件的关系.
PHP的根目录有很多icu***50.dll文件 (50表示的是当前的PHP的版本,**为所有的文件名)
把文件复制到apache/bin/目录内,重启搞定!

更多直接打印phpinfo查看!

注: 新版MAGENTO为MAGNETO VER 2.0,如果需要进行二次开发建议使用UNIX,否则几万个文件,你的ZEND刷新项目就卡你一个多小时!

通过清心醉

PHP使用PDO连接ACCESS

上文说了使用php_com_dotnet.dll扩展来操作ACCESS数据库,但PHP默认已经不使用该方法了,而是基本统一使用了PDO的连接模式.

上一段代码,用于显示所有的admin_users管理员信息:

<?php

$db = new PDO(“odbc:driver={microsoft access driver (*.mdb)};dbq=”.realpath(“data.mdb”))or die(“连接出错”);  //连接参数
$data = $db->query(‘select * from admin_users’);
print_r($data->fetchAll());

?>

如果出现:Uncaught exception ‘PDOException’ with message ‘could not find driver’ in

那是因为PDO模式虽然是PHP推荐使用的,而PDO可以操作10多种数据库,官网没有全部打开

修改PHP.ini

;extension=php_pdo_odbc.dll

修改为:
extension=php_pdo_odbc.dll

小提示:在这里有很多php_pdo_xxx.dll扩展,其实就是PDO对那些数据库的支持

通过清心醉

Fatal error: Class ‘COM’ not found

今天在Windows平台用PHP调用ACCESS数据库,结果出现了Fatal error: Class ‘COM’ not found错误,很明显就是COM的类不存在的关系

可以查看下php/etx目录中是否存在php_com_dotnet.dll文件

如果存在的话,在php.ini里加入
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll

然后重启PHP即可.

问题的原因是:在PHP5.4之前默认是已经存在的,在5.4之后的版本已经脱离.也许因为PDO的连接已经存在,所以使用PDO的模式了.

通过清心醉

Linux+Windows搭配WEB本地域名服务器

前言:我们都知道,如果要写代码开发,肯定是在WINDOWS下比较好,当然,就LINUX下来说,ZEND STUDIO也是很完善了的.

由于基本上使用的都是XAMPP快速部署环境,这样,在WINDOWS系统下,就会非常的缓慢,所以写出本教程

系统:Windows 8.1(分配IP192.168.1.234) + 虚拟机CentOS 6.5(分陪IP192.168.1.240)

域名:www.qingxinzui.com

Windows 8.1安装VM11,附载CentOs6.5系统,WEB服务器为:Apache+Nginx+Php+Mysql(在这作者假设你已经会搭配WEB环境)

上个星期作者有个文章说过,利用hosts文件来进行请求的转发.

在Windows 8系统里,我们首先利用hosts文件里添加以下跳转参数:

192.168.1.240  qingxinzui.com

192.168.1.240 www.qingxinzui.com

这时候只要访问作者本地的网站,就会跳转到IP为240的节点

好了,这时候如果CentOS系统里有站点信息并启用了服务的话,就可以实现了.

但因为作者的要求是要包含有域名的信息,而且作者使用了NGINX的域名绑定.所以我们需要修改下CentOS的hosts文件,参数和W8系统下的类似,只不过请求的IP为127.0.0.1

大概流程是:

W8系统请求访问网站,W8的hosts文件中存在跳转参数,实现以域名的方式跳转到指定的IP服务器,指定的IP服务器(CentOS系统)里的NGINX接收了域名访问的请求,再通过本身的hosts文件进行跳转到127.0.0.1

至此,双系统域名式访问站点部属完成.

 

通过清心醉

网站建设之利用hosts文件使127.0.0.1跳转网站

作者现在开发magento,由于需要使用的域名的测试,但又不能直接在VPS上调试,这时候想到了本地修改hosts文件的方法。

通过访问127.0.0.1跳转到本地域名上:

Windows hosts文件地址:C:\Windows\System32\drivers\etc

Linux Windows文件地址:/etc/hosts

修改的参数也很简单:

127.0.0.1   www.shopping.qingxinzui.com

为什么要这么修改? 原因是:hosts是本地域名解析文件,在浏览器输入一个网址,操作系统会检查hosts文件里是否存在域名对映的ip,存在则请求跳转到该ip,如果不存在则向DNS寻求解析IP。

通过清心醉

最新版的mysql-utf8配置参数

该方法适用与Windows及Linux平台

[client]
default-character-set=utf8
[mysqld]
init_connect=’SET NAMES utf8′
character_set_server=utf8
character_set_client=utf8
[mysql]
default-character-set=utf8

在此建议还在使用GBK的赶紧换了吧,全世界已经开始走UTF-8的世界了!

通过清心醉

HTTP无法启用之443占用

虽然安装了Windows和Linux下APACHE+PHP+MYSQL服务,但为了更好的进行测试,选择在WINOWS下安装个虚拟机来进行LINUX平台架设.

当VM内安装好了CENTO后,本机起用HTTP时却错误,原来是443端口被占用.

因为安装VM的时候有个HTTPS端口 这时候我们修改下APACHE的HTTPS端或者安装VM的时候修改下HTTPS端即可!

通过清心醉

xampp老版本SQL乱码问题

以前用XAMPP1.8开始的版本做MAGENTO的测试环境,MYSQL乱码的话,只需要在my.ini文件里修改下配置就是了

如:

mysql ::default-character-set=utf8
mysqld ::character-set-server=utf8
client ::default-character-set=utf8

当然针对Linux版的 ,也可以修改my.cnf文件。

公司使用的商城,使用的是PHP5.3以前的版本,XAMPP支持5.3以内最后一个版本就是1.7.1了,因为懒,懒的不想自己来配置,使用1.8版本的方式修改MYSQL的配置,一样还是乱码,这时候怀疑是导入数据的时候编码的问题。

我们在连接数据表导入的时候,加多一句

如:mysql -u root -p qingxinzui;

改为:mysql -u root -p qingxinzui –default-character-set=utf8;

强制修改为UTF8的格式,就可以很好的导入数据了。

通过清心醉

错误 SET CHARACTER SET ‘utf8’;

修改了mysql的字符集为utf8之后,提示错误 SET CHARACTER SET ‘utf8’;

Aborted connection 1 to db: ‘unconnected’ user: ‘pma’ host: ‘localhost’ (init_connect command failed)

开始以为不能使用utf8字集了,后来查看了下my.ini配置文件

发现有这么一句:

错误init-connect=\’SET NAMES utf8\’

把这句注释掉就可以了。

通过清心醉

隐藏服务器apache-php-mysql版本信息

出于安全考虑,关闭掉服务器的WEB环境版本信息,起码黑客就少了个情报,对入侵起码可以有点小防御作用,如何开启呢?

两个关键:ServerSignature和ServerTokens
ServerSignature 修改为Off
ServerTokens 修改为Prod
作者针对两个版本进行修改说明:
一:yum安装搭配环境
[root@qingxinzui ~]# vi /etc/httpd/conf/httpd.conf

二:XAMPP快速部署环境
[root@qingxinzui ~]# vi /etc/opt/lampp/etc/extra/httpd-defatul.conf

作者在yum安装环境,直接修改httpd.conf就可以了。
xampp环境下 仍然会显示
Error 403
Apache
不过基本足够了。

至于PHP

[root@qingxinzui ~]# vi /etc/php.ini

expose_php = Off #修改

xampp版:

[root@qingxinzui ~]# vi /opt/lampp/ext/php.ini

还有一个顺便说下,就是如果没有index的开头文件,以目录形式显示,这是很不安全的。人家随便就把你源代码给搞下去了。
修改httpd.conf配置文件。(如果您的apache下有多个web站点,最好全部修改下)
以下是针对yum环境,xampp环境是在<Directory “/opt/lampp/htdocs”>
<Directory “/var/www/html”>
#Options Indexes FollowSymLinks

#修改成这样
Options FollowSymLinks

<Directory ” “>内的其实对目录的控制,当然有些要对cgi-bin进行控制的。
作者只是把站点的目录权限修改。这样,如果站点内没有index.的文件,就会跳出403错误页面而不会把目录暴露出来,大大的加强了服务器信息泄露的可能。

通过清心醉

windows for xampp 多端口

windows for xampp 多端口
前面有说过xampp启动错误,也提到过目录内要有htdocs文件夹
可以在Xampp启动错误 参考
但只有一个htdocs的phpmyadmin是不能够满足很多测试环境的,总不能把网站数据也放在htdocs目录

下吧,当然这也是一种办法,还有一种办法,就是实现端口化控制
首先修改httpd.conf文件
在Listen 80
下面加入一句:Listen 81
这就表示多了一个81端口的访问。
然后设置81端口的目录及权限:
在httpd.conf文件最后面加入:
<VirtualHost 127.0.0.1:81>
DocumentRoot E:\xampp\webservice
ServerName 127.0.0.1:81
</VirtualHost>
<Directory “E:\xampp\webservice”>
Options FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>

上面的E:\xampp\webservice为作者测试环境的WEB目录,这样就可以保留htdocs,以便使用

phpmyadmin.
我们来看下效果。

htdocs_webservice

如果需要增加更多,重复上面的步骤。

通过清心醉

再写Windows7+Linux Centos 双系统

作者12年曾在红盟写过Windows7+Linux Fedora 17双系统的文章.

今时今日因为服务器环境的学习需要,又得重整Windos7+Centos.

Windows 7+Linux Fedora 17双系统,Fedora 17引导Windows 7全过程

由于大家使用的硬盘数量可能太多会导致混乱.

麻烦是麻烦点,一个个试吧

(hd0,0)-(hd0,3)为主分区也就是C盘

D盘开始是(hd0,4),依此类推

如果中间有删除盘或者修改盘,就在最后面+1来计算.

网上有说放CentOS镜箱可以不用FAT32分区,具体的作者没去测试.

正文开始:

比如作者把镜像放在E盘(hd0,5)

然后把镜像里isolinux文件夹里的vmlinuz和initrd.img这两个文件提取出来放在根目录,同时把images文件夹也提取到根目录.

然后使用EasyBCD工具(该工具只能Windows7+可以运行)

shuangxitong1

shuangxitong2

照上面的教程来添加新条目,操作系统选择NeoGrub,然后点下面的安装.安装好后点右边的配置,添加以下信息:(这和2年前的文档有所不同)

title initall CentOS6.5

kernel (hd0,5)/vmlinuz

initrd (hd0,5)/initrd.img

至于分区,教程已经有写,作者就不再写.

还有一个是W7和CentOS引导的问题.

安装好CentOS后

终端执行: #vi /boot/grub/grub.conf

title Other

rootnoverify(hd0,0)

chainloader +1

看到没有,其实默认已经增加了双系统的引导了.只是开机在linux Centos启动的等待3秒内,按上下键盘就可以弹出这个菜单.

至于这个title Other可以修改为title Windows7 来方便引导.

 

通过清心醉

Windows添加mysql和php到环境变量

上文说了Windows编译magento,但由于php受环境变量的限制,因此让php变成系统环境变量,可以更方便以后的执行php和mysql指令。

打开计算机–系统–属性–高级–环境变量 (如下图)

huanjingbianliang1

然后系统变量中的“path”,在path值开头处输入:

E:\xampp\mysql\bin;

#这可以修改成你的mysql\bin目录

保存退出

这时,在cmd命令直接执行mysql

huanjingbianliang3

搞定

接下来是php

同样,系统变量中的“path”,在path值开头处输入:

E:\xampp\php;

#一样修改你的php目录,以上的别忘记后面加个;号

一样在cmd里执行看看

PHP环境变量

 

 

通过清心醉

Windows下命令编译magento

如果是在Linux平台,因为大部分使用yum安装,所以PHP都添加到了环境变量里。

所以直接执行php命令就可以。

但如果Liunx使用的是快速部署的XAMPP或者其他LAMP,和Windows下是没什么差别的。

以下方法,可以用于执行magento在Windows平台的编译,及在Windows执行自动任务的php文件。

#添加环境变量的方法网上有很多,作者后续来写点多种安装方式的方法

假设:

PHP路径:E:\php\php.exe

Magento路径:E:\htdocs

开始–运行–cmd

切换到E:\php目录 (切换到您的PHP目录)

#C盘切换到E盘可以直接在CMD里输入 E:

#然后CD进入php目录

然后CMD里执行:php.exe -f E:\htodcs\shell\compiler.php compile

#上面的命令是执行php程序参数文件在htdocs\shell\compiler.php

#注:htdocs就是magento的主目录

由于Windows下的编译速度会比较慢,因此等待吧,如果编译量在8000以上,起码5-10分钟。

通过清心醉

命令导出MYSQL数据库

以WINDOWS为例:

通过CMD进入mysql/bin目录

执行:

mysqldump -u root -p cin_sql > cin_sql_bak.sql

#输入MYSQL密码

接着在MYSQL/BIN目录下会有cin_sql_bak.sql的文件。

接着是LINUX的操作方法其实和WINDOWS一样

因为大部分的都是使用yum 安装apache+mysql+php

所以直接执行mysql指令即可

yum安装的话,好像会增加在系统变量,可以识别mysql

作者尝试使用LANP快速搭配的环境,就无法使用了.

然后执行相同的命令即可。

用命令导出的好处和命令导入比PYPMYADMIN好的就是,因为PHPMYADMIN是后台,导入导出大的数据的时候,可以出现延时等情况,导出的数据出现错误的可能性教高。

通过清心醉

导出MYSQL数据库(通过PHPMYADMIN)

一般网站管理员为了方便对数据库进行管理,都会安装pypMyadmin

进入phpmyadmin后台,选择数据裤,点导出

导出MYSQL_1

 

 

然后点执行(一般不用对数据库进行特别修改的话,直接执行是最好的。)

导出MYSQL_2

 

接着就会自动下载cin_sql.sql数据文件。

 

使用phpmyadmin的好处是无需通过SSH连接LINUX服务器或者3389连接WINDOWS系统。直接通过另类后台对数据库进行操作过程。

 

通过清心醉

xampp,wamp及自搭配环境导入大型SQL数据

最近因网站的数据量变大,又想对站点上的插件等进行修改。

由于作者还玩游戏,所以使用XP的系统,因此导入大型SQL的数据就有问题了。

结合上一节文章,使用命令来导入吧。

以XAMPP为例:

首先,启动XAMPP。(其实只要启动MYSQL就可以了)

XAMPP1

然后创建个数据库

XAMPP2

 

命令其实和LINUX差不多了

具体看图:

XAMPP导入MYSQL

运行CMD命令:cmd

进入XAMPP的盘符(如E盘)

E:

进入mysql/bin目录

cd /xampp/mysql/bin

执行MYSQL语句:

mysql -u root -p cin_sql

#这时候输入MYSQL密码

接着输入导入的数据文件目录

source E:/xampp/cin_sql.sql

然后就等着恢复吧。

(相同的数据,LINUX下2分钟内完毕,WINDOWS系统4分钟了还没执行完毕。)

部分系统自带的备份,会因为字符等问题等,导致sql.zip格式出现错误,因此使用命令导入.sql是比较好的办法。

注意下恢复的时候会不会出现ERROR:的错误警告。

导入MYSQL

通过清心醉

外贸网站屏蔽百度爬虫

做外贸的,很忌讳国内的同行可以查看到自己站点的信息。

同时更不喜欢百度爬重带走索引,增加不必要的流量。

特别是国内同行的恶意竞争。

网上有很多屏蔽百度爬虫的,但要爬虫不遵守robots协议的话,照抓你站点。

使用robots文件的屏蔽方法站长工具就可以查看,但要实现完全屏蔽,可以使用以下方法:

在.htaccess文件中加入可以完全屏蔽

屏蔽内容一:

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [NC]

RewriteRule .* – [F]

屏蔽内容二:

SetEnvIfNoCase User-Agent “^Baiduspider” bad_bot

<Limit GET POST>

Order Allow,Deny

Allow from all

Deny from env=bad_bot

</Limit>