【LNMP】linux7系统中搭建LNMP 环境全过程

栏目: PHP · 发布时间: 5年前

内容简介:在此前的文章中,详细记录了在 RHEL6/CentOS6上搭建 LAMP 的过程,随着时间的流逝,操作系统已经到了7.x版本,PHP 版本已经发展到了7.x, MySQL 版本也进化到了8.x,所以我们今天就来记录一下,在Linux7版本上搭建 LNMP环境 的全过程。按照惯例,先列一下我们最终的操作系统和各软件版本注:

在此前的文章中,详细记录了在 RHEL6/CentOS6上搭建 LAMP 的过程,随着时间的流逝,操作系统已经到了7.x版本,PHP 版本已经发展到了7.x, MySQL 版本也进化到了8.x,所以我们今天就来记录一下,在 Linux 7版本上搭建 LNMP环境 的全过程。

开发环境

按照惯例,先列一下我们最终的操作系统和各软件版本

  • RHEL/CentOS 7
  • Nginx 1.12
  • PHP 7.2
  • MySQL 8.0

注:

基本所有的安装都是通过 yum 来完成,所以需要确保你的服务器能访问到公网。

另外确保你的 yum 安装了 epel 源。考虑到国内 GFW 的威力,也可以安装其他靠谱的源。

$ yum install epel-release

Nginx

安装&启动

nginx 的安装非常简单

$ yum -y install nginx

安装成功后,可以通过下面的命令启动、查看及重启 nginx

$ systemctl start nginx         # 启动
$ systemctl status nginx        # 查看状态
$ systemctl enable nginx        # 激活开机自启动
$ systemctl restart nginx       # 重启

配置

默认的 nginx 会在 /etc/nginx/default.conf 中设置默认的配置信息,不过考虑到之后可以搭建多套 web 服务,我们就把配置文件统一整理一下。

/etc/nginx/conf.d/ 目录下其实就是放置我们自定义的 web 服务配置文件的,每次 nginx 启动后,会加载该目录下的配置。我们可以在 /etc/nginx/default.conf 文件中找到下面的代码:

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

我们新建一个默认的 default.conf 文件放置到 /etc/nginx/conf.d/ 目录中,同时把原本位于 /etc/nginx/default.conf 中的 server 部分信息 剪切 过来(如果不是剪切,你的自定义的配置会被默认的配置所覆盖)。

文件中写入下面的内容:

server {
    listen       80;                                # 监听端口
    server_name  localhost;
    root   /usr/share/nginx/html;                   # web 服务根目录

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        index  index.php index.html index.htm;      # 记得写入 index.php
    }

    #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   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {                             # 同样为了  PHP  而配置
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location @extensionless-php {
        rewrite ^(.*)$ $1.php last;
    }
}

因为有些内容是为了 PHP能正确解析而加入的,关于 PHP 的内容,我们在后面章节会详细讨论。

如果我们需要在其他端口开启新的 web 服务,记得在 /etc/nginx/conf.d 目录下新建 conf 文件并仿照默认的配置文件设置好端口和根目录就好了。

配置完成后记得重启 nginx 服务。

更多关于 nginx 负载均衡、反向代理等内容就不在这里做过多的介绍,回头有需要可以单独开文章做进一步详细介绍。

关于开放相关端口,在另一篇文章 【LINUX】Linux7中的防火墙 - Firewall 中做了更详细的介绍,我们可以通过 firewall 打开默认的80端口。

PHP7

安装

PHP7 的安装同样需要两个额外的源,我们通过下面的命令安装:

$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

接下来,我们需要安装 yum-util 工具来更好地管理我们的 yum 源以及安装包

$ yum install yum-utils

安装好了 yum-utils 后,我们可以配置想要安装的 PHP 版本,选择你想要安装的 PHP 版本

$ yum-config-manager --enable remi-php70   [Install PHP 7.0]
$ yum-config-manager --enable remi-php71   [Install PHP 7.1]
$ yum-config-manager --enable remi-php72   [Install PHP 7.2]

通过下面的命令安装 PHP 相关的组件

$ yum install -y php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-fpm

配置

同 nginx 的配置类似,PHP 也有自己默认的配置文件: /etc/php.ini ,不过这里我们可以不用修改,如下的修改只是我针对项目做出的个性化的设置。

我们分别修改一下几个地方:

session.cookie_httponly = 1                     # 让我们 PHP 的 cookie 变成 http-only 的,更加安全

session.gc_probability = 1
session.gc_divisor = 100                        # 这两个 gc 参数一并使用,表示每次访问有1/100的概率清除过期的 session

session.gc_maxlifetime = 1440                   # 默认的 session 过期时间(24)分钟,但是session 是否被清除,看上面的概率

关于这几项配置,我们可以从它们各自的注释中得到更全面的解释。

配置修改之后,需要重启 nginx 服务使配置得以生效。

FastCGI

还记得我们在之前配置 Nginx 时提前写入的关于 PHP 脚本的 FastCGI 部分么,我们在这里详细介绍一下:

Fastcgi是一种进程管理器,管理cgi进程。市面上有多种实现了Fastcgi功能的进程管理器, php-fpm 就是其中的一种。

再提一点, php-fpm 作为一种Fast-cgi进程管理服务,会监听端口,一般默认监听9000端口,并且是监听本机,也就是只接收来自本机的端口请求,所以我们在 Nginx 的配置文件中能看到诸如下面的配置部分:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {                            
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

MySQL8

安装

同样先安装特定的 yum 源

$ yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

特别提醒: 还是因为 GFW 的原因,下载安装过程可能耗时会很久,如果网速一般,可以用 nohup 方式运行在后台。

$ yum install mysql-community-server

安装完成后,开启 mysql 并设置开机自动启动

$ systemctl start mysqld
$ systemctl enable mysqld

修改 root密码

我们可以从 mysql 的安装 log 中拿到 root 用户的初始密码:

$ grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1

我们会得到如下的输出:

2015-11-20T21:11:44.229891Z 1 [Note] A temporary password is generated for root@localhost: -et)QoL4MLid

也就是我们的 root 初始默认密码是 -et)QoL4MLid

当我们用 root 用户首次登录时,系统会提示我们修改默认密码。

配置

配置文件在 /etc/my.cnf 中,可以按照个人需求,分别修改不同的配置项:

[mysqld]                                    # mysqld 部分
bind-address=127.0.0.1                      # 只能从本机访问 mysql

character_set_server=utf8mb4                # 修改默认字符集
init_connect='SET NAMES utf8mb4'

event_scheduler=on                          # 默认开启 event

innodb_buffer_pool_size = 128M              # 修改 innodb 的 buffer 大小

default-authentication-plugin=mysql_native_password     # 提高老版本的 mysql 连接稳定性

max_connections=1000                        # 最大并发连接数

local-infile=1                              # 允许导入 local file 中的数据

[client]
default_character_set=utf8mb4               # 默认字符集
local-infile=1                              # 允许导入 local file 中的数据

配置文件修改后,记得 systemctl restart mysqld 来重启 mysql 服务。

到这里,我们整的 LNMP 环境就搭建完成了。

参考&致谢


以上所述就是小编给大家介绍的《【LNMP】linux7系统中搭建LNMP 环境全过程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Analytics 2.0

Web Analytics 2.0

Avinash Kaushik / Sybex / 2009-10-26 / USD 39.99

The bestselling book Web Analytics: An Hour A Day was the first book in the analytics space to move beyond clickstream analysis. Web Analytics 2.0 will significantly evolve the approaches from the fir......一起来看看 《Web Analytics 2.0》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具