小白安装php(centos+nginx+php5)

来源:互联网 发布:51单片机如何下载程序 编辑:程序博客网 时间:2024/05/16 12:38

工作好几年,一直做java,一直没玩过php,现在公司要搞个商城,小公司没精力重新开发,准备买个别人的,做二次开发。人家的是php,没办法,就叫我先把他们的项目跑起来。

先吐槽一下,国内这些做产品的真的太他妈水了,php也水。php没有向后兼容,基本算是完全固定版本。这个做产品的也不说要什么样的版本,版本太高报错,版本太低也报错

,本人外行,以为像java,弄个比较新的版本总没问题。遇到的种种问题就不详细说了,大概说下经过。

1、确定php版本

先安装的是5.5,各种报错,同事的5.4没问题,确定用5.4。

2、安装http服务

因为服务器已安装nginx,所以直接用ngxin,不用apache httpd。这里要说下,apache和nginx运行php的原理是不一样的。apache是直接加载php模块自己解析php脚本,nginx是转发,接收到php请求就把请求转发到php-fpm,所以nginx下一定要有php-fpm。还有就是比较老的php是没有这个程序的,需要自己去下载

3、安装php

主要是要注意一些选项

./configure --enable-fpm --with-mysql --prefix=/usr/local/php-5.4.45
--enable-fpm:启用php-fpm
--with-mysql:应该是安装mysql模块
--prefix:安装目录,最好指定,不然要卸载只能一个一个去删了
其他一些参数
--with-libdir=lib64:设置系统lib目录,之前安装5.1的版本,默认的lib目录是lib而不是lib64,导致不能安装,5.4没发现此问题
3、修改php-fpm配置文件

cp ~/php-5.4.45/php.ini-production /usr/local/php-5.4.45/lib/php.ini

/usr/local/php-5.4.45/lib/php.ini这个就是php程序的配置文件,默认请求下php的配置文件放在安装目录的lib下

cd /usr/local/php-5.4.45/

cp etc/php-fpm.conf.default etc/php-fpm.conf

vi etc/php-fpm.conf

; Unix user/group of processes; Note: The user is mandatory. If the group is not set, the default user's group;       will be used.user = www-datagroup = www-data

将user和group改为要运行php-fpm的用户和组,这个必须是已存在的用户,如果不存在会报错,创建用户useradd -M -r -s /sbin/nologin www-data

启动

sbin/php-fpm 

4、配置nginx,取消默认的 PHP 配置块的注释,并修改为下面的内容

location / {
#proxy_pass http://localhost;
root /var/www;
index index.html index.htm index.php;
    }

location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

/var/www/这个目录其实是apache httpd网页的默认目录,nginx的默认网页目录不是这个,这个可以是其他的

重启nginx

5、测试

创建一个测试文件放到/var/www/目录下

echo "<?php phpinfo(); ?>" >> /var/www//index.php

新手最好创建这个文件,这个页面可以提供php的很多信息,打开浏览器访问localhost/index.php就可以看到php的系统信息了。

因为我的nginx之前拿来做负载均衡,用了upstream模块功能,localhost的所有请求都被转发到其他地方了,所以这个页面不能打开,删除nginx的相关配置就可以了

6、安装其他的php项目

把其他的php项目复制到/var/www/目录,php项目一般都带有应用的初始化功能,这个过程遇到两个问题,记录下

1)系统时区问题,修改php.ini的date.timezone =Asia/Shanghai,但是php.ini文件在哪呢?默认是在安装目录的lib下,我的是在/usr/local/php-5.4.45/lib下,这个目录下可能没有php.ini文件,如果前面没有执行拷贝php.ini操作的话。如果没有就要从源码拷贝一个预先设置的php.ini文件到此目录。也有可能php程序读的配置文件不在这个目录下,这样我们在这里修改php.ini就没有作用了,如何确定配置文件的目录呢?我们建立的测试文件就有大用处了,访问index.php页面,找到

Configuration File (php.ini) Path/usr/local/php-5.4.45/lib后面的值就是配置文件的目录了,修改后杀掉php-fpm的主进程,然后再启动

[root@VM_211_154_centos ~]# ps -ef|grep fpm
root      7404  2563  0 13:10 pts/1    00:00:00 vi /usr/local/php-5.4.45/etc/php-fpm.conf
root     10607     1  0 14:10 ?        00:00:00 php-fpm: master process (/usr/local/php-5.4.45/etc/php-fpm.conf)
www-data 10609 10607  0 14:10 ?        00:00:14 php-fpm: pool www
www-data 10924 10607  0 14:23 ?        00:00:12 php-fpm: pool www
www-data 11462 10607  0 14:31 ?        00:00:09 php-fpm: pool www
root     13390  7421  0 15:25 pts/0    00:00:00 grep fpm
[root@VM_211_154_centos ~]# 

这个php-fpm: master process就是主进程

kill -9 10607

/usr/local/php-5.4.45/sbin/php-fpm

2)扩展库问题

我的这个项目要求curl扩展库,但我没安装,所以要新增curl扩展库。

确保系统已安装curl,从源码编译curl扩展库

cd ~/php-5.4.45/ext/curl/

/usr/local/php-5.4.45/bin/phpize

./configure --with-curl --with-php-config=/usr/local/php-5.4.45/bin/php-config

make

phpize是用来扩展php扩展模块的,具体的不太了解。编译好后会在curl下产生modules/curl.so,我们要把这个共享库放到php的扩展文件夹里,问题又来了,扩展文件夹在哪呢?在php.ini中extension_dir所指的目录就是。但是php.ini中可能没有配置这个(我的就没有),访问index.php页面看看

extension_dir/usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525/usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525

我的是在这个目录下,而且还没有这个目录,需要自己新建。

mkdir -p /usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525

把刚才编译好的扩展模块放到这里

mv ~/php-5.4.45/ext/curl/modules/curl.so /usr/local/php-5.4.45/lib/php/extensions/no-debug-non-zts-20100525/

重启php-fpm


搞了两天终于搞好了

0 0
原创粉丝点击