分类: 系统运维
2012-03-06 15:48:25
1. 什么是CGI程序?
Common gateway interface,通用网关接口。首先,任何遵守CGI标准的、由web服务器执行的、能从web服务器接收信息发送到浏览器或者能发送信息给服务器的程序就是CGI程序,CGI程序能在任何特定的服务器上运行。
简单的说,它是沟通HTML表单和服务器端程序的接口,是可以被其他语言所应用的一个规范集。
2. Lighttpd简介
Lighttpd是一开源且轻量级的web server,支持,, Auth,输出压缩(output compress),,等重要功能。
Lighttpd使用fastcgi方式运行php,它会使用很少的php进程响应很大的并发。
3. 安装步骤(Linux、Lighttpd、mysql、php)
a) 下载各个软件
系统环境:Centos 6.2
Lighttpd:lighttpd-1.4.24
Php:php-5.2.10
Mysql:mysql-5.1.60
b) 安装Lighttpd
tar xvf lighttpd-1.4.24.tar.gz
cd lighttpd-1.4.24
./configure --prefix=/opt/lighttpd
make
make install
c) 配置Lighttpd
mkdir /etc/lighttpd 用来存放主配置文件
mkdir –p /var/www/htdocs 用来存放网站
mkdir /opt/lighttpd/log 用来存放日志
cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
vi lihttpd 修改所在路径为 lighttpd="/etc/lighttpd/lighttpd.conf"
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
cp doc/rc.lighttpd.redhat /etc/rc.d/init.d/lighttpd
编辑:
将#lighttpd="/usr/sbin/lighttpd"
修改为:lighttpd="/opt/lighttpd/sbin/lighttpd"
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
chkconfig lighttpd on
vi lighttpd.conf(修改主配置文件)
(1)修改默认目录路径
设置错误日志文件路径
server.errorlog = "/opt/lighttpd/logs/lighttpd.error.log" (43行)
设置访问日志文件路径
accesslog.filename = "/opt/lighttpd/logs/access.log" (116行)
(2)修改端口号 (默认为80)
把#server.port = 81 前的#去掉
(3)用什么权限来运行lighttpd
server.username = "lighttpd"
server.groupname = "lighttpd"
从安全角度来说,不建议用root权限运行web server,可以指定普通用户权限。
(后面创建用户)
(4)(这个我也不知道是干什么的啊~~~~(>_<)~~~~ )
#$HTTP["url"] =~ "/.pdf$" {
# server.range-requests = "disable"
#}
创建lighttpd用户
useradd lighttpd
chown –R lighttpd:lighttpd /opt/lighttpd/
chown –R lighttpd:lighttpd /var/www/htdocs/
d) 安装php
GD库(共6 + 1 = 7个)
(1)zlib
(2)jpeg6
mkdir /opt/jpeg6/
mkdir /opt/jpeg6/bin/
mkdir /opt/jpeg6/lib/
mkdir /opt/jpeg6/include/
mkdir /opt/jpeg6/man/
mkdir /opt/jpeg6/man1/
mkdir /opt/jpeg6/man/man1/
./configure --prefix=/opt/jpeg6/ --enable-shared --enable-static
make install-lib
(3)libpng
(4)freetype (参数:--prefix=/opt/freetype/)
(5)libxml2
cp xml2-config /usr/bin
(6)fontconfig
(参数:--prefix=/opt/fontconfig --with-freetype-config=/opt/freetype/bin/freetype-config)
最后按照GD,把上面6个关联起来,顺序与上面对应:
(7)gd
(参数:--prefix=/opt/gd --with-zlib-dir --with-jpeg=/opt/jpeg6/ --with-png-dir --with-freetype=/opt/freetype/ --with-libxml2-dir --with-fontconfig=/opt/fontconfig/)
php
tar
cd
./configure --prefix=/opt/php --enable-fastcgi --enable-force-cgi-redirect --with-mysql=/opt/mysql/ --with-gd=/opt/gd/ --with-libxml-dir
make
make test
make install
e) 配置php
cp php.ini-dist /opt/php/lib/php.ini
f) 将lighttpd和php关联
修改php.ini
vim /opt/php/lib/php.ini
cgi.fix_pathinfo=1
查找register_globals = Off,把off改成On
再查找short_open_tag = Off,把off改成On
在查找extension=php_mbstring.dll把前面"#"号都去了,这样才能启动这条参数的功能。
比如要使PHP支持mysql,那么就要吧extension=php_mysql.dll前面的"#"去掉。
修改lighttpd.conf
vim /etc/lighttpd/lighttpd.conf
在lighttpd的主配置文件里,修改与php相关联的内容
server.modules(在24行)
取消需要用到模块的注释:mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog是一般需要用到的。
设置网站根目录路径
server.document-root = "/var/www/htdocs/"
找到fastcgi的定义
#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/var/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/opt/php/bin/php-cgi"
)
)
)
g) 进行测试
在/var/www/htdocs/中创建一个文件index.php,编辑内容如下:
phpinfo();
?>
启动服务lighttpd
在地址栏输入
127.0.0.1:81/index.php
即可打开一个页面
h) mysql安装
tar
cd
./configure --prefix=/opt/mysql
make
make install
i) 配置mysql
cp ./support-files/my-medium.cnf /etc/my.cnf
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
useradd mysql
chown –R mysql:mysql /opt/mysql
chown –R mysql:mysql /etc/my.cnf
修改/etc/my.cnf文件,配置端口号(3306)和socket(/tmp/mysql.sock)
./bin/mysql_install_db --basedir=/opt/mysql --datadir=/opt /mysql/data --user=mysql(初始化数据库)
mysql与lighttpd、php的相关联,仅仅在安装php时 ./configure 加上
--with-mysql=/opt/mysql/ 就可以了。
之后启动
/etc/init.d/mysqld start
修改密码
/opt/mysql/bin/mysqladmin –u root password “My_Own_Password”
登录mysql
/opt/mysql/bin/mysql –u root –p
j) 测试php与mysql相连接
先在mysql中创建一个数据库”mydb”,然后修改刚才的index.php文件
$dbhost = ‘localhost’;
$dbuser = ‘root’;
$dbpassword = ‘My_Own_Password’;
$dbname = ‘mydb’;
$connect = mysql_connect($dbhost, $dbuser, $dbpassword, $dbname);
if($connect) {
echo “succeed”;
} else {
echo “failed”;
}
?>
之后在浏览器中输入127.0.0.1:81/index.php,如果成功的话,就说明数据库连接成功。
4. 什么是fastCGI?
fastCGI首先是为了解决CGI的性能问题而提出的。每当服务器接收到CGI程序请求时,服务器创建一个进程,处理完毕之后,将结果返回,然后该进程终止。fastCGI是对CGI的改良,它是在web服务器启动的时候或者是在客户第一次请求的时候创建进程,它处理完客户端请求之后并不终止,而是等待下一个请求。而且,fastCGI可以分布式在不同的计算机上,这样可以提高性能,提高访问速度。
但是fastCGI也有一些不足,PHP-CGI解释器每进程消耗7至25兆,将这个数字乘以50或100就是很大的内存数。
5. 什么是PHP-CGI
PHP-CGI是PHP自带的fastCGI管理器。
6. ./configure的参数具体含义
在安装过程当中,configure的参数比较多。configure是一个脚本,它是一个脚本配置程序,这个参数比较多。
注意:在服务启动之后,为了检查服务,一般主要检查3个地方:
(1)多次查看进程的pid,看看它们是不是一样的;
(2)查看端口号,看是否已经存在;
(3)查看log日志,看看是不是有问题存在。
参考资料:
1. %C2%BD%C0%DA/blog/item/d75201da9024636ad1164e1b.html
2.
3. http://blog.csdn.net/zccst/article/details/4494298
4. PHP Compilation Errors and Fixes
5. Linux下Mysql安装与配置
6.
7. http://blog.csdn.net/besthyq/article/details/1575819
8.