广告
返回顶部
首页 > 资讯 > 数据库 >打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战
  • 329
分享到

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

运维架构服务器原力计划 2023-08-21 20:08:31 329人浏览 薄情痞子
摘要

前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步

前言

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

文章目录

一. 实验环境

本次实验环境见下表

操作系统服务器IPhostname
Centos7.910.0.0.7mufengrow7

如何查看相应的参数

二.编译安装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]# lsauto     CHANGES.ru  configure  html     man     srcCHANGES  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 nginxuid=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.shexport 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 serverDocumentation=http://nginx.org/en/docs/After=network-online.target remote-fs.target nss-lookup.targetWants=network-online.target[Service]Type=forkingPIDFile=/apps/nginx/run/nginx.pidExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MaiNPIDExecStop=/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.confuser  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.dvim /apps/nginx/conf/conf.d/wordpreses.confserver {    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 -tnginx: the configuration file /apps/nginx/conf/nginx.conf syntax is oknginx: 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 = nginxgroup = nginxlisten = 127.0.0.1:9000pm = dynamicpm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3pm.status_path = /pm_statusping.path = /pingaccess.log = /apps/php74/log/$pool.access.logslowlog = /apps/php74/log/$pool.log.slow#启动opcache加速[root@mufengrow7 php-7.4.33]# vim /etc/php.ini[opcache]zend_extension=opcache.soopcache.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<?phpphpinfo();?>

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 greproot       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 wwwnginx      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 greproot       7551      1  0 18:25 ?        00:00:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.confnginx      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 mysqluid=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.sockdefault-character-set = utf8[mysqld]port = 3306server_id = 1user = mysqlbasedir = /database/mysqldatadir = /database/mysql/datatmpdir = /database/mysql/tmpsocket = /database/mysql/mysql.sockpid_file = /database/mysql/mysql.pidcharacter_set_server = utf8max_connections = 100max_connect_errors = 10log_error = /database/mysql/logs/mysql_5_7_37.errlog_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 grepmysql     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 123456Enter 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.confserver {    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 -tnginx: the configuration file /apps/nginx/conf/nginx.conf syntax is oknginx: 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的页面

六.总结

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

来源地址:https://blog.csdn.net/wisdom_futrue/article/details/130503277

您可能感兴趣的文档:

--结束END--

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

本文链接: https://www.lsjlt.com/news/377274.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作