GitHub使用key而不用密码

在GitHub账户中添加你的公钥

https://help.github.com/articles/generating-ssh-keys/
中的
Step 4: Add your SSH key to your account

ssh -T git@github.com
看到下面信息 表示成功
Hi username! You’ve successfully authenticated

#在GitHub账户中添加你的公钥后
#你和github服务器之间,相当于就达成了ssh认证的协议。但是,还有一个问题,本地仓库不知道如何用ssh

#git remote set-url origin git@github.com:myusername/myrepo.git
git remote set-url origin git@github.com:evan886/shell.git

#本地作了修改,就需要同步到github服务器上
git push origin master

fnmp(pkg)

首先添加一个普通帐号并加入到管理员组

root@freebsds # adduser
Username: eva
Login group is eva. Invite evan into other groups? []: wheel #一定要有这个

在你的freebsd首次使用portsnap必须执行下面2步:

portsnap fetch
portsnap extract
这2步可以合成使用:
portsnap fetch extract
portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方每小时更新一次。
portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。

以后更新,只需要执行下面2步:
portsnap fetch
portsnap update
这2步可以合成使用:

[root@bsd01 ~]# portsnap fetch update
portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就块很多了。

#Update all your ports

portsnap fetch update && portupgrade -a #第二个是没用的吧
#you must run ‘portsnap extract’ before running ‘portsnap update’.
portsnap extract && portsnap update
rehash

# 这里db 用mariadb ps mariadb 可见mariadb

#pkg upgrade
pkg install nginx mariadb100-server php56-extensions php56-bz2 php56-curl php56-exif php56-fileinfo php56-gd php56-mbstring php56-mcrypt php56-pdo_mysql php56-openssl php56-zip php56-zlib pecl-APCu pecl-intl

sysrc 'nginx_enable=YES' 'php_fpm_enable=YES' 'mysql_enable=YES'

#ln -s /usr/local/share/certs/ca-root-nss.crt /etc/ssl/cert.pem

**********************
1.配置mariadb start
cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf
cd /usr/local
mysql_install_db

#sysrc 已搞定了
#echo 'mysql_enable="YES"' >> /etc/rc.conf

service mysql-server onestart
/usr/local/bin/mysql_secure_installation

1.配置mariadb the end
**********************

**********************
2.配置php start

cd /usr/local/etc
vi php-fpm.conf

#ln 164
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock

#ln 176
;listen.owner = www
;listen.group = www
;listen.mode = 0660
#Enable these by removing the comment marker at the beginning:
listen.owner = www
listen.group = www
listen.mode = 0660

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

vi php.ini
#Uncomment the cig.fix_pathinfo line and set it to "0":
;cgi.fix_pathinfo=1
#772
cgi.fix_pathinfo=0
#Save and close the file when you are finished.

service php-fpm restart

2.配置php the end
PHP-FPM completely configured
**********************
3.Configure nginx start
service nginx start
cd /usr/local/etc/nginx
cp nginx.conf nginx.confbak
vi nginx.conf

mkdir -p /var/log/nginx
mkdir -p /data/www
chmod -R 0777 /data/www
chown -R www /data/www
mkdir -p /usr/local/etc/nginx/logs/
chown -R www /usr/local/etc/nginx/logs/
service nginx restart

root@free:/usr/local/etc # cat nginx/nginx.conf
user www;
worker_processes 2;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

pid logs/nginx.pid;

events {
use kqueue;#kqueue 是 FreeBSD 上的一种的多路复用机制
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

gzip on;

server {
listen 80;
server_name 192.168.1.161;
charset utf-8;
root /data/www;
index index.php index.html index.htm;
#access_log logs/host.access.log main;

location / {
try_files $uri $uri/ =404;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /data/www;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;

#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
}

}

}

cat hosts/wiki.conf
server {
listen 80;
server_name evanlinux.com;
charset utf-8;
access_log off;
root /data/wiki;
index index.php index.htm index.html;
location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|swf|html|htm|mp3|wma|js|css)$ {
expires 7d;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}

3.Configure nginx the end

