在安装PHP之前需要安装一些依赖包,执行下面的命令就可以了,如果安装过请忽略
yum install vim gcc gcc++ wget libxml2-devel wget -y
1.下载PHP
访问PHP的官方下载地址:https://php.net
找到自己想要安装的版本来进行下载,我这里就以我自己的需求来选个一个地址
wget http://cn2.php.net/get/php-5.6.34.tar.gz/from/this/mirror
执行上面的目录来下载,这里来解释一下,mirror 这个是什么东西,这个就是和.gz 等的一样的压缩包,很多人等下载完这个东西,看到没有.zip,.gz 等这些后缀名,以为下载失败,其实不是,所以请放心。
接下来让我们解压文件
tar zxvf mirror
解压完后得到php-5.6.34
其中php-5.6.34就是我们需要用到的压缩包,让我们进入目录进行安装
cd php-5.6.34
进入目录之后就会发现有需要的文件,这些就是PHP的源文件
然后我们编译PHP文件生成makefile 文件
这里需要普及一个小的知识点,那就是fastcgi
php本来的请求是,当一个请求出现,PHP会启动一个进程来完成请求,然后关闭,但是这很耗费系统的资源,不符合我们的要求,我们需要php-fpm,然后可以监听php请求 ,如果有请求出现,那么开始提供进程来执行,如果业务多的话会创建一个新的,如果没有多余的请求的时候,php-fpm会释放掉多余的资源,而fastcgi就是php-fpm使用的前提,编译安装的时候必须加上这个参数。所以编译的时候需要加上–enable-fpm 选项
./configure --prefix=/usr/local/php --enable-fpm
./configure 就是就是编译makefile文件的工具 --prefix 就是指定安装PHP到哪个目录
执行完成之后下面的命令
make && make install
我们执行完成./configure 只是把我们的配置写入makefile文件,还没有安装,make 命令就是安装,到此我们就安装完成PHP了。
/usr/local/php/bin/php 是PHP文件执行的入口,如果我们要将PHP写如Linux环境变量,需要加入的目录为/usr/local/php/bin
清理环境
### 如果之前有部署过清理删除⼀下MySQL数据
pkill mysqld
rm -rf /data/3306/*
mkdir -p /data/mysql/data_3306 /data/mysql/binlog_3306
chown -R mysql.mysql /data/*
### 把默认的my.cnf移⾛到tmp
mv /etc/my.cnf /tmp
安装包准备
版本8.0.18与5.7下载地址
https://dev.mysql.com/downloads/mysql/
安装依赖
yum install -y libaio-devel # 安装依赖
准备数据库管理⽤户
useradd -s /sbin/nologin mysql # 此⽤户为不可登录⽤户
chown -R mysql.mysql /data/*
创建数据和⽇志⽬录
[root@s_docker ~]# mkdir -p /data/mysql/data_3306 #data_dir
[root@s_docker ~]# mkdir -p /data/mysql/binlog_3306 #log_dir
解压软件并制作软连接
[root@s_docker ~]# tar -xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@s_docker ~]# cd /usrl/local
[root@s_docker ~]# ln -s mysql-5.7.35-linux-glibc2.12-x86_64/ mysql57
环境变量设置
[root@s_docker ~]# vim /etc/profile
#最底下添加环境变量
export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/mysql57/bin:$PATH
[root@s_docker ~]# source /etc/profile
权限设置
root@s_docker ~]# chown -R mysql.mysql /data /usr/local/mysql57
centos自带mariadb的配置文件,要么修改要么删了自己写
[root@redis-master ~]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql57 # 安装包路径
datadir=/data/mysql/data_3306 # 数据存放路径
socket=/tmp/mysql.sock # 如果提示sock出错的话就可能会重复或者是没有这个目录,去tmp目录下查看
server_id=1 # 设置多台mysql要设置id号不能相同
port=3306
secure-file-priv=/tmp
log_bin=/data/mysql/binlog/binlog_3306
binlog_format=row
[mysql]
prompt=db01 [\\d] # db01代表数据库名称,【\\d】代表空格
示例如下:
[db01]select * from mysql.user
[db01] select * from mysql.user
不同数据库初始化方法
-insecure 表示不安全的,就可以不需要密码登录mysql
# mysql8 or 57
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57/ --datadir=/data/mysql/data_3306/
# mysql56
./mysql_install_db --user=mysql --basedir=/application/mysql --
datadir=/application/mysql/data
启动数据库
[root@s_docker ~]# cd /usr/local/mysql57/support-files/
[root@s_docker~]# cp mysql.server /etc/init.d/mysqld
[root@s_docker ~]# chkconfig --add mysqld
[root@s_docker ~]# systemctl start mysqld
[root@s_docker ~]# mysql
db01 [(none)]show databases;
-------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
db01 [(none)]select * from mysql.user\G
db01 [(none)]alter user root@localhost identified by '111111';
#更改 用户 root 的密码为 111111
db01 [(none)]create user root@'%' identified with mysql_native_password by '111111';
# 创建用户root在哪里都可以登录,密码也为6个1
db01 [(none)]select host,user from mysql.user; --查看数据库user表的用户信息和主机信息
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
#查询
安装依赖
安装nginx之前先安装一个扩展pcre,这个是正则匹配用到的扩展
yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl-devel
root@redis-master package]# tar -zxf nginx-1.20.1.tar.gz
root@redis-master nginx-1.20.1]# cd nginx-1.20.1
root@redis-master nginx-1.20.1]# ./configure --prefix=/usr/local/nginx
root@redis-master nginx-1.20.1]# make && make install
创建nginx用户
[root@redis-master ~]# useradd -s /sbin/nologin nginx
启动nginx
/usr/local/nginx/sbin/nginx
然后网页访问服务器ip能看到welcome nginx就是成功了
假设我们设定PHP的目录为
/usr/local/www/
打开nginx的配置文件,更改目录和fastcgi_parem后面的
vim /usr/local/nginx/conf/nginx.conf
65 location ~ \.php$ {
66 root /home/www;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
70 include fastcgi_params;
71 }
nginx文件详解
vim /etc/nginx/nginx.conf --- 主配置文件
第一个部分: 配置文件主区域配置
user www; --- 定义worker进程管理的用户
worker_processes 2; ---定义有几个worker进程 == CPU核数 / 核数的2倍
error_log /var/log/nginx/error.log warn; --- 定义错误日志路径信息
pid /var/run/nginx.pid; --- 定义pid文件路径信息
第二个部分: 配置文件事件区域
events {
worker_connections 1024; --- 一个worker进程可以同时接收1024访问请求
}
第三个部分: 配置http区域
http {
include /etc/nginx/mime.types; --- 加载一个配置文件
default_type application/octet-stream; --- 指定默认识别文件类型
log_format oldboy '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
--- 定义日志的格式
access_log /var/log/nginx/access.log oldboy;
--- 指定日志路径
sendfile on; ???
#tcp_nopush on; ???
keepalive_timeout 65; --- 超时时间
#gzip on;
include /etc/nginx/conf.d/*.conf; --- 加载一个配置文件
}
补充: nginx的进程
master process: 主进程 ---管理服务是否能够正常运行 boss
worker process: 工作进程 ---处理用户的访问请求 员工
编写测试文件
[root@redis-master sbin]# mkdir /home/www
[root@redis-master sbin]# cd /home/www
[root@redis-master sbin]# vim index.php
<?php
echo "hello world";
?>
然后重启php和nginx
[root@redis-master sbin]# cd /usr/local/nginx/sbin/
[root@redis-master sbin]# ./nginx -s reload
#需要去php目录下复制一下配置文件,要不然启动php会报错找不到这个文件
[root@redis-master ~]# cd /usr/local/php/
[root@redis-master etc]# cp php-fpm.conf.default php-fpm.conf
[root@redis-master sbin]# /usr/local/php/sbin/php-fpm
打开浏览器,输入:服务器IP:index.php
如果输出hello world 代表着成功。
至此,我们的lnmp环境已经搭建完毕
需要先升级一下php,要不然后面会提示php版本太低,至少需要5.8以上
卸载旧版本之前先要关闭php服务
[root@redis-master nginx]# systemctl stop php-fpm
[root@redis-master nginx]# yum remove php* -y
[root@redis-master nginx]# rpm -qa|grep php
514 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
515 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
517 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
518 rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
519 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
520 yum -y install php71w php71w-cli php71w-common
521 yum install -y php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecmongodb
https://wordpress.org/download/#download-install
访问服务器地址,会出现Access Denied,403Forbidden禁止访问,我们还需要修改服务器访问目录权限
mkdir /home/www
tar -zxf wordpress-5.8.tar.gz -C /home/www/
usermod -s /bin/bash nginx
chown -R nginx.nignx /home/www/
chmod -R 774 /home/www/
设置selinux
为了能完整使用wordpress读写博客、安装主题插件功能还需要修改SELinux安全上下文以拥有对目录文件的读写权限:
setsebool -P httpd_read_user_content 1
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_rw_content_t /usr/share/nginx/html/blog-wp
[root@redis-master home]# tail -f /usr/local/nginx/logs/error.log
修改这三个地方
user nginx
还有目录
[root@redis-master www]# vim /usr/local/nginx/conf/nginx.conf
2 user nginx;
35 server {
36 listen 80; //监听端口
37 server_name 192.168.100.10; //服务器访问地址
38
39 #charset koi8-r;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root /home/www/wordpress; //服务器根目录访问映射路径
45 index index.html index.htm index.php;
46 }
65 location ~ \.php$ { //解析访问php文件时处理规则
66 root /home/www/wordpress;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
70 include fastcgi_params;
71
72 }
找到user和group后面修改成nginx 用户
再把前面的分号删除,分号代表注释
[root@redis-master www]# vim /etc/php-fpm.d/www.conf
8 user = nginx
9 ; RPM: Keep a group allowed to write in log dir.
10 group = nginx
找到open_basedir所在行,此参数规定php所能运行的目录,若不修改该值,访问nginx服务器将报Access Denied错误;将该参数值修改为服务器访问目录或者直接注释该行。
[root@redis-master www]# vim /etc/php.ini
294 open_basedir =
然后重启nginx和php
[root@redis-master yum.repos.d]# systemctl restart php-fpm
[root@redis-master yum.repos.d]# systemctl enable php-fpm
[root@redis-master yum.repos.d]# /usr/local/nginx/sbin/nginx -s reload
输入之前创建的用户名和密码登录数据库,创建一个wordpress数据库,数据库名可以自定义:
[root@redis-master wordpress]# mysql -uroot -p111111
db01 [(none)] create database wordpress;
use wordpress切换至该数据库,创建连接该数据库的账号:
创建zheng用户 密码为123
db01 [(none)]use wordpress;
Database changed
db01 [wordpress]grant all on wordpress.* to zheng identified by "123";
查询
db01 [wordpress]select host,user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| % | username |
| % | zheng |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
6 rows in set (0.00 sec)
修改数据库文件权限:
chown mysql:mysql /var/lib/mysql -R
服务器 ip/index.php
选择好语言以后进行安装
第一个是创建的数据库名称
第二个是创建的用户
第三个是创建的用户密码
第四个写ip,这里写的是127.0.0.1