# Nginx 和 PHP 能干吗?

我们要想要搭建自己的网站时,我们可以在 linux 服务器中配置 LNPM (Linux,Nginx,PHP,Mysql) 或 LAPM (Apache) 实现网站的搭建与访问,Nginx 作为 web 服务器,可以将我们自己编写的 html 静态网页文件部署到服务器中,然后通过 ip 地址加端口号进行访问。但我们的页面不可能都是一些静态页面,网站应该能和后台数据进行交互,所以我们可以用到 PHP 这个技术,它是一种用于创建动态和交互式 HTML 网页的脚本语言。接下来我们简单配置一下这两个服务。

# 源码安装和 yum 安装的区别与选择

# yum 安装:

yum 相当于是自动化帮你安装,你不用管软件的依赖关系,在 yum 安装过程是帮你把软件的全部依赖关系帮你傻瓜式的解决了。而且现在 Centos7 的服务启动已经换成 systemctl 命令来控制了。通过 yum 安装会帮你自动注册服务,你可以通过 systemctl start xxx.service 启动服务,方便快捷。但是缺点是 yum 安装你没办法干预,安装的目录也是分散的。你可能要执行 whereis 或者 find 命令去找 yum 安装的路径。有时候 yum 安装的软件版本比较低,你不得不去找其他的 yum 源,或者 rpm 包。

# 源码安装:

源码编译在安装过程中可能要解决很多的依赖问题,才能装好一个软件。装好的软件你还不能通过 systemctl 来启动服务,因为在 /usr/lib/systemd/system/ 路径下并没有你的服务的配置文件,你要自己手写一个。但是好处在于你能选择软件的版本,自定义安装目录,安装的模块。更加灵活方便。

# 源码方式安装 Nginx 服务

  1. 首先可以去官网选择自己需要的版本进行下载,然后上传到我们的 Centeos7 中任意位置进行解压。

  2. 安装所必须的依赖

    1
    2
    3
    4
    5
    6
    #安装gcc
    yum install -y gcc
    #安装perl库
    yum install -y pcre pcre-devel
    #安装zlib库
    yum install -y zlib zlib-devel
  3. 编译安装,进入 nginx-1.23.1 目录中

    1. .configure --prefix=/usr/local/nginx --with-http_ssl_module

      • 参数: --prefix=/usr/local/nginx 用来指定安装位置

        --with-http_ssl_module 是 nginx 支持 ssl,用来配置 https 进行访问

    2. make && make install

    3. 启动 nginx,进入安装好的目录: cd /usr/local/nginx/sbin

      1
      2
      3
      4
      ./nginx 启动
      ./nginx -s stop 快速停止
      ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
      ./nginx -s reload 重新加载配置
  4. 安装完成后,将 nginx 配置为系统服务

    • 创建服务脚本: vim /usr/lib/systemd/system/nginx.service

    • 服务脚本内容

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      [Unit]
      Description=nginx - web server
      After=network.target remote-fs.target nss-lookup.target
      [Service]
      Type=forking
      PIDFile=/usr/local/nginx/logs/nginx.pid
      ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
      ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
      ExecReload=/usr/local/nginx/sbin/nginx -s reload
      ExecStop=/usr/local/nginx/sbin/nginx -s stop
      ExecQuit=/usr/local/nginx/sbin/nginx -s quit
      PrivateTmp=true
      [Install]
      WantedBy=multi-user.target
    • 重新加载系统服务: systemctl daemon-reload

    • 启动服务: systemctl start nginx.service

    • 开机启动: systemctl enable nginx.service

  5. 关闭防火墙或放行端口,使我们在物理机中也能访问

    1. 关闭防火墙: systemctl stop firewalld.service

    2. 放行端口,nginx 默认对应 80 端口: firewall-cmd --zone=public --add-port=80/tcp --permanent

      放行端口号需要重新加载防火墙: firewall-cmd --reload

  6. 测试 nginx 是否安装成功

    • 首先查看 Centos7 中对应的 ip 地址

    • 到我们的物理机中输入刚刚的地址,就可以看到 nginx 的首页(这个首页更改过)

# yum 方式安装 php 服务

注意:直接使用 yum install php 安装,安装的版本过低,所以我们选择其他源,使用 Remi 模块并进行安装,这里选择版本 PHP7.4。还有 yum insatll php 不会默认安装 php-fpm,这需要我们自己添加。

  1. 首先需要添加两个源,不然安装会报错

    1
    2
    3
    #php高版本的yum源地址,有两部分,其中一部分是epel-release,另外一部分来自webtatic。
    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  2. 添加相关的库后,启用 PHP 7.4 的 Remi 模块并进行安装。

    1
    dnf -y install dnf-utils
  3. 安装需要的模块,你可以通过 yum search php74* 查看有那些模块。

    1
    2
    3
    #php74-php:用于创建动态web的PHP脚本语言网站
    #php74-php-fpm:PHP FastCGI进程管理器
    yum install php74-php php74-php-fpm
  4. 运行并查看版本, 重启命令, 添加自动启动,链接 php 文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #运行并查看版本
    php74 -v
    #重启命令php-fpm
    systemctl restart php74-php-fpm
    #添加自动启动
    systemctl enable php74-php-fpm
    #查看php7.4的安装路径
    whereis php74
    #链接php文件,这样可以在任意地方使用它
    ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php
  5. 然后我们编写 php 文件进行测试。

    • 编写 php 文件: vim hello.php

    • 授予它可运行权限, chmod +x hello.php

    • 运行 hello.php: ./hello.php

  6. 至此,我们两个服务已经搭建完成,接下来我们就可以配置 nginx 可以解析 php 文件,这样我们放在 html / 目录下的 php 文件可以通过 nginx 进行访问了,如何配置两个服务一同工作,请移步到下一篇文章。