/usr/local/etc/rc.d/php-fpm start

CREATE DATABASE wordpress;
use mysql;
CREATE USER evan@localhost IDENTIFIED BY 'evan';
GRANT ALL PRIVILEGES ON wordpress.* TO evan@localhost;
FLUSH PRIVILEGES;

#https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-nginx-on-a-freebsd-10-1-server

ps 有时用wordpress 自己的导入功能文件太大

1.改 php.ini #xml 文件为66M左右
upload_max_filesize 改为80
post_max_size 改为 80

2. nginx.conf
找到http{}段,添加
client_max_body_size 80m;

重启NGINX
kill -HUP `cat /usr/local/etc/nginx/logs/nginx.pid `

Nginx出现“413 Request Entity Too Large”错误解决方法

默认upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize = 20M。
  但是光设置upload_max_filesize = 20M还是无法实现大文件的上传功能,你必须修改php.ini配置文件中的post_max_size选项,其代表允许POST的数据最大字节长度,默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,你必须设定该选项值大于upload_max_filesize指令的值,我一般设定upload_max_filesize和post_max_size值相等。另外如果启用了内存限制,那么该值应当小于memory_limit选项的值。

mysqldump –default-character-set=utf8 -uroot -pevan wordpress >wpnow.sql

**********************
老是403 记住真的的权限问题 要8进制 亲

这样就搞定了
chmod -R 0777 /data/www/

安装完 WordPress 后你应该做好这24件事
http://www.chinaz.com/web/2014/0627/357330.shtml

在 FreeBSD 10.0 上安装和配置 Nginx+PHP+APC+MySQL

freesbsd ports 安装 nginx+mariadb(mysql分支) +php

How To Install WordPress with Nginx on a FreeBSD 10.1 Server

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-nginx-on-a-freebsd-10-1-server

##参考这个
Howto Install and Configure FEMP Stack (FreeBSD 10.2, Nginx, MariaDB, PHP)

How To Install an Nginx, MySQL, and PHP (FEMP) Stack on FreeBSD 10.1

How To Install WordPress with Nginx on a FreeBSD 10.1 Server
https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-nginx-on-a-freebsd-10-1-server

如何 evan su root

如何添加key

自己的机器 没事 pkg install vim

conf 配置文件一般 在 /usr/local/etc/

/usr/local/etc/nginx

freesbsd ports 安装 nginx+mariadb(mysql分支) +php


18:49 portsnap fetch
12 18:56 portsnap extract
13 19:07 portsnap update
14 19:07 portsnap fetch extract
15 19:21 portsnap fetch update

#30号
pkg install databases/mariadb100-server

freenas like
https://forums.freenas.org/index.php?threads/how-to-owncloud-using-nginx-php-fpm-and-mysql.17786/

#err 没有; 结束
root@free:/usr/local/etc/nginx # service nginx restart
Performing sanity check on nginx configuration:
nginx: [emerg] directive “index” is not terminated by “;” in /usr/local/etc/nginx/nginx.conf:43
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed

FreeBSD 10 编译 Nginx, PHP, MariaDB
http://my.oschina.net/jarly/blog/195331

FreeBSD 10 Mariadb Server Install Command

https://www.digitalocean.com/community/tutorials/how-to-install-an-nginx-mysql-and-php-femp-stack-on-freebsd-10-1

FreeBSD 10 Mariadb Server Install Command

在 FreeBSD 10.0 上安装和配置 Nginx+PHP+APC+MySQL

How to Install MariaDB 10 on FreeBSD 10

http://www.tuicool.com/articles/6jQ3qiF

Install Apache, MariaDB And PHP In FreeBSD10

https://fosskb.wordpress.com/2014/04/12/famp-installing-apache2-4-mariadb-php-on-freebsd-10/

How to install mariadb on FreeBSD

http://www.cyberciti.biz/faq/how-to-install-mariadb-databases-on-a-freebsd-v10-unix-server/
https://forums.freebsd.org/threads/mariadb-in-freebsd.48133/

maridb
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’
http://blog.csdn.net/wyzxg/article/details/4720041

