打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战
前言
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. 实验环境
本次实验环境见下表
操作系统 | 服务器IP | hostname |
---|---|---|
centos7.9 | 10.0.0.7 | mufengrow7 |
如何查看相应的参数
二.编译安装nginx
2.1 准备nginx编译环境
2.1.1 创建nginx目录
[root@mufengrow7 ~]# mkdir -p /usr/local/class="lazy" data-src/nginx
代码注释:
-p
:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录
2.1.2 下载nignx源码
[root@mufengrow7 ~]# cd /usr/local/class="lazy" data-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 class="lazy" data-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/class="lazy" data-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/class="lazy" data-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/class="lazy" data-src/mysql
4.2 编译工具的准备
4.2.1 准备boost库
[root@mufengrow7 ~]# cd /usr/local/class="lazy" data-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/class="lazy" data-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数据库
- 修改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.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
- 初始化数据库
#检查数据目录是否有文件,有文件的必须移走[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 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的页面
六.总结
- 本次实验LNMP环境中的“nginx”,“php”,“MySQL”都需要进行编译
- php编译和MySQL编译都需要比较长的时间,且需要安装比较多的依赖
- nginx配置文件中的“fastcgi_pass”的地址需要根据php-fpm的设置来定义,如果php-fpm与nginx不在同一服务器上,需要修改地址。
来源地址:https://blog.csdn.net/wisdom_futrue/article/details/130503277
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341