编译安装Php5.5.19(腾讯云论坛版)

1)下载Php5.5.19
http://php.net/releases/

2)源码安装的步骤
1、解压软件源码包,并进入解压后的目录
2、./configure  预编译,也叫配置操作,源码安装的第一步,主要的作用是对即将安装的软件进行配置,比如安装路径、开启或关闭哪些功能
3、make  编译操作,生成makefile文件,正式安装时以此为依据进行安装
4、make install  正式安装


3)正式安装php
# groupadd www
# useradd -g www -s /sbin/nologin -M www
# yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel –y      
# tar zxvf php-5.5.19.tar.gz
# cd php-5.5.19
# ./configure –prefix=/usr/local/php –enable-inline-optimization –disable-debug –disable-rpath –enable-shared –enable-opcache –enable-fpm –with-apxs2=/usr/local/apache/bin/apxs –with-mysql=/usr/local/mysql –with-fpm-user=www –with-fpm-group=www –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-gettext –enable-mbstring –with-iconv –with-mcrypt –with-mhash –with-openssl –enable-bcmath –enable-soap –with-libxml-dir –enable-pcntl –enable-shmop –enable-sysvmsg –enable-sysvsem –enable-sysvshm –enable-sockets –with-curl –with-zlib –enable-zip –with-bz2 –with-readline
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
————预编译成功
# make
invertedregexiterator.inc
directorygraphiterator.inc
phar.inc
Build complete.
Don’t forget to run ‘make test’

————make无报错,成功。
# make install
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/root/php-5.5.19/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar
Installing PDO headers:          /usr/local/php/include/php/ext/pdo/