http://www.360doc.com/content/08/0215/16/25127_1045525.shtml

ports install err 不能启动
failed precmd routine for mysql

FreeBSD 10.0 与 pkg 时代的到来

pkg delete curl

shell判断系统为centos7

cat /etc/redhat-release | cut -d . -f 1 | grep 7
myre=$?

if [ $myre -eq 0 ]
then
echo is 7
else
echo is 6
fi

cat /etc/redhat-release |grep 7\..*|grep -i centos>/dev/null
[ ! $? -eq 0 ] && echo "Please make sure your system is CentOS 7"&& exit

cut awk

还有其它办法 在这里就不一一而言

centos7添加nginx 服务并自启动

作为服务,开机后启动

增加以下内容
[root@centos ~]# vi /usr/lib/systemd/system/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile= /usr/local/nginx/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[root@centos ~]# systemctl enable nginx.service

[root@centos ~]# systemctl list-unit-files|grep enabled|grep nginx

启动服务

[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl start nginx.service
[root@centos ~]# systemctl status nginx.service -l
[root@centos ~]# ps -ef|grep nginx

#这样也可以 但是不太标准
systemctl start nginx

nginx File not found 错误

这个配置中有很多不合理的地方,其中一个明显的问题就是root指令被放到了location / 块。如果root指令被定义在location块中那么该root指令只能对其所在的location生效。其它locaiont中没有root指令,像location /images块不会匹配任何请求,需要在每个请求中重复配置root指令来解决这个问题。因此我们需要把root指令放在server块,这样各个location就会继承父server块定义的$document_root,如果某个location需要定义一个不同的$document_root,则可以在location单独定义一个root指令。

另一个问题就是fastCGI参数SCRIPT_FILENAME 是写死的。如果修改了root指令的值或者移动文件到别的目录,php-fpm会返回“No input file specified”错误,因为SCRIPT_FILENAME在配置中是写死的并没有随着$doucument_root变化而变化,我们可以修改SCRIPT_FILENAME配置如下:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

所以我们不能忘记在server块中配置root指令,不然$document_root的值为空,只会传$fastcgi_script_name到php-fpm,这样就会导致“No input file specified”错误。

nginx File not found 错误

nginx File not found 错误

nginx 403 forbidden

引起nginx 403 forbidden 一般是缺少索引文件 或者权限问题。
1,缺少index.html或者index.php文件
server {
listen 80;
server_name a.com;
index index index.php index.html index.htm;
root /www;
如果在/home/zhang/www下面没有index.php,index.html的时候,直接访问域名,找不到文件,会报403 forbidden

2,权限问题
因为权限问题引起的403,一般少遇到 网上很多人喜欢用 chmod -R 0777 webdir,连什么 dedecsm phpcms 也是这样教别人的 很明显是程序哥写的教程呀 在这里 evan建议不要用这个 虽然方便 但是不安全呀 ,而是直接用 chown -R nginxuser:nginxuser wedir

server {
listen 80;
server_name a.com;
index index index.php index.html index.htm;
root /www;

相关
php写错导致nginx 403 forbidden及分析过程

什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI

什么是CGI
  CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
  CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等
  什么是FastCGI
  FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
  FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
  FastCGI与CGI特点
  1、如CGI,FastCGI也具有语言无关性.
  2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器; 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)
  3、FastCGI技术目前支持语言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相关模块在Apache, ISS, Lighttpd等流行的服务器上也是可用的。
  4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。
  FastCGI的工作原理
  
  1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
  
  2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
  
  3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  
  4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
  
  在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
  FastCGI的不足
  因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
  
  Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。
  上面的数据摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)
  什么是PHP-CGI
  PHP-CGI是PHP自带的FastCGI管理器。
  启动PHP-CGI,使用如下命令:

PS

什么是 FastCGI
FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。
FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。
FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

、spawn-fcgi与PHP-FPM
前面介绍过,FastCGI接口方式在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行解析,这些进程就是FastCGI进程管理器,或者称之为FastCGI引擎, spawn-fcgi与PHP-FPM就是支持PHP的两个FastCGI进程管理器。
下面简单介绍spawn-fcgi与PHP-FPM的异同。

spawn-fcgi是HTTP服务器lighttpd的一部分,目前已经独立成为一个项目,一般与lighttpd配合使用来支持PHP,但是ligttpd的spwan-fcgi在高并发访问的时候,会出现内存泄漏甚至自动重启FastCGI的问题。

Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此Nginx+spawn-fcgi的组合也可以实现对PHP的解析,这里不过多讲述。

PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。

FastCGI 的主要优点是把动态语言和HTTP Server分离开来,所以Nginx与PHP/PHP-FPM经常被部署在不同的服务器上,以分担前端Nginx服务器的压力,使Nginx专一处理静态请求和转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。

Nginx中FastCGI参数的优化
在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令。下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;

下面是对上述代码的含义进行介绍。
第一行代码是为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_cache表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。
fastcgi_cache_valid、fastcgi用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。

http://ixdba.blog.51cto.com/2895551/806622
1 php-cgi -b 127.0.0.1:9000
  PHP-CGI的不足
  1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启
  2、直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)
  什么是PHP-FPM
  PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
  PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
  现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了PHP-FPM的分支,据说下个版本会融合进PHP的主分支去。相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。
  PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。
  使用PHP-FPM来控制PHP-CGI的FastCGI进程

