sentOs服务器上 配置 PHP,NGINX,MYSQL

Nginx的安装

之前在学习 Vue 的时候搭建过:

https://mp.csdn.net/postedit/88545523

PHP配置:

参考链接:https://blog.csdn.net/qq_32080545/article/details/78894792

https://segmentfault.com/a/1190000017570008?utm_source=tag-newest#articleHeader1

一. 源码安装php7.2

    选择需要的php版本

    从 php官网: http://cn2.php.net/downloads.php 选择需要的php版本,选择.tar.gz 的下载包,点击进入,选择中国的本地语言包,复制这个下载地址比说说这里选择的是php7.2选择本地语言

最后得到的下载的地址就是:
http://cn2.php.net/get/php-7.2.0.tar.gz/from/this/mirror
(参照这个方法就可以随时获取最新版本的PHP了)
2.下载php源码

  •     选择一个位置存放文件
 cd /usr/src/  
  •   下载刚刚选好的php压缩包
  wget http://cn2.php.net/get/php-7.2.0.tar.gz/from/this/mirror


    但是我们下载下来看到并不是我们要的php-7.2.0.tar.gz 类似的压缩文件,而是一个mirror的文件,很简单,我们给文件重命名就可以了

mv mirror php-7.2.0.tar.gz

   3.安装php所需要的依赖

yum install gcc 
yum install libxml2 
yum install libxml2-devel -y 
yum install openssl openssl-devel -y 
yum -y install curl-devel 
yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y 
yum install bzip2-devel.x86_64 -y 
yum install libXpm-devel -y 
yum install gmp-devel -y 
yum install -y icu libicu libicu-devel 
yum install php-mcrypt libmcrypt libmcrypt-devel -y 
yum install postgresql-devel -y 
yum install libxslt-devel -y 
yum -y install libjpeg-devel

4.解压编译

tar -xzxvf php-7.2.0.tar.gz
cd php-7.2.0

设置编译需要加载的模块
 

./configure --prefix=/usr/local/php --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu/--enable-ftp --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --with-iconv --with-xpm-dir=/usr

编译:

make clean && make && make install

5. 复制配置文件

cp php.ini-development /usr/local/php/lib/php.ini

6. 设置全局的php命令

vim /etc/profile

在文件最后添加:

PATH=$PATH:/usr/local/php/bin
export PATH

然后执行 命令

source /etc/profile

此时php就是全局命令了,可以通过php -v 查看php版本信息或者php -m 看看刚刚编译加载的模块了

  7. 配置PHP-fpm

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
 
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
 
cp /usr/src/php-7.2.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
 
chmod +x /etc/init.d/php-fpm

启动php-fpm

/etc/init.d/php-fpm start

(可选)配置php-fpm自启动,如果存在这个文件,这步省略
创建php-fpm启动脚本

vim /etc/init.d/php-fpm

插入如下内容:

#!/bin/sh  
# chkconfig:   2345 15 95

# description:  PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation \

# with some additional features useful for sites of any size, especially busier sites.
# DateTime: 2016-09-20

# Source function library.  
. /etc/rc.d/init.d/functions  

# Source networking configuration.  
. /etc/sysconfig/network  

# Check that networking is up.  
[ "$NETWORKING" = "no" ] && exit 0  

phpfpm="/usr/local/php/sbin/php-fpm"  
prog=$(basename ${phpfpm})  

lockfile=/var/lock/subsys/phpfpm

start() {  
    [ -x ${phpfpm} ] || exit 5  
    echo -n $"Starting $prog: "  
    daemon ${phpfpm}
    retval=$?  
    echo  
    [ $retval -eq 0 ] && touch $lockfile  
    return $retval  
}  

stop() {  
    echo -n $"Stopping $prog: "  
    killproc $prog -QUIT  
    retval=$?  
    echo  
    [ $retval -eq 0 ] && rm -f $lockfile  
    return $retval  
}  

restart() {  
    configtest || return $?  
    stop  
    start  
}  

reload() {  
    configtest || return $?  
    echo -n $"Reloading $prog: "  
    killproc ${phpfpm} -HUP  
    RETVAL=$?  
    echo  
}  

force_reload() {  
    restart  
}  

configtest() {  
  ${phpfpm} -t
}  

rh_status() {  
    status $prog  
}  

rh_status_q() {  
    rh_status >/dev/null 2>&1  
}  

case "$1" in  
    start)  
        rh_status_q && exit 0  
        $1  
        ;;  
    stop)  
        rh_status_q || exit 0  
        $1  
        ;;  
    restart|configtest)  
        $1  
        ;;  
    reload)  
        rh_status_q || exit 7  
        $1  
        ;;  
    status)  
        rh_status  
        ;;  
    *)  
        echo $"Usage: $0 {start|stop|status|restart|reload|configtest}"  
        exit 2  
esac    

添加到开机启动项

chkconfig --add php-fpm

二、yum安装nginx

    执行yum安装命令

 yum install nginx

    关于yum安装nginx的一些位置说明:
https://www.cnblogs.com/odbo/p/5295690.html
    修改配置文件已支持php

    cd /etc/nginx/

    删掉原本的nginx.conf,复制一份nginx.conf.default的默认配置

rm -rf nginx.conf
cp nginx.conf.default nginx.conf
vim nginx.conf

