前言
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是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版本)
所以本次实验编译安装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
访问结果:
四.编译安装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会出现错误
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数据库
- 修改MySQL安装目录的属主与属组
[root@mufengrow7 mysql-server-mysql-5.7.42]# chown -R mysql.mysql /database/mysql/
- 修改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
- 初始化数据库
#检查数据目录是否有文件,有文件的必须移走
[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
:指定存储数据的目录
- 开启SSL连接
[root@mufengrow7 mysql-server-mysql-5.7.42]# mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
- 修改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 启动数据库
- 拷贝启动脚本
[root@mufengrow7 data]# cd /database/mysql/
[root@mufengrow7 data]# cp support-files/mysql.server /etc/init.d/mysql
[root@mufengrow7 data]# systemctl daemon-reload
- 设置开机启动
[root@mufengrow7 data]# /sbin/chkconfig mysql on
- 启动MySQL
[root@mufengrow7 mysql]# /etc/init.d/mysql start
- 检查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
输入数据库信息,点击“提交”
点击“运行安装程序”
输入wordpress站点信息,点击“安装wordpress”
点击“登录”,进入登录页面
输入用户信息,登录wordpress
登录wordpress的页面
六.总结
- 本次实验LNMP环境中的“nginx”,“php”,“MySQL”都需要进行编译
- php编译和MySQL编译都需要比较长的时间,且需要安装比较多的依赖
- nginx配置文件中的“fastcgi_pass”的地址需要根据php-fpm的设置来定义,如果php-fpm与nginx不在同一服务器上,需要修改地址。