/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate}

–start 启动php的fastcgi进程
–stop 强制终止php的fastcgi进程
–quit 平滑终止php的fastcgi进程
–restart 重启php的fastcgi进程
–reload 重新平滑加载php的php.ini
–logrotate 重新启用log文件
  什么是Spawn-FCGI
  Spawn-FCGI是一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作,不过有不少缺点。而PHP-FPM的出现多少缓解了一些问题,但PHP-FPM有个缺点就是要重新编译,这对于一些已经运行的环境可能有不小的风险(refer),在php 5.3.3中可以直接使用PHP-FPM了。
  Spawn-FCGI目前已经独成为一个项目,更加稳定一些,也给很多Web 站点的配置带来便利。已经有不少站点将它与nginx搭配来解决动态网页。
  最新的lighttpd也没有包含这一块了(http://www.lighttpd.net/search?q=Spawn-FCGI),但可以在以前版本中找到它。在lighttpd-1.4.15版本中就包含了(http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz)
  目前Spawn-FCGI的下载地址是http://redmine.lighttpd.net/projects/spawn-fcgi,最新版本是http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
  注:最新的Spawn-FCGI可以到lighttpd.net网站搜索“Spawn-FCGI”找到它的最新版本发布地址
  下面我们就可以使用Spawn-FCGI来控制php-CGI的FastCGI进程了

/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-CGI
  参数含义如下:
  -f 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
  -a 绑定到地址addr
  -p 绑定到端口port
  -s 绑定到unix socket的路径path
  -C 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
  -P 指定产生的进程的PID文件路径
  -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等
  PHP-FPM与spawn-CGI对比测试
  PHP-FPM的使用非常方便,配置都是在PHP-FPM.ini的文件内,而启动、重启都可以从php/sbin/PHP-FPM中进行。更方便的是修改php.ini后可以直接使用PHP-FPM reload进行加载,无需杀掉进程就可以完成php.ini的修改加载
结果显示使用PHP-FPM可以使php有不小的性能提升。PHP-FPM控制的进程cpu回收的速度比较慢,内存分配的很均匀。
  Spawn-FCGI控制的进程CPU下降的很快,而内存分配的比较不均匀。有很多进程似乎未分配到,而另外一些却占用很高。可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降。而PHP-FPM合理的分配,导致总体响应的提到以及任务的平均。
  PHP-FPM与Spawn-FCGI功能比较
  http://php-fpm.org/about/
  PHP-FPM、Spawn-FCGI都是守护php-cgi的进程管理器。

  参考文档:
实战Nginx与PHP(FastCGI)

nginx php-fpm安装配置

http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/
  http://topic.csdn.net/u/20100216/22/5809e272-6f67-4248-bde9-99deeae5215b.html
  http://topic.csdn.net/u/20101015/19/8ae74452-ec6b-448e-9942-21faeb008cd7.html
  http://club.topsage.com/thread-768488-1-1.html
  http://www.unixaid.info/index.php/productsapp/23-servsf/842-spawn-fcgi
  http://www.fastcgi.com/drupal/node/2
  http://baike.baidu.com/view/641394.htm
  http://baike.baidu.com/view/32614.htm
  http://blog.yation.com/network/fastcgi/

phpize简介(转)

phpize简介
一,phpize 的好处
什么时候我们要用phpize呢?我们在安装php时:
‘./configure’ ‘–prefix=/usr/local/php’ ‘–with-mysql=/usr/local/mysql’ ‘–with-zlib-dir’ ‘–with-freetype-dir=/usr’ ‘–with-jpeg-dir=/usr’ ‘–with-png-dir=/usr’ ‘–enable-gd-native-ttf’ ‘–with-gd’ ‘–enable-ftp’ ‘–with-iconv’ ‘–with-gettext’ ‘–with-curl’ ‘–enable-fastcgi’ ‘–with-openssl’
后面根的参数是我们要的模块,但是随着工作的需要,我们还要在加些模块,又不想重新编译php,这些我们就可以用phpize了。

二,安装php模块
下面我以soap安装为例子
cd /home/zhangy/php-5.2.6/ext/soap #ext目录下面放的是php的模块库
/usr/local/php/bin/phpize
#确定php-config文件在不在,调用php-config,安装后.so文件会自动放到extension_dir里面
./configure –enable-soap –with-php-config=/usr/local/php/bin/php-config
make && make install
安装完后会有这样的东西
See any operating system documentation about shared libraries for?more information, such as the ld(1) and ld.so(8) manual pages.?———————————————————————-
Build complete.?Don’t forget to run ‘make test’.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
三,查看.so文件,以及修改php.ini
cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
ls -al |grep soap
-rwxr-xr-x 1 root root 763334 Feb 9 10:51 soap.so
vi /usr/local/php/lib/php.ini
在加载模块的地加上一行extension=soap.so
四,重起apache或者phpcgi或者其他

***************************************************************************************************************
phpize简介(实例应用)
4. 01.
phpize 是属于 php-devel 中的东西,主要是设定 php 外挂模块的一些设定

例如你的php不支持mysql, mbstring等

实例应用:
环境php5.2.6, 不支持mysql扩展
假如php的源码包在/usr/local/src/php-5.2.6
php安装目录是/usr/local/php

# cd /usr/local/src/php-5.2.6
# cd ./ext/mysql
# /usr/local/php/bin/phpize

# ./configure –with-php-config=/usr/local/php/bin/php-config
# make
# make install
这个时候你会看到mysql.so被拷贝到某个目录, 把mysql.so拷贝到你的extension_dir指向的路径, 在php.ini里增加extension=mysql.so
重启web服务器, 看一下phpinfo, 应该支持mysql了, 完毕!

注意: 在执行/usr/local/php/bin/phpize的时候可能会提示某些错误, 例如:Cannot find autoconf, 那就根据错误提示把相关的软件安装, RHEL系列使用yum -y install autoconf就可以了
其他错误, 请留言给我!

所以安装 php-devel 相关套件就会有 phpize 可以使用 (档案预设存放于 /usr/bin/phpize )
phpize 命令是用来准备 PHP 外挂模块的编译环境的。下面例子中,外挂模块的源程序位于 extname 目录中:
# cd extname
# phpize
# ./configure (注一)
# make
# make install
成功的安装将建立 extname.so 并放置于 PHP 的外挂模块目录中 (预设存放于 /usr/lib/php/modules/ 内) 。
需要调整 php.ini,加入 extension=extname.so 这一行之后才能使用此外挂模块。

注一:
如在执行 ./configure 时出现 not find –with-php-config 时,
可重下以下指令,因 –with-php-config 预设在 /usr/bin/php-config 可找到
./configure –with-php-config=/usr/bin/php-config
需要调整 php.ini,加入 extension=extname.so 这一行之后才能使用此扩展库。