Ubuntu实用工具系列文章,将介绍基于Linux ubuntu的各种工具软件的配置和使用。有些工具大家早已耳熟能详,有些工具经常用到但确依然陌生。我将记录我在使用操作系统时,安装及配置工具上面的一些方法,把使用心得记录下来也便于自己的以后查找和回忆。
关于作者:
- 张丹(Conan), 程序员Java,R,PHP,Javascript
- weibo:@Conan_Z
- blog: http://blog.fens.me
- email: bsspirit@gmail.com
转载请注明出处:
http://blog.fens.me/linux-php-install/
前言
PHP是一种高效的Web开发语言,可以嵌入在 HTML 并由服务器解释的脚本语言。PHP比CGI或者Perl更快速地执行动态网页,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP已广泛地被使用在各种Web系统和应用中。
目录
- PHP在Windows中安装
- PHP在Linux Ubuntu中安装
1 PHP在Windows中安装
1.1 下载并解压PHP
在Windows中安装PHP环境非常简单,直接下载压缩文件(zip),解压即可。下载地址:http://windows.php.net/download/
解压目录:D:\toolkit\php-5.5.11
我们运行php.exe时,会弹出一个错误,计算机丢MSVCR110.ddl。
当遇到这个错误,我们需要安装VC11的相关组件,去微软官方去下载对应的组件。下载链接:http://www.microsoft.com/zh-CN/download/details.aspx?id=30679
下载对应的32位或64位的版本,双击安装下载的文件vcredist_x64.exe。我们再次双击php.exe,运行PHP正常。
安装后PHP环境后,我们还需要安装Web服务器,比如Apache, Nginx, ISS等。
1.2 下载并解压Nginx
我在这里介绍一下Nginx作为PHP的Web服务器的安装和配置。
下载Window版本的Nginx压缩文件(zip),下载地址:http://nginx.org/en/download.html
解压目录:D:\toolkit\nginx-1.5.11
+ Nginx服务器运行命令:Nginx安装目录/nginx.exe
1.3 让PHP在Nginx中运行
1.3.1 修改PHP配置文件
让我们先配置PHP环境
进入PHP目录D:\toolkit\php-5.5.11,复制php.ini-development文件并创建新文件php.ini
编辑php.ini
~ vi php.ini
;设置PHP工作目录
extension_dir = "D:/toolkit/php-5.5.11/ext"
;设置支持mysql
extension=php_mysql.dll
extension=php_mysqli.dll
;让Nginx找到PHP
cgi.fix_pathinfo=1
注: php.ini文件中,分号”;”为注释
启动PHP的CGI程序,监听9000端口:
在Window的命令行窗口输入
~ D:\toolkit\php-5.5.11>php-cgi.exe -b 127.0.0.1:9000 -c php.ini
1.3.2 修改Nginx配置文件
进入Nginx目录D:\toolkit\nginx-1.5.11,找到配置文件conf/nginx.conf
- PHP文件运行目录,D:/workspace/php
- 设置访问域名,php.me
- 设置对.php文件,通过fastcgi转向127.0.0.1:9000解析
编辑文件conf/nginx.conf
~ vi conf/nginx.conf
http {
# 忽略部分代码
server {
set $htdocs D:/workspace/php/;
listen 80;
server_name php.me;
location / {
root $htdocs;
autoindex on;
index index.php index.html;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $htdocs$fastcgi_script_name;
}
}
}
启动Nginx服务器
~ D:\toolkit\nginx-1.5.11>nginx.exe
1.3.3 设置host
在host中把域名php.me映射为本机IP 127.0.0.1
编辑文件C:\Windows\System32\drivers\etc\hosts
~ vi C:\Windows\System32\drivers\etc\hosts
127.0.0.1 php.me
在命令行窗口用ping命令
~ ping php.me
正在 Ping php.me [127.0.0.1] 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
127.0.0.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
1.3.4 PHP测试文件
在目录 D:/workspace/php/ 中,新建一个PHP的文件env.php
~ vi env.php
<?php phpinfo(); ?>
1.3.5 在浏览器中,查看PHP运行情况
在浏览器中打开HTTP地址:http://php.me/env.php
这样我们就完成了,PHP在Window中的配置。
2 PHP在Linux Ubuntu中安装
相比Windows中略显繁琐的配置,在Ubuntu中几行命令就可以完成。
我们将同样构建PHP与Nginx结合的Web服务器环境。
2.1 下载并安装PHP
默认情况,Ubuntu中会自带PHP。
# 查看PHP的版本
~ php -version
PHP 5.3.10-1ubuntu3.10 with Suhosin-Patch (cli) (built: Feb 28 2014 23:14:25)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
# 安装PHP依赖库
~ sudo apt-get install php5-cli php5-cgi
2.2 下载并安装Nginx
下载并安装nginx
~ sudo apt-get install nginx
# 启动nginx
~ sudo /etc/init.d/nginx start
# 查看Nginx运行状态
~ sudo /etc/init.d/nginx status
* nginx is running
# 查看Nginx进程
~ ps -aux|grep nginx
root 2306 0.0 0.0 62860 1344 ? Ss 15:31 0:00 nginx: master process /usr/sbin/nginx
www-data 2307 0.0 0.0 63216 1916 ? S 15:31 0:00 nginx: worker process
www-data 2308 0.0 0.0 63216 1656 ? S 15:31 0:00 nginx: worker process
www-data 2309 0.0 0.0 63216 1916 ? S 15:31 0:00 nginx: worker process
www-data 2310 0.0 0.0 63216 1656 ? S 15:31 0:00 nginx: worker process
2.3 下载并安装spawn
spawn是一个FastCGI的应用,可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。
安装spawn-fcgi
~ sudo apt-get install spawn-fcgi
启动spawn-fcgi
~ sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -C 5 -p 9000 -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
spawn-fcgi: child spawned successfully: PID: 2940
# 查看进程
~ ps -axu|grep cgi
root 2940 0.0 0.0 55196 6292 ? Ss 15:40 0:00 /usr/bin/php-cgi
root 2941 0.0 0.0 55196 2840 ? S 15:40 0:00 /usr/bin/php-cgi
root 2942 0.0 0.0 55196 2840 ? S 15:40 0:00 /usr/bin/php-cgi
root 2943 0.0 0.0 55196 2840 ? S 15:40 0:00 /usr/bin/php-cgi
root 2944 0.0 0.0 55196 2840 ? S 15:40 0:00 /usr/bin/php-cgi
root 2945 0.0 0.0 55196 2840 ? S 15:40 0:00 /usr/bin/php-cgi
2.4 修改Nginx配置文件
- PHP文件运行目录,/home/conan/php
- 设置访问域名,ubuntu.php.me
- 设置对.php文件,通过fastcgi转向127.0.0.1:9000解析
编辑文件:nginx.conf
~ sudo vi /etc/nginx/nginx.conf
http {
# 忽略部分代码
server {
set $htdocs /home/conan/php;
listen 80;
server_name ubuntu.php.me;
location / {
root $htdocs;
autoindex on;
index index.php index.html;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $htdocs$fastcgi_script_name;
}
}
}
重启nginx服务器
~ sudo /etc/init.d/nginx restart
Restarting nginx: nginx.
2.5 设置host
在host中把域名ubuntu.php.me映射为本机IP 127.0.0.1
~ sudo vi /etc/hosts
127.0.0.1 ubuntu.php.me
用ping测试ubuntu.php.me
~ ping ubuntu.php.me
PING ubuntu.php.me (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.040 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.067 ms
2.6 PHP测试文件
在目录 /home/conan/php 中,新建一个PHP的文件env.php
~ mkdir /home/conan/php
~ vi /home/conan/php/env.php
<?php phpinfo(); ?>
2.7 在浏览器中,查看PHP运行情况
在浏览器中打开HTTP地址:http://ubuntu.php.me/env.php
注:在浏览器端的host文件中,设置ubuntu.php.me域名对应到IP的映射。
这样我们完成了PHP在Ubuntu中的安装和配置了!
为什么你装spawn 而不是php-fpm呢? 后者有什么性能问题吗
没测过性能,spawn用了很多年了没什么问题,就一直用了。
我电脑的系统是win7 在virtualbox里装了个centOS
我现在想要让虚拟机连上外网 同时同时也能从win7访问centOS上的web服务器
但现在两个系统都可以访问网络了 我也能从win7通过SSH远程登录centOS 可就是不能访问centOS上的网站
这是哪儿出了问题? 有没有靠谱教程推荐,我在网上找到都没成功
你要检查一下虚拟机的网络,是NAT还是桥接?按照你的这种这要,最好使用桥接的方式。虚拟机和宿主,都会分配到内网的路由IP上面。
我没有写virtualbox的教程,KVM到是有配置教程。
我是用桥接 宿主IP是 192.168.1.105 我给虚拟机设置静态IP是192.168.1.108 它的网关就是宿主的IP 这样对吗? 还是我理解有误? 网关就用我家里内网的网关?
网关是路由地址,一般是192.168.1.1;如果能ping通,应该就可以访问。另外,上图中混杂模式,可以改成“全部允许”
见下面截图
知道怎么回事了 是centOS防火墙阻止外界对80端口的访问了 我居然忘了设置这个
CentOS不熟,呵呵
我用php的system(“cat runGO.R|R –vanilla –args “.$_POST[‘enrich’],$stdout)调用R脚本,要到了要做几秒钟运算的时候就停住了,php返回 R执行了一半,然后php继续执行后面的命令了。是否是apache或者php的设置上出了些问题?
我其实不建议用PHP调R,很不方便,用Java会好很多。
楼主介绍的很详细,一路走下来很流畅。特地登录道声谢谢!
🙂