使用Nginx&PHP-FPM在Centos7上部署Laravel5.X-折腾笔记

如何在Centos7上通过nginx&php-fpm部署laravel5.X
Laravel是一个开源的MVC PHP框架。这篇文章将展示,如何在Centos7服务器上使用Nginx Web服务器安装Laravel Web框架。

Step1-安装EPEL源

EPEL是提供给Linux的第三方源,提供大量官方源未提供的软件。在这篇文章中,我们需求EPEL仓库,安装Centos7官方仓库中未提供的Nginx软件包。
安装EPEL仓库仅需要使用以下命令:

yum -y install epel-release

EPEL仓库已经被安装。

Step2 – 安装Nginx

在这篇文章中,我们在LEMP栈中运行Laravel。Nginx Web服务是LEMP栈中的一部分,我们可以使用EPEL栈安装Nginx。
使用yum命令从EPEL仓库中安装Nginx1.10

yum -y install nginx

当安装完成,启动nginx 并且设置nginx为开机启动。

systemctl start nginx
systemctl enable nginx

Nginx运行在80端口,通过netstat命令可以检查运行状态。

netstat -plntu

如果看到“Command not found”提示,就需要安装net-tools包。

yum -y install net-tools

 

Step 3- 安装并设置PHP-FPM7.1

当PHP版本>=5.6.4时,Laravel可以安装到服务器上,这篇文章中,我们使用支持Laravel的最新版的PHP7.1。
Centos7官方仓库中没有包含PHP7.1,我们需要第三方仓库webtatic安装PHP7.1
使用RPM命令安装webtatic仓库。

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

现在我们可以使用一个命令安装PHP-FPM和Laravel需要的扩展。

yum install -y php71w php71w-curl php71w-common php71w-cli php71w-mysql php71w-mbstring php71w-fpm php71w-xml php71w-pdo php71w-zip

如果安装不上,也可以在https://repo.webtatic.com/yum/el7/x86_64/RPMS/手动获取源,手动安装:

rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/mod_php71w-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-cli-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-common-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-fpm-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-mbstring-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-mysql-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-pdo-7.1.19-1.w7.x86_64.rpm
rpm -Uvh https://repo.webtatic.com/yum/el7/x86_64/RPMS/php71w-xml-7.1.19-1.w7.x86_64.rpm

 

PHP 7.1已经被安装到Centos7.
接下来需要编辑配置文件php.ini来配置PHP。

vim /etc/php.ini

取消下面行的注释,并且将值设为0.

cgi.fix_pathinfo=0

保存文件,并且推出编辑器。
接下来编辑php-fpm文件www.conf

vim /etc/php-fpm.d/www.conf

PHP-FPM将运行的nginx用户、用户组下,改变下面两行的值为nginx。

user = nginx
group = nginx

PHP-FPM将监听一个socket文件,代替原始的监听服务器端口。将“listen”值设为“/run/php-fpm/php-fpm.sock”,如下所示。

listen = /run/php-fpm/php-fpm.sock

Socket文件的owner是nginx用户,权限为660。取消注释下列行,并将值设为。

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

设置环境变量,取消下列行注释,并将值设为:

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

保存文件,并且推出编辑器。然后启动PHP-FPM并设为开机启动。

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM在socket文件下运行使用下列命令检查。

netstat -pl | grep php-fpm.sock

到这里,PHP和PHP-FPM7.1已经安装并设置完毕。

Step 4 – 安装 PHP Composer

PHP composer是一个PHP语言的包管理工具,它受Node.js “npm” 和 Ruby’s “Bundler” 影响,在2011年被创建。
使用curl命令,安装Composer。

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

当安装完毕,使用composer命令,将会看到下面的内容。

composer

PHP Composer已经安装降到Centos7操作系统中。

Step 5 – 设置Laravel Nginx 虚拟主机。

这个步骤中,我们将创建nginx虚拟主机,并设置为Laravel。为了Laravel安装,我们需要定义root文件夹,我们将使用/var/www/laraval 文件夹作为roo文件夹。
使用mkdir命令创建文件夹:

mkdir -p /var/www/laravel

接下来,到nginx文件夹,在conf.d目录中创建一个新的虚拟主机配置文件laravel.conf。

cd /etc/nginx
vim conf.d/laravel.conf

粘贴文件内容如下:

server {
listen 80;
listen [::]:80 ipv6only=on;

# Log files for Debugging
access_log /var/log/nginx/laravel-access.log;
error_log /var/log/nginx/laravel-error.log;

# Webroot Directory for Laravel project
root /var/www/laravel/public;
index index.php index.html index.htm;

# Your Domain Name
server_name blog.claves.me;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

保存文件,并且退出vim文件编辑器。
测试nginx配置文件,并且确认其没有错误,然后再重启nginx服务器。

nginx -t
systemctl restart nginx

 

Step 6 – 安装Laravel

在安装laravel之前,我们还需要在服务器上安装unzip。

yum -y install unzip

现在我们需要切换到Laravel web 根目录“”
cd /var/www/laravel

Step 7 – 设置SELinux

不关闭SeLinux需要做很多配置,所以为了简易,直接把Selinux关闭。

临时关闭:

setenforces  0

永久关闭:

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

Step 7 – 打开防火墙

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

Step 8 – 安装php包

方法一:直接安装

yum search php71w
yum -y install  php71w-pecl-mongodb  php71w-pecl-redis php71w-snmp php71w-soap php71w-devel php71w-odbc  php71w-pdo

 

方法二:pecl安装

yum install php71w-pear -y
yum -y install php71w-devel
yum -y install gcc make gcc-c++ cmake cc
pecl install oci8

问题:

1、json返回的所有数据类型全变成了string

参考链接:https://stackoverflow.com/questions/31527050/laravel-5-controller-sending-json-integer-as-string

解决方法:

yum remove php71w-mysql
yum install php71w-mysqlnd
systemctl restart nginx
systemctl restart php-fpm