0%

Centos7.7 yum 安装 Nginx1.16.0、PHP7.4、MySql8.0

出于 centos 比 ubuntu 稳定,所以计划把 ubuntu 换掉,于是就有了这篇文章

实际上是我想用 Aliyun Linux

背景交代

本文章采用的是 yum 安装,而非编译安装。因为我认为 yum 安装简单且考虑周全

实际上是编译安装的烂尾了(卡在 MySQL),而且编译安装对配置要求也蛮高的

注意:

环境处理:firewalld

centos7 一般默认都会安装并启动这个服务来起到“防火墙”的作用

但是像阿里云、aws 等一般都提供物理层面的防火墙,此时就可以把firewalld关掉了,节约系统资源

systemctl stop firewalld # 停止防火墙
systemctl disable firewalld # 禁止开启自动

Nginx

centos 自带的 nginx 版本旧,我们需要更新一下

vim /etc/yum.repos.d/nginx.repo

编辑/etc/yum.repos.d/nginx.repo,输入以下内容(我很想在 = 左右加上空格,文档上没加,我也就没加了)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

保存,接着执行下列命令

yum update -y
yum install nginx -y

systemctl enable nginx # 开机自启
systemctl start nginx # 启动 Nginx

PHP

遗憾的是我并没有在官方 wiki 上找到有关 yum 安装的说明,那就按照网上的做法来吧

安装两个支持库和一个 php7 系列的 rpm

yum install epel-release yum-utils http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y

启用 php7.4 并安装

yum-config-manager --enable remi-php74
yum install php php-fpm -y # 别忘记安装 php-fpm

yum erase httpd httpd-tools -y # 移除多余的 apache,我们只需要 nginx
userdel apache

使 Nginx 支持 PHP

如果不出意外的话,对应路径应该像下面这样

项目名 地址 备注
Nginx 配置文件 (文件)
/etc/nginx/nginx.conf
可通过nginx -t查询
Nginx 网站配置路径 (目录)
/etc/nginx/conf.d/
可通过nginx -t查询
PHP-fpm 配置路径 (目录)
/etc/php-fpm.d/
可通过php-fpm -t查询

控制权限

建立一个用户专门执行 nginx 和 php 等,防止权力滥用

当然你也可以不这么做,那么请跳过本步骤

这里我们就增加一个www的用户,一个www的用户组

groupadd www
useradd -g www -s /usr/sbin/nologin www

设置 nginx 的配置文件vim /etc/nginx/nginx.conf

将第 2 行附近的user nginx;改为user www;

chown www:root -R /var/lib/nginx

设置 php-fpm 的配置文件(这里用默认的 www.conf)vim /etc/php-fpm.d/www.conf

将 24 行附近的

user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

改为

user = www
; RPM: Keep a group allowed to write in log dir.
group = www

用 TcpSocket 进行通信

打开 nginx 网站配置文件(conf.d 目录下),这里用默认的default.confvim /etc/nginx/conf.d/default.conf

把第 9 行附近的

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}

改为(移动 root 位置,添加 index.php)

root   /usr/share/nginx/html;
location / {
    index  index.php index.html index.htm;
}

并把第 28 行附近的

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

改为(去除部分 # 号,并修改/scripts$document_root

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

在网站根目录(配置文件中root的值,比如这里为/usr/share/nginx/html)下删除 index.html,添加 index.php,并写入

<?php
phpinfo();

重启 Nginx 和 php-fpm

systemctl restart nginx php-fpm

访问服务器,不出意外可以看到

用 UnixSocket 进行通信

UnixSocket 和 TcpSocket对比:Php-fpm TcpSocket vs UnixSocket - Liv2005的专栏

方法和 tcp通信的几乎一样,略有几处不同,各位可以对比下

打开 php-fpm 配置文件(这里用默认的 www.conf)vim /etc/php-fpm.d/www.conf

把 37 行附近的

; Note: This value is mandatory.
listen = 127.0.0.1:9000

改为(更改值)

; Note: This value is mandatory.
listen = /dev/shm/php-fpm.sock

再把 44 行附近的

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660

改为(去除部分分号)

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nobody
listen.group = nobody
listen.mode = 0660

注意:如果你更改了 php-fpm 的用户(比如进行了控制权限操作),那么↑就应该为:

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = www # php-fpm 用户
listen.group = www # php-fpm 用户组
listen.mode = 0660

打开 nginx 网站配置文件(conf.d 目录下),这里用默认的default.confvim /etc/nginx/conf.d/default.conf

把第 9 行附近的

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}

改为(移动 root 位置,添加 index.php)

root   /usr/share/nginx/html;
location / {
    index  index.php index.html index.htm;
}

并把第 28 行附近的

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

改为(更改 fastcgi_pass,去除部分 # 号,并修改/scripts$document_root

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
#    root           html;
    fastcgi_pass   unix:/dev/shm/php-fpm.sock;
#    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

在网站根目录(配置文件中root的值,比如这里为/usr/share/nginx/html)下删除 index.html,添加 index.php,并写入

<?php
phpinfo();

重启 Nginx 和 php-fpm

systemctl restart nginx php-fpm

MySql

安装一个支持库和 MySQL rpm

yum install yum-utils https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y

注意:yum install后面接的链接需要根据实际情况选择,请参考MySQL :: Download MySQL Yum Repository

然后我们禁用 MySql5.7,启用 8.0

yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql80-community

接着执行下列命令

yum install mysql-community-server -y

systemctl enable mysqld # 开机自启
systemctl start mysqld  # 启动 MySql

获取 MySQL 的密码:

cat /var/log/mysqld.log | grep 'temporary password'

红框圈起来的就是密码

登录 MySQL,并修改密码

alter user root@localhost identified by '新密码';

单引号内的字符就是新密码,不包括单引号,密码需要包含字母、数字、字符三种,区分大小写

参拷资料

  1. Install | NGINX
  2. How to Install PHP 7.0, 7.1, 7.2 on CentOS 7 and RHEL 7 Server
  3. MySQL :: MySQL 8.0 Reference Manual :: 2.5.1 Installing MySQL on Linux Using the MySQL Yum Repository
  4. mysql的密码管理、mysql初始密码查找、密码修改、mysql登录 - JimmyTang - 博客园
  • 本文作者: rcxzsc
  • 本文链接: https://rcxzsc.com/archives/960/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY 许可协议。转载请注明出处!