PHP环境搭建.doc_第1页
PHP环境搭建.doc_第2页
PHP环境搭建.doc_第3页
PHP环境搭建.doc_第4页
PHP环境搭建.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux 下PHP环境搭建安装环境:PHP+lghttpd + mysql1 yum install lighttpd2 yum install fcgi mysql mysql-server php 3 yum install lighttpd-fastcgi 4 yum install phpmyadmin phppgadmin pgadmin3 #chkconfig -level 345 mysqld on#chkconfig -level 345 lighttpd on启动模块设置vim /etc/lighttpd/lighttpd.conf 14 server.modules = ( 15 mod_rewrite, 16 # mod_redirect, 17 # mod_alias, 18 mod_access, 19 # mod_trigger_b4_dl, 20 # mod_auth, 21 # mod_status, 22 # mod_setenv, 23 mod_fastcgi, 24 # mod_proxy, 25 # mod_simple_vhost, 26 # mod_evhost, 27 # mod_userdir, 28 mod_cgi, 29 # mod_compress, 30 # mod_ssi, 31 # mod_usertrack, 32 # mod_expire, 33 # mod_secdownload, 34 # mod_rrdtool, 35 mod_accesslog ) 36 安装环境:PHP+lghttpd + postgresql 1:yum install lighttpd 红旗自带apache2作为默认的web服务器。在原来的系统中就是使用apache作为web页面的服务器,apache占用的内存很多,一个apache进程占用的内存大约是20M,最大的可能占到35M以上,占用的共享内存都在100多M以上。而且apache是一个多进程响应服务,这样apache的进程占用内存更多。因此经长时间运行,会出现由于内存不够而无法访问界面的情况。 lighttpd是一个理想的替代方案。其是一个非常轻便的web服务器,虽然它的功能没有apache强大,但是可以满足大部分的服务要求。它的内存占用量一般是2M左右,占用的共享内存是20M左右,而且与apache实现机制不同的是,lighttpd采用单进程多路复用的方式响应请求,在系统中一般只有一个lighttpd进程响应服务请求。(也可配置为多进程)所以从内存占用量的角度看,lighttpd就有很大的优势。此外,lighttpd也可以通过配置fast-cgi支持php应用。参照:/u3/109488/showart_2142285.html2:yum install fcgi lighttpd-fastcgi什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI(/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等什么是FastCGIFastCGI像是一个常驻(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-CGIPHP-CGI是PHP自带的FastCGI管理器。启动PHP-CGI,使用如下命令:php-cgi -b :9000PHP-CGI的不足1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启2、直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)什么是PHP-FPMPHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 /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-fpmstart|stop|quit|restart|reload|logrotate -start 启动php的fastcgi进程-stop 强制终止php的fastcgi进程-quit 平滑终止php的fastcgi进程-restart 重启php的fastcgi进程-reload 重新平滑加载php的php.ini-logrotate 重新启用log文件什么是Spawn-FCGISpawn-FCGI是一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作,不过有不少缺点。而PHP-FPM的出现多少缓解了一些问题,但PHP-FPM有个缺点就是要重新编译,这对于一些已经运行的环境可能有不小的风险(refer),在php 5.3.3中可以直接使用PHP-FPM了。Spawn-FCGI目前已经独成为一个项目,更加稳定一些,也给很多Web 站点的配置带来便利。已经有不少站点将它与nginx搭配来解决动态网页。最新的lighttpd也没有包含这一块了(/search?q=Spawn-FCGI), 但可以在以前版本中找到它。在lighttpd-1.4.15版本中就包含了(/download/lighttpd-1.4.15.tar.gz)目前Spawn-FCGI的下载地址是/projects/spawn-fcgi,最新版本是/download/spawn-fcgi-1.6.3.tar.gz注:最新的Spawn-FCGI可以到网站搜索“Spawn-FCGI”找到它的最新版本发布地址下面我们就可以使用Spawn-FCGI来控制php-CGI的FastCGI进程了/usr/local/bin/spawn-fcgi -a -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功能比较/about/PHP-FPM、Spawn-FCGI都是守护php-cgi的进程管理器。参考文档:/u/20100216/22/5809e272-6f67-4248-bde9-99deeae5215b.html/u/20101015/19/8ae74452-ec6b-448e-9942-21faeb008cd7.html/thread-768488-1-1.html/index.php/productsapp/23-servsf/842-spawn-fcgi/drupal/node/2/view/641394.htm/view/32614.htm/network/fastcgi/#yum install mysql mysql-server#yum install php#yum install postgresql#yum install phpmyadmin phppgadmin pgadmin3安装完毕简单配置lighttpd、mysql的停止启动命令(root身份执行)#/etc/init.d/linghttpd start#/etc/init.d/mysqld start自动启动的设置#chkconfig -level 345 mysqld on#chkconfig -level 345 lighttpd on配置lighttpd#vi /usr/local/lighttpd/etc/lighttpd.conf修改一下内容- 加载cgi,fastcgi模块-14 server.modules = ( 15 mod_rewrite, 16 # mod_redirect, 17 # mod_alias, 18 mod_access, 19 # mod_cml, 20 # mod_trigger_b4_dl, 21 # mod_auth, 22 # mod_status, 23 # mod_setenv, 24 mod_fastcgi, 25 # mod_proxy, 26 # mod_simple_vhost, 27 # mod_evhost, 28 # mod_userdir, 29 mod_cgi, 30 # mod_compress, 31 # mod_ssi, 32 # mod_usertrack,-网站根目录- 38 # a static document-root, for virtual-hosting take look at the 39 # server.virtual-* options 40 server.document-root = /var/www/lighttpd/-日志目录-42 # where to send error-messages to 43 server.errorlog =/var/log/lighttpd/error.log.115 # accesslog module116 accesslog.filename = /var/log/lighttpd/access.log-默认首页格式- 45 # files to check for if ./ is requested 46 s = ( index.php, index.html, 47 index.htm, default.htm )-FastCgi模块-# for PHP dont forget to set cgi.fix_pathinfo = 1 in the php.inifastcgi.server = ( .php = ( localhost = ( socket= /var/run/lighttpd/php-fastcgi.socket,bin-path = /usr/bin/php-cgi ) ) )-CGI模块-# CGI modulecgi.assign = ( .sh = /bin/bash, .pl = /usr/bin/perl, .cgi = /usr/bin/perl )5 修改/etc/php.ini设置 cgi.fix_pathinfo = 16 配置完毕,重起lighttpd# /etc/init.d/lighttpd restart7 80端口被占用:装了apache?默认80端口被它占了。解决办法:如果是APACHE是REDHAT下默认安装的,修改/etc/httpd/conf/httpd.conf 把默认80端口改掉如果是源码编译安装的,修改/usr/local/apache2/conf/httpd.conf然后重启apache服务netstat -anvplsof -i :80看是那个程序占用80 如果找到 确定不用 可以从执行目录中移走还用 看看是那里自动启动的 如果是系统服务shell 下输入setup进入 syetem . 找到服务 勾掉测试index.php 内容 # cat /var/www/lighttpd/test.php test.html# cat /var/www/lighttpd/index.php . . ximo sias web started #添加的 西默实验室的同学们,我们的web服务器启动了#添加的.在浏览器中分别输入 http:/localhost、http:/localhost/test.php,查看输出效果。Mysql的相关操作:参考网址:/share/detail/14999260 /topic/325389 1启动mysql服务 service mysqld start2测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。 netstat -nat |grep 33063 添加密码 mysqladmin -u root password 123456 测试 rootwill 21:47:00 lighttpd$mysqlERROR 1045 (28000): Access denied for user rootlocalhost (using password: NO)登录 mysql -u root -p 输入密码即可 显示 Enter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 10Server version: 5.1.58 Source distribution4 修改密码 mysqladmin -u root -p123456 password 111111 mysqladmin -u root -p111111 password 123456 5 使用密码登录不成功。rootwill 00:37:45 $mysql -h 24 -u root -p123456 aaaERROR 1045 (28000): Access denied for user rootwill (using password: YES)解决方案:# mysql -h 24 -u root mysqluse mysqlmysqlupdate user set password=old_password(123456) where user=root; mysqlFLUSH PRIVILEGES; 问题: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(your_existing_password). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your f file in解决方法:SET old_passwords = 0;UPDATE mysql.user SET Password = PASSWORD(123456) WHERE User = root ; FLUSH PRIVILEGES; 6 数据库连接代码插入记录代码 ?php $conn=mysql_connect(localhost,root,123456) or die(数据库服务器连接错误.mysql_error(); mysql_select_db(aaa,$conn) or die(数据库访问错误.mysql_error(); mysql_query(set names gb2312); $title=$_POSTtxt_title; $content=$_POSTtxt_content; $createtime=date(Y-m-d H:i:s); $sql=mysql_query(insert into tb_wall(title,content,createtime) values ($title,$content,$createtime); echo alert(公告信息添加成功!);window.location.href=add_affiche.php; mysql_free_result($sql); mysql_close($conn); ?查询记录代码?php$con=mysql_connect(localhost,root,123456);if(!$con) die(could not connetc:.mysql_error();mysql_select_db(aaa,$con);$result=mysql_query(select * from tb_wall;);while($row=mysql_fetch_array($result) echo .$rowid.$rowtitle.7 数据库mysql实现远程连接参考网址: /smallstone/archive/2010/04/29/1723838.html1、进入mysql,创建一个新用户root,密码为root: 格式:grant 权限 on 数据库名.表名 to 用户登录主机 identified by 用户密码; grant select,update,insert,delete on *.* to root2 identified by root; 原先数据表结构mysql use mysql;Database changedmysql select host,user,password from user;+-+-+-+| host | user | password |+-+-+-+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |+-+-+-+ 执行上述语句后结果mysql use mysql;Database changedmysql select host,user,password from user;+-+-+-+| host | user | password |+-+-+-+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 2 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |+-+-+-+2 rows in set (0.00 sec) 可以看到在user表中已有刚才创建的root用户。host字段表示登录的主机,其值可以用IP,也可用主机名, (1)有时想用本地IP登录,那么可以将以上的Host值改为自己的Ip即可。2、实现远程连接(授权法) 将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。 update user set host = % where user = root; 将权限改为ALL PRIVILEGESmysql use mysql;Database changedmysql grant all privileges on *.* to root% identified by root;Query OK, 0 rows affected (0.00 sec) mysql select host,user,password from user;+-+-+-+| host | user | password |+-+-+-+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 2 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |+-+-+-+3 rows in set (0.00 sec)这样机器就可以以用户名root密码root远程访问该机器上的MySql.3、实现远程连接(改表法)use mysql;update user set host = % where user = root;这样在远端就可以通过root用户访问Mysql.四 MYSQL的几个重要目录 MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。 下面就介绍一下这几个目录。 1、数据库目录 /var/lib/mysql/ 2、配置文件 /usr/share/mysql(mysql.server命令及配置文件) 3、相关命令 /usr/bin(mysqladmin mysqldump等命令) 4、启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录) 五、修改登录密码 MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。 1、命令 usr/bin/mysqladmin -u root password new-password 格式:mysqladmin -u用户名 -p旧密码 password 新密码 2、例子 例1:给root加个密码123456。 键入以下命令 : roottest1 local# /usr/bin/mysqladmin -u root password 123456 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 3、测试是否修改成功 1)不用密码登录 roottest1 local# mysql ERROR 1045: Access denied for user: rootlocalhost (Using password: NO) 显示错误,说明密码已经修改。 2)用修改后的密码登录 roottest1 local# mysql -u root -p Enter password: (输入修改后的密码123456) Welcome to the MySQL monitor.Commands end with ; or g. Your MySQL connection id is 4 to server version: 4.0.16-standard Type help; or h for help. Type c to clear the buffer. mysql 成功! 这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。 六、启动与停止 1、启动 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。 roottest1 init.d# /etc/init.d/mysqld start service mysqld startStarting mysqld: OK rootwill 22:06:19 lighttpd$service mysqld statusmysqld (pid 4546) is running.2、停止 /usr/bin/mysqladmin -u root -p shutdown mysqladmin -u root -p shutdownEnter password: rootwill 22:04:41 lighttpd$service mysqld statusmysqld dead but subsys locked3、自动启动 1)察看mysql是否在自动启动列表中 roottest1 local#/sbin/chkconfig -list 2)把MySQL添加到你系统的启动服务组里面去 roottest1 local#/sbin/chkconfig- addmysql 3)把MySQL从启动服务组里面删除。 roottest1 local#/sbin/chkconfig-delmysql 七、更改MySQL目录 MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步: 1、home目录下建立data目录 cd /home mkdir data 2、把MySQL服务进程停掉: mysqladmin -u root -p shutdown 3、把/var/lib/mysql整个目录移到/home/data mv /var/lib/mysql/home/data/ 这样就把MySQL的数据文件移动到了/home/data/mysql下 4、找到f配置文件 如果/etc/目录下没有f配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为f)中。命令如下: roottest1 mysql# cp /usr/share/mysql/f/etc/f 5、编辑MySQL的配置文件/etc/f 为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下: vi f (用vi工具编辑f文件,找到下列数据修改之) # The MySQL server mysqld port= 3306 #

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论