server里面的配置:
在location / 的中index增加index.php ,增加URL重写读取;
解开location ~ .php$的注释,修改fastcgi的路径,最终server部分配置内容为:

server {
         listen       80;
         server_name  localhost;

        #charset koi8-r;
  
          #access_log  logs/host.access.log  main;
  
          location / {
              root   html;
              # 修改1:这里新增了index.php
              index index.html index.htm index.php;
              # 修改2:这里新增url重写(path)
              try_files $uri $uri/ /index.php$is_args$args;
          }
  
          #error_page  404              /404.html;
  
          # redirect server error pages to the static page /50x.html
          #
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
  
             root   html;
          }
  
          # proxy the PHP scripts to Apache listening on 127.0.0.1:80
          #
          #location ~ \.php$ {
          #    proxy_pass   http://127.0.0.1;
          #}
  
          # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
          #
	#修改3:解开php支持的注释
          location ~ \.php$ {
              root           html;
              #默认就使用php-fpm
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              #修改4:修改fastcig的路径
              fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
  
          # deny access to .htaccess files, if Apache's document root
          # concurs with nginx's one
          #
          #location ~ /\.ht {
          #    deny  all;
          #}
      }

 保存配置文件。
3.启动nginx

service nginx start

4.(可选)设置nginx开机自启动
创建nginx启动命令脚本

vi /etc/init.d/nginx

插入以下内容:

#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

设置执行权限

chmod a+x /etc/init.d/nginx

注册成服务

chkconfig --add nginx

设置开机启动

chkconfig nginx on 

三、编写测试文件

vim /usr/share/nginx/html/phpinfo.php

比如编辑一个phpinfo

<?php
phpinfo();

最后就可以访问刚刚这个文件了
这里写图片描述

 MySQL安装

https://www.cnblogs.com/suxiaoman/p/7693066.html

开启扩展PDO和MYSQL_PDO

参考链接:https://blog.csdn.net/u010533511/article/details/50414767

我的 php 安装的目录为 “/software/php-7.3.3/”,注意路径根据安装的目录修改

1.进入安装 php 的 /ext/pdo 目录

 cd /software/php-7.3.3/ext/pdo

2. 执行如下命令

 /software/php-7.3.3/bin/phpize

3. 配置扩展PDO

 ./configure --with-php-config=/software/php-7.3.3/bin/php-config --enable-pdo=shared

4. 编译安装PDO

make install

 成功则出现

/software/php-7.3.3/lib/php/extensions/no-debug-non-zts-20180731

也可在 phpinfo() 中查看:

说明在 /software/php-7.3.3/lib/php/extensions/no-debug-non-zts-20180731/ 目录下生成了 pdo.so 文件

5.在php配置文件中加上

extension="/software/php-7.3.3/lib/php/extensions/no-debug-non-zts-20180731/pdo.so"

 步骤:

(1)不确定 php.ini 位置的情况下,可在 phpinfo() 下查看

 vim /software/php-7.3.3/lib/php.ini

(2)添加:

 

注意:前面的分号不要加

6.在PHP源码包中进入 pdo_mysql

cd /software/php-7.3.3/ext/pdo_mysql

7.执行如下命令

 /software/php-7.3.3/bin/phpize

8. 配置 pdo_mysql

 ./configure --with-php-config=/software/php-7.3.3/bin/php-config --with-pdo-mysql=/software/mysql-5.6.31 --with-zlib-dir=/software/zlib-1.2.11

 --with-php-config=/software/php-7.3.3/bin/php-config   :php-config文件所在目录

--with-pdo-mysql=/software/mysql-5.6.31    : mysql文件所在目录

--with-zlib-dir=/software/zlib-1.2.11    :zlib文件所在目录

9.编译,安装 pdo_mysql

make && make install

 成功则出现

/software/php-7.3.3/lib/php/extensions/no-debug-non-zts-20180731

也可在 phpinfo() 中查看:

说明在 /software/php-7.3.3/lib/php/extensions/no-debug-non-zts-20180731/ 目录下生成了 pdo_mysql.so 文件

10.在php配置文件中加上

extension="/software/php-7.3.3/lib/php/extensions/no-debug-non-zts-20180731/pdo.so"

 步骤:

(1)

 vim /software/php-7.3.3/lib/php.ini

  (2)添加:


11.重启 PHP

 service php-fpm restart

12.重启 Nginx

 nginx -s reload

13. 在你的服务器访问目录下新建文件 phpinfo.php 来测试一下

<?php
  echo phpinfo();
?>

 14.访问 ip/phpinfo.php ,ctrl + F 查找 PDO 的相关信息,显示如下信息表示安装成功

遇到的问题:

Nginx访问PHP文件的File not found错误处理,两种情况

参考文章链接:https://blog.csdn.net/icandoit_2014/article/details/71454481

第一种情况

更改配置文件nginx.conf
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
替换成下面

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

然后重新加载nginx配置文件
/etc/init.d/nginx reload

第二种情况

两种解决方法:
第一种,就是把你root文件夹设为其他用户允许
第二种,找到你的php-fpm的配置文件,找到下面这段,把apache替换成你要的用户组

; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

猜你喜欢

转载自blog.csdn.net/Lyj1010/article/details/88751529