打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战

前言

个人主页:我是沐风晓月
个人简介:大家好,我是沐风晓月,阿里云社区博客专家
座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步
欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信

文章目录

  • 前言
  • 一. 实验环境
  • 二.编译安装nginx
    • 2.1 准备nginx编译环境
      • 2.1.1 创建nginx目录
      • 2.1.2 下载nignx源码
      • 2.1.3 安装编译依赖包
    • 2.2 编译安装nginx
      • 2.2.1 解压nginx源码包
      • 2.2.2 编译nginx
      • 2.2.3 安装nginx
    • 2.3 添加nginx启动用户
    • 2.4 修改nginx目录所属
    • 2.5 添加环境变量
    • 2.6 添加nginx的service文件
    • 2.7 创建run文件夹
    • 2.8 修改配置文件
    • 2.9 添加关于wordpress的配置文件
    • 2.10 修改配置文件所属
    • 2.11 检查配置文件语法
  • 三.编译安装php
    • 3.1 准备编译环境
      • 3.1.1 安装依赖包
      • 3.1.2 创建php源码存储目录
      • 3.1.3 创建php安装目录
    • 3.2 编译安装php7.4
      • 3.2.1 下载php7.4源码包
      • 3.2.2 编译php7.4源码
      • 3.2.3 安装php7.4
    • 3.3 准备php配置文件
    • 3.4 添加启动文件
    • 3.5 修改配置文件
    • 3.6 创建php的日志目录
    • 3.7 检查配置文件语法
    • 3.8 准备php页面
    • 3.9 启动php
    • 3.10 检查php进程
    • 3.11 启动nginx
    • 3.12 检查nginx进程
    • 3.13 浏览器测试php
  • 四.编译安装MySQL5.7
    • 4.1 创建MySQL目录
    • 4.2 编译工具的准备
      • 4.2.1 准备boost库
      • 4.2.2 准备cmake工具
        • 4.2.2.1 安装依赖软件
        • 4.2.2.2 下载cmake工具源码
        • 4.2.2.3 编译cmake
    • 4.3 准备MySQL5.7源码包
    • 4.4 安装编译依赖包
    • 4.5 创建MySQL安装目录
    • 4.6 创建MySQL用户
    • 4.7 编译MySQL5.7
    • 4.8 安装MySQL5.7
    • 4.9 启动MySQL前的准备
      • 4.9.1 添加MySQL环境变量
      • 4.9.2 初始化MySQL数据库
    • 4.10 启动数据库
    • 4.11 修改数据库密码
    • 4.12 创建用于wordpress的数据库和MySQL用户
  • 五.部署wordpress
    • 5.1 下载wordpress资源包
    • 5.2 解压资源包
    • 5.3 修改wordpress文件所属
    • 5.4 修改nginx配置
      • 5.4.1 修改nginx配置文件
      • 5.4.2 检查语法
      • 5.4.3 重新读取
    • 5.5 安装wordpress
  • 六.总结

一. 实验环境

本次实验环境见下表

操作系统 服务器IP hostname
centos7.9 10.0.0.7 mufengrow7

如何查看相应的参数

二.编译安装nginx

2.1 准备nginx编译环境

2.1.1 创建nginx目录

[root@mufengrow7 ~]# mkdir -p /usr/local/src/nginx

代码注释:

  • -p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录

2.1.2 下载nignx源码

[root@mufengrow7 ~]# cd /usr/local/src/nginx
[root@mufengrow7 nginx]# wget https://nginx.org/download/nginx-1.24.0.tar.gz

2.1.3 安装编译依赖包

[root@mufengrow7 nginx]# yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel gd-devel GeoIP-devel

2.2 编译安装nginx

2.2.1 解压nginx源码包