————make installl无报错,安装成功。
# cp php.ini-development /usr/local/php/lib/php.ini
————默认的php.ini没有自动生成,需要手动设置
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
————以服务形式管理脚本。
# chmod +x /etc/init.d/php-fpm
# service php-fpm start
# /usr/local/php/bin/php -v
PHP 5.5.19 (cli) (built: Nov 30 2014 20:19:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

————查看php版本
# php -v
-bash: php: command not found
# export PATH=$PATH:/usr/local/php/bin
# php -v
PHP 5.5.19 (cli) (built: Nov 30 2014 20:19:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

PHP搭建成功~

10.1.0.8服务器,安装php5.5.12过程(最终完成,但中间有先前的错误步骤)

1026  scp root@10.1.0.6:/home/bruce/tools/php-5.5.12.tar.gz /home/bruce/tools/
1027  ls
1028  tar zxvf php-5.5.12.tar.gz
1029  cd php-5.5.12
1030  ls
1031  cd /usr/local/
1032  ls
1033  cd –
1034  ls
1035  ./configure –prefix=/usr/local/php –enable-inline-optimization –disable-debug –disable-rpath –enable-shared –enable-opcache –enable-fpm –with-apxs2=/usr/local/httpd/bin/apxs
–with-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-gd –enable-gd-native-ttf –with-fpm-user=www –with-fpm-group=www –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-gettext –enable-mbstring –with-iconv –with-mcrypt –with-mhash –with-openssl –enable-bcmath –enable-soap –with-libxml-dir –enable-pcntl –enable-shmop –enable-sysvmsg –enable-sysvsem –enable-sysvshm –enable-sockets –with-curl –with-zlib –enable-zip –with-bz2 –with-readline –with-jpeg-dir=/usr/lib –with-png-dir=/usr/lib
1036  make
1037  ls
1038  vi Makefile
1039  make
1040  cd /usr/local/lib
1041  ls
1042  cd /etc/
1043  ls
1044  vi ld.so.conf
1045  ldconfig
1046  sudu ldconfig
1047  ldconfig
1048  cd /home/bruce/tools/php-5.5.12
1049  make
1050  make test
1051  make
1052  make clean
1053  make
1054  make install
1055  cd /usr/local/
1056  ls
1057  cd php/
1058  ls
1059  cd bin/
1060  ls
1061  cd ..
1062  ls
1063  cd php/
1064  ls
1065  cd –
1066  cd /home/bruce/tools/
1067  ls
1068  cd php-5.5.12
1069  ls
1070  cd /usr/local/httpd
1071  ls
1072  cd build/
1073  ls
1074  ll
1075  cd cd /home/bruce/tools/php-5.5.12
1076   cd /home/bruce/tools/php-5.5.12
1077  cdls
1078  ls
1079  cd libs/
1080  ls
1081  libtool –finish
1082  cd /usr/local/
1083  ls
1084  cd php/
1085  ls
1086  vi /etc/httpd2.4.18/httpd.conf
1087  cd /etc/php
1088  cd /etc/
1089  ls
1090  cd /home/bruce/tools/php-5.5.12
1091  ls
1092  cd /usr/local/php/lib/ls
1093  cd /usr/local/php/lib/
1094  ls
1095  cd php/
1096  ls
1097  cd –
1098  cd /home/bruce/tools/php-5.5.12
1099  ls
1100  cp php.ini-production /usr/local/php/lib/php.ini
1101  ls
1102  cd /usr/local/php/
1103  ls
1104  cd etc/
1105  ls
1106  cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
1107  ls
1108  cd –
1109  cd /home/bruce/tools/php-5.5.12
1110  ls
1111  cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
1112  chmod +x /etc/init.d/php-fpm
1113  service php-fpm start
1114  netstat -lnt
1115  top
1116  /usr/local/php/bin/php -v
1117  export PATH=$PATH:/usr/local/php/bin
1118  php -v
1119  service php-fpm stop
1120  cd /usr/local/httpd
1121  ls
1122  cd htdocs/
1123  ls
1124  vi index.php
1125  cd /etc/httpd2.4.18/
1126  vi httpd.conf
1127  cd /usr/local/php/lib/
1128  ls
1129  cd php
1130  ls
1131  cd /etc/httpd2.4.18/
1132  vi httpd.conf
1133  ls
1134  ll
1135  /usr/local/httpd/bin/apachectl -t
1136  /usr/local/httpd/bin/apachectl graceful
1137  scp root@10.1.0.6:/home/bruce/tools/www333.zip /usr/local/httpd/htdocs/

Linux下PHP扩展pdo_mysql和mysqli

问题见:http://www.thinkphp.cn/topic/28755.html

解决方案如下:

1.进入PHP源码包ext/pdo目录

cd ext/pdo

2.执行/usr/local/php/bin/phpize[假设PHP的安装目录为/usr/local/php]

/usr/local/php/bin/phpize

3.配置扩展pdo

./configure –with-php-config=/usr/local/php/bin/php-config –enable-pdo=shared

4.编译安装pdo

make && make install

成功则出现

Installing shared extensions: /usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/

Installing header files: /usr/local/php//include/php/

Installing PDO headers: /usr/local/php//include/php/ext/pdo/

说明在/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/目录下生成了pdo.so文件

6.在php配置文件中加上

extension=”/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/pdo.so”

7.在PHP源码包中进入pdo_mysql

cd ext/pdo_mysql

8.执行/usr/local/php/bin/phpize

9.配置pdo_mysql[假设Mysql的安装目录为/usr/local/mysql]

./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql

10.编译pdo_mysql 安装pdo_mysql

make && make install

成功则出现

Installing shared extensions: /usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/

说明的/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/目录下生成了pdo_mysql.so文件

12.在php配置文件中加上

extension=”/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/pdo_mysql.so”

重启php和(nginx或Apache)即可!

错误解决:

make: *** [pdo_mysql.lo] Error 1

这是因为这是因为在编译时需要 MySQL 的头的文件。而它按默认搜索找不到头文件的位置,所以才出现这个问题。通过软连接把MySQL头文件对应到/usr/local/include/下就好

比如你的MySQL安装文件位于/usr/local/mysql,那么就执行以下命令:

# ln -s /usr/local/mysql/include/* /usr/local/include/

安装php扩展mysqli

1: cd 到mysqli文件目录下,执行 /usr/local/php/bin/phpize
2: ./configure –with-php-config=/usr/local/php/bin/php-config –with-mysqli=/usr/local/mysql/bin/mysql_config
3: make
4: make test
5: make install
6:修改php.ini
加入或者去掉注释 extension = “mysqli.so” (如果extension_dir 不对,此处需要写全路径)
然后重启web服务器

linux 设置ftp帐号并限制访问目录

查看组:cat /etc/group

查看用户:cat  /etc/passwd

查看用户所属组

当前用户 groups

查看指定用户的 groups user_name

 

 

首先安装FTP参照 http://blog.csdn.NET/lihuang319/article/details/50728037

1. //添加用户hdcsc,限定访问目录/data/export

useradd -d /data/export hdcsc

2. //输入两次密码

passwd hdcsc

//限定用户test不能telnet,只能ftp
usermod -s /sbin/nologin hdcsc

3. vi /etc/passwd 文件里能看到刚刚创建的用户名和可访问目录信息

4. 修改vsftp配置文件

编辑vsftpd的配置文件/etc/vsftpd/vsftpd.conf

把这两行的注释去掉
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

如果没有/etc/vsftpd/chroot_list文件请新建,把用户名hdcsc写进去,每个用户名一行保存,可参见同目录下user_list文件格式

5. 更改文件夹权限

chown hdcsc:hdcsc -R /data/export

chmod 755 -R /data/export

注意其他文件夹权限,最好也是755一下的,不能让新ftp账户修改到其他的文件夹

6. 重启ftp服务

service vsftpd restart

问题1. 连接ftp出现 553 Could not create file

执行命令 setsebool allow_ftpd_full_access on

或者检查文件夹是否有可写权限

修改权限:chmod 777 -R 文件夹

 

http://blog.csdn.net/bluishglc/article/details/42399439

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:

allow_writeable_chroot=YES

搭建nginx反向代理用做内网域名转发

情景

由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端 口,其他服务器的80端口只能映射到外网的非80端口。非80端口的映射在访问的时候要域名加上端口,比较麻烦。并且公司入口路由最多只能做20个端口映 射。肯定以后不够用。
然后k兄就提议可以在内网搭建个nginx反 向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务 器,利用nginx反向代理将不同域名的请求转发给内网不同机器的端口,就起到了“根据域名自动转发到相应服务器的特定端口”的效果,而路由器的端口映射 做到的只是“根据不同端口自动转发到相应服务器的特定端口”,真是喜大普奔啊。

涉及的知识:nginx编译安装,nginx反向代理基本配置,路由端口映射知识,还有网络域名等常识。

本次实验目标是做到:在浏览器中输入xxx123.tk能访问到内网机器192.168.10.38的3000端口,输入xxx456.tk能访问到内网机器192.168.10.40的80端口。

配置步骤

服务器ubuntu 12.04

###更新仓库

#下载nginx和相关软件包

pcre是为了编译rewrite模块,zlib是为了支持gzip功能。额,这里nginx版本有点旧,因为我还要做升级nginx的实验用。大家可以装新版本。

#安装编译环境

#创建nginx用户

所谓的unprivileged user

#开始编译安装

#给文件夹授权

#修改配置文件
vim nginx.conf

编辑反向代理服务器配置文件:
vim /usr/local/nginx/conf/reverse-proxy.conf

然后重新加载nginx配置文件,使之修改生效,再把xxx123.tk域名指向公司静态IP,这样就成功的做到了在浏览器中输入 xxx123.tk的时候访问的内网服务器192.168.10.38的3000端口,输入xxx456.tk访问192.168.10.40的80端口 的作用。
如果想对后端机器做负载均衡,像下面这配置就可以把对nagios.xxx123.tk的请求分发给内网的131和132这两台机器做负载均衡了。

额,关于负载均衡和缓存就不多说了,这里只是要起到一个简单的“域名转发”功能。
另外,由于http请求最后都是由反向代理服务器传递给后段的机器,所以后端的机器原来的访问日志记录的访问IP都是反向代理服务器的IP。
要想能记录真实IP,需要修改后端机器的日志格式,这里假设后端也是一台nginx:
在后端配置文件里面加入这一段即可:

再看看原来日志的格式长什么样:

看出区别了吧

 

遇到的问题

 

  • 之前没配置下面这段,访问时候偶尔会出现504 gateway timeout,由于偶尔出现,所以不太好排查

报错日志:

从日志看来是连接超时了,网上一通乱查之后估计可能是后端服务器响应超时了,本着大胆假设,小心求证的原则,既然假设了错误原因就要做实验重现错 误:那就调整代理超时参数,反过来把代理超时阀值设小(比如1ms)看会不会次次出现504。后来发现把proxy_read_timeout 这个参数设置成1ms的时候,每次访问都出现504。于是把这个参数调大,加入上面那段配置,解决问题了。

作者邮箱:790455803@qq.com,有问题可以直接EMAIL作者,当然也可以加入我们ttlsa群单独私聊或者群里发提问。

jQuery 1.7以后版本使用on代替live

对于动态创建的标签,假如映射事件。在1.7版本以前使用live。1.8版本推荐使用on。

使用方法如下

1.7版以前的

$(“#ajaxTable tbody tr”).live(“click”,function(){

});

假如想当然的简单替换

$(“#ajaxTable tbody tr”).on(“click”,function(){

}); 呵呵不好用。得按照以下的方法才可以

