如何在 CentOS 7 上使用 Nginx 和 PHP-FPM 7.1 安装 Laravel 5.x
在此页
- 第 1 步 - 安装 EPEL 存储库
- 第 2 步 - 安装 Nginx
- 第 3 步 - 安装和配置 PHP-FPM 7.1
- 第 4 步 - 安装 MariaDB 服务器
- 第 5 步 - 安装 PHP Composer
- 第 6 步 - 为 Laravel 配置 Nginx 虚拟主机
- 第 7 步 - 安装 Laravel
- 第 8 步 - 配置 SELinux
- 第 9 步 - 测试 Laravel
- 参考资料
Laravel 是一个遵循 MVC(模型-视图-控制器)设计模式的开源 PHP 框架。它由 Taylor Otwell 于 2011 年创建,旨在提供 CodeIgniter (CI) 框架的高级替代方案。 2011 年,Laravel 项目发布了版本 1 和 2,今年发布了 5.4 版本,其中包含许多改进,例如命令行 (CLI) 支持命名为 artisan、对更多数据库类型的内置支持和改进的路由。
在本教程中,我将向您展示如何在 CentOS 7 系统上安装带有 Nginx Web 服务器、PHP-FPM 7.1 和 MariaDB 的 Laravel Web Framework。我将逐步向您展示如何在 CentOS 7 服务器上的 LEMP 堆栈下安装和配置 Laravel。
本教程也适用于 Ubuntu 上的 Laravel。
先决条件:
- CentOS 7 服务器。
- 根权限。
第 1 步 - 安装 EPEL 存储库
EPEL 或 Extra Package for Enterprise Linux 是一个额外的软件包存储库,它提供 CentOS 官方存储库中未包含的有用软件包。它可以安装在基于 RPM 的 Linux 发行版上,例如 CentOS 和 Fedora。
在本教程中,我们需要 EPEL 存储库来安装 Nginx,因为官方 CentOS 存储库中不存在 Nginx 包。使用下面的 yum 命令安装 EPEL 存储库。
yum -y install epel-release
EPEL 存储库已安装。
第 2 步 - 安装 Nginx
在本教程中,我们将在 LEMP 堆栈下运行 Laravel。 Nginx 是 LEMP 堆栈的 Web 服务器部分,可以从 EPEL 存储库安装。
使用 yum 从 EPEL 存储库安装 Nginx 1.10。
yum -y install nginx
安装完成后,启动 Nginx 并将其添加为开机自启动。
systemctl start nginx
systemctl enable nginx
Nginx 在端口 80 上运行,使用下面的 netstat 命令检查它。
netstat -plntu

如果您收到 Command not found 结果,请安装 net-tools 包,如下所示。
yum -y install net-tools
第 3 步 - 安装和配置 PHP-FPM 7.1
Laravel 可以安装在 PHP 版本 >= 5.6.4 的服务器上。在本教程中,我们将使用 Laravel 支持的最新版本 PHP 7.1。
CentOS 基础存储库中不存在 PHP 7.1,我们需要从名为 webtatic 的第三方存储库安装它。
使用此 rpm 命令安装 webtatic 存储库。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
现在我们可以使用一个 yum 命令安装 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
我们的CentOS 7系统已经安装了PHP 7.1。
接下来,通过使用 vim 编辑配置文件 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 将在套接字文件下运行,而不是使用服务器端口。将监听值改为路径/run/php-fpm/php-fpm.sock,如下图。
listen = /run/php-fpm/php-fpm.sock
套接字文件所有者将是 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
保存文件并退出 vim,然后启动 PHP-FPM 并使其在引导时运行。
systemctl start php-fpm
systemctl enable php-fpm
PHP-FPM 正在socket 文件下运行,使用下面的命令检查它。
netstat -pl | grep php-fpm.sock

PHP和PHP-FPM 7.1的安装配置已经完成。
第 4 步 - 安装 MariaDB 服务器
您可以为 Laravel 项目使用 MySQL 或 PostgreSQL。在本教程中,我将使用 MariaDB 数据库服务器。它在 CentOS 存储库中可用。使用下面的 yum 命令安装 MariaDB-server。
yum -y install mariadb mariadb-server
安装完成后,启动 mariadb 并使其在引导时启动。
systemctl start mariadb
systemctl enable mariadb
MariaDB 已启动并在端口 3306 上运行,使用 netstat 命令检查它。
netstat -plntu

接下来,使用下面的 mylsq_secure_installation 命令为 MariaDB 配置 root 密码。
mysql_secure_installation
输入您的 mariadb root 密码,删除匿名用户等。
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
MariaDB 的安装和配置已经完成。
第 5 步 - 安装 PHP Composer
PHP composer 是 PHP 编程语言的包管理器。它创建于 2011 年,灵感来自 Node.js npm 和 Rubys bundler 安装程序。使用 curl 命令安装作曲家。
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
安装完成后,尝试使用 composer 命令,您将看到如下结果。
composer

在 CentOS 7 上安装了 PHP Composer。
第 6 步 - 为 Laravel 配置 Nginx 虚拟主机
在这一步中,我们将为 Laravel 项目创建 nginx 虚拟主机配置。我们需要为此 Laravel 安装定义 Web 根目录,我将使用 /var/www/laravel 目录作为 Web 根目录。
使用下面的 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 laravel.hakase-labs.co;
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

Laravel 的 nginx 虚拟主机配置已经完成。
第 7 步 - 安装 Laravel
在安装 Laravel 之前,我们需要在服务器上安装 unzip。
yum -y install unzip
现在进入laravel web根目录/var/www/laravel。
cd /var/www/laravel
Laravel 提供了两种在服务端安装框架的方式。我们可以使用 laravel 安装器安装 Laravel,也可以使用 PHP composer 安装。在本教程中,我将通过使用 composer 命令创建一个新项目来安装 Laravel。
运行下面的命令来安装 Laravel。
composer create-project laravel/laravel .

等待 Laravel 安装完成。这可能要花点时间。

安装完成后,将Laravel web根目录的属主修改为nginx用户,并将存储目录的权限修改为755,命令如下。
chown -R nginx:root /var/www/laravel
chmod 755 /var/www/laravel/storage
Laravel 安装已经完成。
第 8 步 - 配置 SELinux
在本教程中,Laravel 将在 SELinux Enforcing 模式下运行。要检查 SELinux 状态,请运行以下命令。
sestatus

结果是 SELinux 在 Enforcing 模式下运行。
接下来,我们需要安装CentOS 7的SELinux管理工具。
在服务器上安装 policycoreutils-python。
yum -y install policycoreutils-python
现在我们需要更改 Laravel 目录的上下文,然后使用 restorecon 命令应用更改。运行 SELinux 管理命令,如下所示。
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/public(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/app(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/bootstrap(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/database(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/resources(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/routes(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/vendor(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/laravel/tests(/.*)?'
restorecon -Rv '/var/www/laravel/'
Laravel 的 SELinux 配置已完成。

第 9 步 - 测试 Laravel
打开您的网络浏览器并输入您服务器的 Laravel URL。我们已经在 Nginx 虚拟主机文件中为 Laravel 定义了域名。我的是 laravel.hakase-labs.co。
当你访问该域名时,你会看到 Laravel 主页。

Laravel 在 CentOS 7 上安装 Nginx、PHP-FPM7 和 MariaDB 已经成功。
参考
- https://laravel.com/docs/5.4/installation