#解压nginx源码
[root@mufengrow7 nginx]# tar xf nginx-1.24.0.tar.gz
#进入nginx目录
[root@mufengrow7 nginx]# cd nginx-1.24.0/
#查看文件
[root@mufengrow7 nginx-1.24.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

2.2.2 编译nginx

#创建nginx目录
[root@mufengrow7 nginx-1.24.0]# mkdir -p /apps/nginx
[root@mufengrow7 nginx-1.24.0]# ./configure \
--prefix=/apps/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module  \
--with-http_image_filter_module \
--with-http_geoip_module \
--with-http_gunzip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

2.2.3 安装nginx

[root@mufengrow7 nginx-1.24.0]# make && make install

2.3 添加nginx启动用户

[root@mufengrow7 nginx-1.24.0]# useradd -s /sbin/nologin nginx
[root@mufengrow7 nginx-1.24.0]# id nginx
uid=1001(nginx) gid=1001(nginx) groups=1001(nginx)

2.4 修改nginx目录所属

[root@mufengrow7 nginx-1.24.0]# chown -R nginx.nginx /apps/nginx/

2.5 添加环境变量

#添加nginx的环境变量
[root@mufengrow7 nginx-1.24.0]# vim /etc/profile.d/nginx.sh
export PATH=/apps/nginx/sbin:$PATH
#使变量生效
[root@mufengrow7 nginx-1.24.0]# source /etc/profile.d/nginx.sh

2.6 添加nginx的service文件

[root@mufengrow7 nginx-1.24.0]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target

2.7 创建run文件夹

根据上一节的文件配置,给nginx添加一个用于存储pid文件的目录。

[root@mufengrow7 nginx-1.24.0]# mkdir -p /apps/nginx/run/

2.8 修改配置文件

[root@mufengrow7 nginx-1.24.0]# vim /apps/nginx/conf/nginx.conf
user  nginx nginx; #修改nginx启动用户
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        run/nginx.pid; #修改pid位置
......
http {
    include       mime.types;
    default_type  application/octet-stream;
    include /apps/nginx/conf/conf.d/*.conf; #nginx能够读取conf.d的所有配置文件
......

2.9 添加关于wordpress的配置文件

#添加配置文件目录
[root@mufengrow7 nginx-1.24.0]# mkdir -p /apps/nginx/conf/conf.d
vim /apps/nginx/conf/conf.d/wordpreses.conf
server {
    listen 80;

    location / {
        root /data/nginx/wordpress;
        index index.php index.html index.htm;
    }

    location ~ \.php$ {
        root /data/nginx/wordpress;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

2.10 修改配置文件所属

[root@mufengrow7 nginx-1.24.0]# chown -R nginx.nginx /apps/nginx/conf/conf.d/

2.11 检查配置文件语法

[root@mufengrow7 nginx-1.24.0]# nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful

三.编译安装php

我们从wordpress的官方网站上查看关于wordpress系统要求:https://cn.wordpress.org/about/requirements/

从下面的截图我们可以知道新版本的wordpress需要

  • PHP7.4或更高的版本

  • MySQL5.7或更高的版本(MariaDB10.3或更高)

  • 但是也支持旧版本的PHP(PHP 5.6.20版本)环境和MySQL数据库(MySQL 5.0版本)

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第1张图片

所以本次实验编译安装php7.4

3.1 准备编译环境

3.1.1 安装依赖包

[root@mufengrow7 ~]# yum -y install gcc openssl-devel libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel

3.1.2 创建php源码存储目录

[root@mufengrow7 ~]# mkdir -p /usr/local/src/php7.4

3.1.3 创建php安装目录

[root@mufengrow7 php-7.4.33]# mkdir -p /apps/php74

3.2 编译安装php7.4

3.2.1 下载php7.4源码包

[root@mufengrow7 ~]# cd /usr/local/src/php7.4/
[root@mufengrow7 php7.4]# wget http://cn2.php.net/distributions/php-7.4.33.tar.xz

3.2.2 编译php7.4源码

编译的选项跟需求有关。

[root@mufengrow7 php7.4]# tar xf php-7.4.33.tar.xz

3.2.3 安装php7.4

[root@mufengrow7 php-7.4.33]# make && make install

3.3 准备php配置文件

[root@mufengrow7 php-7.4.33]# cp sapi/fpm/php-fpm.conf /apps/php74/etc/
[root@mufengrow7 php-7.4.33]# cp sapi/fpm/www.conf /apps/php74/etc/php-fpm.d/
[root@mufengrow7 php-7.4.33]# cp php.ini-production /etc/php.ini

3.4 添加启动文件

[root@mufengrow7 php-7.4.33]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/

3.5 修改配置文件

[root@mufengrow7 php-7.4.33]# vim /apps/php74/etc/php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /pm_status
ping.path = /ping
access.log = /apps/php74/log/$pool.access.log
slowlog = /apps/php74/log/$pool.log.slow
#启动opcache加速
[root@mufengrow7 php-7.4.33]# vim /etc/php.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1 #取消注释

3.6 创建php的日志目录

[root@mufengrow7 php-7.4.33]# mkdir -p /apps/php74/log/

3.7 检查配置文件语法

[root@mufengrow7 php-7.4.33]# /apps/php74/sbin/php-fpm -t
[03-May-2023 19:48:53] NOTICE: configuration file /apps/php74/etc/php-fpm.conf test is successful

3.8 准备php页面

[root@mufengrow7 php-7.4.33]# mkdir -p /data/nginx/wordpress
[root@mufengrow7 php-7.4.33]# vim /data/nginx/wordpress/index.php
<?php
phpinfo();
?>

3.9 启动php

[root@mufengrow7 php-7.4.33]# systemctl daemon-reload
[root@mufengrow7 php-7.4.33]# systemctl start php-fpm.service
[root@mufengrow7 php-7.4.33]# systemctl enable php-fpm.service

3.10 检查php进程

[root@mufengrow7 php-7.4.33]# ps -ef | grep php-fpm | grep -v grep
root       5807      1  0 19:53 ?        00:00:00 php-fpm: master process (/apps/php74/etc/php-fpm.conf)
nginx      5808   5807  0 19:53 ?        00:00:00 php-fpm: pool www
nginx      5809   5807  0 19:53 ?        00:00:00 php-fpm: pool www

3.11 启动nginx

[root@mufengrow7 php-7.4.33]# systemctl daemon-reload
[root@mufengrow7 php-7.4.33]# systemctl enable nginx
[root@mufengrow7 php-7.4.33]# systemctl start nginx

3.12 检查nginx进程

[root@mufengrow7 php-7.4.33]# ps -ef | grep nginx | grep -v grep
root       7551      1  0 18:25 ?        00:00:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      7552   7551  0 18:25 ?        00:00:00 nginx: worker process

3.13 浏览器测试php

浏览器访问:

10.0.0.7/index.php

访问结果:

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第2张图片

四.编译安装MySQL5.7

4.1 创建MySQL目录

[root@mufengrow7 ~]# mkdir -p /usr/local/src/mysql

4.2 编译工具的准备

4.2.1 准备boost库

[root@mufengrow7 ~]# cd /usr/local/src/mysql/
[root@mufengrow7 mysql]# wget https://udomain.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
[root@mufengrow7 mysql]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@mufengrow7 mysql]# ln -s /usr/local/boost_1_59_0 /usr/local/boost

为什么要使用boost的1.59版本?

因为MySQL的编译需要1.59版本,高版本编译MySQL会出现错误
打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第3张图片

4.2.2 准备cmake工具

4.2.2.1 安装依赖软件

[root@mufengrow7 mysql]# yum install -y gcc gcc-c++ make glibc automake autoconf libtool libssl-dev openssl openssl-devel

4.2.2.2 下载cmake工具源码

[root@mufengrow7 mysql]# wget https://github.com/Kitware/CMake/archive/refs/tags/v3.26.3.tar.gz

4.2.2.3 编译cmake

[root@mufengrow7 mysql]# tar xf v3.26.3.tar.gz
[root@mufengrow7 mysql]# cd CMake-3.26.3/
[root@mufengrow7 CMake-3.26.3]# ./bootstrap && gmake && gmake install

4.3 准备MySQL5.7源码包

[root@mufengrow7 CMake-3.26.3]# cd /usr/local/src/mysql/
[root@mufengrow7 mysql]# wget https://github.com/mysql/mysql-server/archive/refs/tags/mysql-5.7.42.tar.gz

4.4 安装编译依赖包

[root@mufengrow7 mysql]# yum install -y ncurses-devel gcc gcc-c++ ncurses bison make

4.5 创建MySQL安装目录

[root@mufengrow7 mysql]# mkdir -p /database/mysql/{data,tmp,binlog,logs}

4.6 创建MySQL用户

[root@mufengrow7 mysql]# groupadd mysql
[root@mufengrow7 mysql]# useradd mysql -s /sbin/nologin -M -g mysql
[root@mufengrow7 mysql]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)

4.7 编译MySQL5.7

#解压源码
[root@mufengrow7 mysql]# tar xf mysql-5.7.42.tar.gz
#进入源码目录
[root@mufengrow7 mysql]# cd mysql-server-mysql-5.7.42/
#编译源码
[root@mufengrow7 mysql-server-mysql-5.7.42]# cmake . -DCMAKE_INSTALL_PREFIX=/database/mysql \
-DMYSQL_DATADIR=/database/mysql/data \
-DMYSQL_UNIX_ADDR=/database/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

4.8 安装MySQL5.7

[root@mufengrow7 mysql-server-mysql-5.7.42]# make install

4.9 启动MySQL前的准备

4.9.1 添加MySQL环境变量

[root@mufengrow7 mysql-server-mysql-5.7.42]# echo 'export PATH=/database/mysql/bin:$PATH' >> /etc/profile
[root@mufengrow7 mysql-server-mysql-5.7.42]# source /etc/profile

4.9.2 初始化MySQL数据库

  1. 修改MySQL安装目录的属主与属组
[root@mufengrow7 mysql-server-mysql-5.7.42]# chown -R mysql.mysql  /database/mysql/
  1. 修改MySQL配置文件
[root@mufengrow7 mysql-server-mysql-5.7.42]# vim /etc/my.cnf
[client]
port = 3306                         
socket = /database/mysql/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
server_id = 1
user = mysql
basedir = /database/mysql
datadir = /database/mysql/data
tmpdir = /database/mysql/tmp
socket = /database/mysql/mysql.sock
pid_file = /database/mysql/mysql.pid
character_set_server = utf8
max_connections = 100
max_connect_errors = 10
log_error = /database/mysql/logs/mysql_5_7_37.err
log_bin = /database/mysql/binlog/mysql-bin

[root@mufengrow7 mysql-server-mysql-5.7.42]# chown mysql.mysql /etc/my.cnf
  1. 初始化数据库
#检查数据目录是否有文件,有文件的必须移走
[root@mufengrow7 mysql-server-mysql-5.7.42]# ls /database/mysql/data/
[root@mufengrow7 mysql-server-mysql-5.7.42]# mysqld --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data

代码注释:

  • --initialize-insecure:初始化MySQL不设置root密码

  • --datadir:指定存储数据的目录

  1. 开启SSL连接
[root@mufengrow7 mysql-server-mysql-5.7.42]# mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
  1. 修改server-key.pem文件权限
[root@mufengrow7 mysql-server-mysql-5.7.42]# cd /database/mysql/data/
[root@mufengrow7 data]# chmod +r server-key.pem
[root@mufengrow7 data]# ll server-key.pem
-rw-r--r-- 1 mysql mysql 1676 Apr 28 12:31 server-key.pem

4.10 启动数据库

  1. 拷贝启动脚本
[root@mufengrow7 data]# cd /database/mysql/
[root@mufengrow7 data]# cp support-files/mysql.server  /etc/init.d/mysql
[root@mufengrow7 data]# systemctl daemon-reload
  1. 设置开机启动
[root@mufengrow7 data]# /sbin/chkconfig mysql on
  1. 启动MySQL
[root@mufengrow7 mysql]# /etc/init.d/mysql start
  1. 检查MySQL进程
[root@mufengrow7 mysql]# ps aux | grep 3306 | grep -v grep
mysql     40332  40081  0 12:34 pts/1    00:00:00 /database/mysql/bin/mysqld --basedir=/database/mysql --datadir=/database/mysql/data --plugin-dir=/database/mysql/lib/plugin --user=mysql --log-error=/database/mysql/logs/mysql_5_7_37.err --pid-file=/database/mysql/data/CentOS7.9.pid --socket=/database/mysql/mysql.sock --port=3306

4.11 修改数据库密码

[root@mufengrow7 mysql]# mysqladmin -uroot -p password 123456
Enter password: #继续按回车
mysqladmin: [Warning] Using a password on the command line interface can be insecure.

4.12 创建用于wordpress的数据库和MySQL用户

[root@mufengrow7 ~]# mysql -uroot -pMufengrow123456@

#创建用于wordpress的数据库
mysql> create database mufengrow_wordpress;
Query OK, 1 row affected (0.00 sec)
#创建用于wordpress的用户
mysql> create user mufengrow@'%' identified by 'Mufengrow123456@';
Query OK, 0 rows affected (0.00 sec)
#给用户授权wordpress数据库
mysql> grant all on mufengrow_wordpress.* to mufengrow@'%';
Query OK, 0 rows affected (0.00 sec)

五.部署wordpress

5.1 下载wordpress资源包

[root@mufengrow7 mysql]# cd /data/nginx/wordpress/
[root@mufengrow7 wordpress]# wget https://cn.wordpress.org/wordpress-6.2-zh_CN.tar.gz
[root@mufengrow7 wordpress]# mv index.php /tmp/

5.2 解压资源包

[root@mufengrow7 wordpress]# tar xf wordpress-6.2-zh_CN.tar.gz

5.3 修改wordpress文件所属

[root@mufengrow7 wordpress]# chown -R nginx.nginx /data/nginx/wordpress/

5.4 修改nginx配置

5.4.1 修改nginx配置文件

[root@mufengrow7 wordpress]# vim /apps/nginx/conf/conf.d/wordpreses.conf
server {
    listen 80;

    location / {
        root /data/nginx/wordpress/wordpress; #修改root目录
        index index.php;
    }

    location ~ \.php$ {
        root /data/nginx/wordpress/wordpress; #修改root目录
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

5.4.2 检查语法

[root@mufengrow7 wordpress]# nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful

5.4.3 重新读取

通过重启nginx,让nginx重新读取配置文件

[root@mufengrow7 wordpress]# systemctl restart nginx

5.5 安装wordpress

浏览器访问:

10.0.0.7

使用以上地址访问会自动跳转到wordpress的安装页面,点击“现在就开始!”开始安装wordpress
打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第4张图片

输入数据库信息,点击“提交”

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第5张图片

点击“运行安装程序”

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第6张图片

输入wordpress站点信息,点击“安装wordpress”

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第7张图片

点击“登录”,进入登录页面

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第8张图片

输入用户信息,登录wordpress

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第9张图片

登录wordpress的页面

打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战_第10张图片

六.总结

  1. 本次实验LNMP环境中的“nginx”,“php”,“MySQL”都需要进行编译
  2. php编译和MySQL编译都需要比较长的时间,且需要安装比较多的依赖
  3. nginx配置文件中的“fastcgi_pass”的地址需要根据php-fpm的设置来定义,如果php-fpm与nginx不在同一服务器上,需要修改地址。

你可能感兴趣的:(#,3.,linux基本功-系统服务实战,运维,架构,服务器)