$(document).on(“click”,”#ajaxTable tbody tr”,function(){});

$(this)与this的区别

相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢?

首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQuery(),即$(this)=jquery();也就是说,这样可以返回一个jquery对象。 那么,当你在网页中alert($(‘#id’));时,会弹出一个[object Object ],这个object对象,也就是jquery对象了。

那么,我们再回过头来说$(this),这个this是什么呢?假设我们有如下的代码:

$(“#desktop a img”).each(function(index){

alert($(this));

alert(this);

}

那么,这时候可以看出来:

alert($(this));  弹出的结果是[object Object ]

alert(this);        弹出来的是[object HTMLImageElement]

也就是说,后者返回的是一个html对象(本例中是遍历HTML的img对象,所以为 HTMLImageElement)。很多人在使用jquery的时候,经常this.attr(‘src’);   这时会报错“对象不支持此属性或方法”,这又是为什么呢?其实看明白上面的例子,就知道错在哪里了:

很简单,this操作的是HTML对象,那么,HTML对象中怎么会有val()方法了,所以,在使用中,我们不能直接用this来直接调用jquery的方法或者属性。

linux下导入、导出mysql数据库命令

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/   mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码

2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/   mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/  —>  mysql的data目录
二、导入数据库
1、首先建空数据库
mysql>CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql

建议使用第二种方法导入。

注意:有命令行模式,有sql命令

 

创建数据库yourdbname,并制定默认的字符集是utf8。

CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

如果要创建默认gbk字符集的数据库可以用下面的sql:

create database yourdb DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;