centos搭建php、mysql、nginx环境

11 篇文章 0 订阅

虚拟机安装的centos

1、安装php

su - root 
//也可以su root

yum -y install epel-release

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum search php72w 
//这个与安装无关,只是用来看有没有对应的包

yum -y install php72w 
//这个安装完之后php -v的命令还用不了

yum -y install php72w-cli php72w-common php72w-devel php72w-mysql php72w-fpm php72w-pdo php72w-gd php72w-mbstrig php72w-bcmatch 
//这个装完之后就可以看到php -v和php-fpm -v,版本号应该是一样。

lnmp安装的php、php-fmp可能版本号不一样,甚至php-fpm很老,老到不支持一些新框架的语法。导致各种语法错误

 

2、安装mysql

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
service mysql start

最后一行是启动mysql服务的,因为没有设置开机启动,所以要自行启动

 

3、安装nginx

yum install nginx
service nginx start

最后一行是启动nginx服务的,

 

4、若干配置

gedit /etc/php.ini &
;cgi.fix_pathinfo=1
改为
cgi.fix_pathinfo=0

gedit /etc/php-fpm.d/www.conf &
user = apache
group = apache
改为
user = nginx
group = nginx

因为安装的centOS是server GUI版本所以就没用命令行形式修改文本了

gedit /etc/php-fpm.d/www.conf & 直接在文本界面修改

cgi.fix_pathinfo=0为什么要这么配置不记得了

nginx配置:

修改/etc/nginx/nginx.conf的server模块

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  192.168.235.132; ###changed from _
        root         /usr/share/nginx/html;
        index   index.php index.html index.htm; ### added

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

		#added
        location ~ .php$ {
            root /usr/share/nginx/html;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi.conf;
        }
    }
	

    added配置应该另起一个conf放在/etc/nginx/conf.d/目录下,listen只需要80即可,上面是为了偷懒,新建文件的话便于理解

/usr/share/nginx/html/目录下创建phpinfo.php

输入以下内容

<?php phpinfo();?>

在浏览器中输入http://localhost/phpinfo.php就可以看到php的相关信息。其他机器输入centOS的ip地址即可

 

小贴士:

1.

Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Socket.
其中TCP是IP加端口,可以跨服务器.而UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.用哪种取决于你的PHP-FPM配置:
方式1:
php-fpm.conf: listen = 127.0.0.1:9000      ## /etc/php-fpm.d/www.conf
nginx.conf: fastcgi_pass 127.0.0.1:9000;   ## /etc/nginx/nginx.conf
方式2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;
其中php-fpm.sock是一个文件,由php-fpm生成,类型是srw-rw----.

UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.这种通信方式是发生在系统内核里而不会在网络里传播.UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了.

UNIX Domain Socket:
Nginx <=> socket <=> PHP-FPM
TCP Socket(本地回环):
Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM
TCP Socket(Nginx和PHP-FPM位于不同服务器):
Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM

2.

报错403 forbidden
sestatus查看状态
gedit /etc/selinux/config &
#SELINUX=enforcing
改为
SELINUX=disabled

 

3.

500一般是代码错误,比如引用了其他库,但是本地没装,比如Smarty
https://www.smarty.net/
下载Source Code

 

4.

$_SERVER['SCRIPT_URL']是空值
gedit /etc/nginx/fastcgi_params &
加一行
fastcgi_param  SCRIPT_URL         $request_uri;
最好加在fastcgi_param  REQUEST_URI        $request_uri;下一行,只是因为两个$request_uri好看些

 

5.

gedit 在root权限下显示行号不起作用,非root又没有偏好设置
本来是[su root]切换到root账号
改为[su - root]切换到root账号即可

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值