企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装
企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装
- LNMP架构原理
- 一、源码安装mysql
- 二、源码安装php
- 三、源码安装nginx
- 四、安装wordpress论坛
LNMP 是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
LNMP架构原理
Nginx(fastcgi_pass) → FastCGI → (PHP-fpm → wrapper)php (php解析器)→mysql(读取或写入)
1.用户通过 http 协议发起请求,请求会先抵达 LNMP 架构中的 Nginx
2.Nginx 会根据用户的请求进行判断,这个判断是有 Location 进行完成
3.判断用户请求的是静态页面, Nginx 直接进行处理
4.判断用户请求的是动态页面, Nginx 会将该请求交给 fastcgi 协议下发
5.fastgi 会将请求交给 php-fpm 管理进程, php-fpm 管理进程接收到后会调用具体的工作进程 wrapper
6.wrapper 进程会调用 php 程序进行解析,如果只是解析代码 php 直接返回
7.如果有查询数据库操作,则由 php 连接数据库(用户 密码 IP)发起查询的操作
8.最终数据由 mysql->php->php-fpm->fastcgi->nginx->http->user
这里需要了解一下CGI与FastCGI: https://blog.csdn.net/qq_35887546/article/details/104564855
一、源码安装mysql
1)解压安装 mysql
tar zxf mysql-boost-5.7.28.tar.gz
2)创建 mysql 用户
[root@server4 mysql-5.7.28]# useradd -s /sbin/nologin -M mysql #-M表示不分配主目录
[root@server1 mysql-5.7.28]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
[root@server1 mysql-5.7.28]# yum install -y cmake #安装编译器
3)指定编译参数
[root@server4 mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ # 指定套接字文件位置
> -DEXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8 \ #默认字符集
> -DDEFAULT_COLLATION=utf8_general_ci \ #默认字符校对
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb 存储引擎
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装 myisam 存储引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \ ##安装 memory 存储引擎
> -DWITH_READLINE=1 \ #支持 readline 库
> -DENABLED_LOCAL_INFILE=1 \ #启用加载本地数据
> -DMYSQL_USER=mysql \ #指定 mysql 运行用户
> -DMYSQL_TCP_PORT=3306 #指定 mysql 端口
编译时会提示需要依赖性
4)根据提示解决依赖性问题
需要安装包:yum install -y gcc gcc-c++ ncurses-devel openssl-devel -y
安装好依赖性后再进行编译还会报错:
##报错##
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
重新编译时,需要清除原来的对象文件和缓存信息’
make clean;rm -fr CmakeCache.txt
上面报错的信息是缺少-DWITH_BOOST=<directory>
参数:
##解决##
将-DWITH_BOOST=boost/boost_1_59_0/
加到编译参数的后面
后面编译会有一个 warning:
CMake Warning at cmake/bison.cmake:20 (MESSAGE):
Bison executable not found in PATH
Call Stack (most recent call first):
sql/CMakeLists.txt:514 (INCLUDE)
##解决:
yum install -y bison
5)安装
make && make install #### (过程较长)
如果 make 还有问题,删除原来的目录,重新解压编译
6)修改权限
cd /usr/local/lnmp/mysql
mkdir data
chown -R root .
chown -R mysql data
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/
7)复制配置文件
cd /usr/local/lnmp/mysql/mysql-test/include
cp default_my.cnf /etc/my.cnf
cd /usr/local/lnmp/mysql/support-files
cp -a mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
systemctl status mysqld
8)初始化
mysqld --user=mysql --initialize ##(以 mysql 用户身份初始化)
初始化会生成一个临时密码,用于登录 mysql(要记住此密码)
#如:2019-01-03T09:06:09.448851Z 1 [Note] A temporary password is generated for root@localhost: r#9VqAoA/au:
9)启动 mysql:
systemctl start mysqld
10)进入 mysql:
mysql -uroot -pr#9VqAoA/au: ##使用刚才的临时密码
执行:show databases;
会报错
需要执行:mysql_secure_installation
,输入初始化密码后修改新密码,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求,剩余全部选 y
mysql 安装配置完成
二、源码安装php
1)解压:
tar zxf php-7.4.1.tar.gz
yum -y install bzip2
2)进入解压后的目录,开始编译
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/lnmp/mysql --enable-gd --without-pear --enable-fpm
#编译时遇到的报错就安装:
yum install sqlite-devel.x86_64 -y
yum install -y libxml2-devel
yum install -y libpng-devel
3)编译报错,逐步解决依赖性
yum install -y oniguruma-*
4)安装
make && make install
5)拷贝更改配置文件
[root@server5 etc]# pwd
/usr/local/lnmp/php/etc
[root@server5 etc]# cp php-fpm.conf.default php-fpm.conf
查看配置文件中以下几项是否开启:
[root@server1 etc]# vim php-fpm.conf17 pid = run/php-fpm.pid #需要把注释去掉
6)拷贝子配置文件
[root@server5 php-fpm.d]# pwd
/usr/local/lnmp/php/etc/php-fpm.d
[root@server4 php-fpm.d]# cp www.conf.default www.conf
[root@server4 php-fpm.d]# vim www.conf23 user = nginx24 group = nginx
7)拷贝更改 php 主配置文件
[root@server1 php-fpm.d]# cd
[root@server1 ~]# cd lnmp/php-7.4.1/
[root@server5 php-7.4.1]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-7.4.1]# vim /usr/local/lnmp/php/etc/php.ini
修改时区:961 date.timezone = Asia/Shanghai
8)拷贝 php 启动脚本至/etc/init.d/
[root@server1 php-7.4.1]# cd /root/lnmp/php-7.4.1/sapi/fpm
[root@server5 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
添加执行权限:
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm
添加用户:
[root@server1 fpm]# useradd -u 900 nginx
9)启动
/etc/init.d/php-fpm start
#FastCGI = Fast Common Gateway Interface
#(快速通用网关接口)
HTTP 服务器与你的或其它机器上的程序进行“交谈”的一种工具
启动报错可能因为没有 nginx 用户,需要手动创建
PHP配置完成
三、源码安装nginx
1)解压 nginx:
[root@server1 lnmp]# tar zxf nginx-1.14.0.tar.gz
2)进入 nginx 解压包:
[root@server1 lnmp]# cd nginx-1.14.0
[root@server1 nginx-1.14.0]# vim src/core/nginx.h14 #define NGINX_VER "nginx/" #将此行末尾显示 nginx 版本号的配置删除[root@server1 nginx-1.14.0]# vim auto/cc/gcc
171 # debug
172 #CFLAGS="$CFLAGS -g" #将这 2 行注释调,关闭 debug
3)编译安装 nginx:
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx
根据提示解决依赖性
##此处应该还需要安装 pcre-devel
4)安装
make && make install
5)修改 nginx 配置文件,开启 php 模块
[root@server1 nginx-1.14.0]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf2 user nginx;45 index index.php index.html index.htm; #添加 php 页面65 location ~ \.php$ {66 root html;67 fastcgi_pass 127.0.0.1:9000;68 fastcgi_index index.php;69 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;70 include fastcgi.conf;71 }
6)将 nginx 启动脚本链接到/usr/local/sbin/
[root@server1 conf]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server1 conf]# nginx -t ##检测语法
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx ##开启 nginx
SCRIPT_FILENAME
7)尝试访问:
在 nginx 默认发布目录添加 index.php
[root@server1 conf]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim index.php
<?php #可以看到 php 的默认页面
phpinfo()
?>
8)启动 nginx 并访问:
http://172.25.63.1
nginx 安装配置完成
四、安装wordpress论坛
1.解压
[root@server1 lnmp]# tar zxf wordpress-5.3.2-zh_CN.tar.gz -C /usr/local/lnmp/nginx/html/
2.浏览器访问http://172.25.63.1/wordpress
3.点击现在就开始
会看到报错:不能选择数据库
因为mysql中没有wordpress数据库,需要自己创建:
[root@server1 lnmp]# mysql -uroot -predhatmysql> create database wordpress;
Query OK, 1 row affected (0.07 sec)
5.重试提交
又会看到新的报错:
抱歉,我不能写入wp-config.php文件。
解决:
[root@server1 lnmp]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# chown nginx.nginx wordpress -R
6.再重试,成功
登陆成功!!
企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装相关推荐
- 视频教程-zabbix4.0原理到实战中部(基础架构之四)-Linux
zabbix4.0原理到实战中部(基础架构之四) 在宝成国际集团华东行政中心主管华东地区网络.虚拟化.系统运维三年,从设计.网络设备选型.实施都有着丰富的经验.在互联网公司工作四年,对LINUX自动化 ...
- 11.LNMP基础架构
[toc] LNMP基础架构 12.1 LNMP架构介绍 架构原理: LAMP=linux+apache+mysql+php LNMP=linux+nginx+mysql+php 1.初识LNMP 当 ...
- 企业IT构建核心基础架构解决方案
企业IT构建核心基础架构解决方案 提供了可用于在中型IT环境中规划,构建,部署和操作核心基础结构的指南.核心基础结构是IT基础结构的一部分,是实现直接满足公司商业要求的众多服务的前提条件. 企业IT构 ...
- 揭秘LOL背后的IT基础架构丨踏上部署多样性的征程
本期开始,我们将陆续分享Tungsten Fabric用户案例文章,一起发现TF的更多应用场景."揭秘LOL"系列的主人公是TF用户Riot Games游戏公司,作为LOL< ...
- Linux软件包企业实战案例
通过前几章的学习,我们掌握了Linux系统基本命令,用户及权限等知识.Linux整个体系的关键不在于系统本身,而是基于Linux去安装和配置企业中相关的软件,数据及应用程序,所以对软件的维护是运维工程 ...
- LNMP基础架构介绍与安装
1.LNMP架构介绍 LNMP==Linux+Nginx+Mysql+PHP nginx:省资源,省cpu,所以在高并发时能够处理更多的请求,高端能达到3万到5万的并发量. nginx和LAMP不 ...
- 智慧政务云平台建设方案案例与基础架构
大数据技术的应用与发展正在让我们的生活经历一场深刻的"变革",而且这种变革几乎让所有人都感觉非常舒服,自然而然的就完成了这样的一个变化.最根本的原因其实是大数据技术的应用真正帮助我 ...
- 企业实战案例02_Jenkins_连接远程GitLab拉取代码
编译.打包 文章目录 一.任务新建和配置信息 1. 新建任务 2. 添加描述 3. 设置构建的最大数量 4. 添加Git构建参数 5.复制远程项目链接地址 6. 粘贴远程项目地址 7. 添加凭据 7. ...
- 企业实战案例01_Jenkins_连接远程执行shell脚本
文章目录 一.Jenkins 远程连接执行shell脚本 1.1. 新建节点 1.2. 配置节点信息 二.连接远程验证测试 2.1. 创建任务 2.2. 添加注释 2.3. 设置最大构建数量 2.4. ...
最新文章
- 干货 | 100+个NLP数据集大放送,再不愁数据!
- 微型计算机在现代通信中的应用,计算机基础单元试卷
- 天赋差的程序员,难道就只能半途而废吗?
- java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...
- html 空链接 href=#与href=javascript:void(0)的区别
- Read the Docs 文档管理
- 利用jetson nano上自带的opencv实现多线程rtsp拉流、低延迟较稳定显示摄像头视频(c++)
- 详实!DevOps 最新现状研究报告解读 | 原力计划
- kubernetes PVC介绍
- 实用软件工程(张海藩)复习笔记
- 【408考研笔记】操作系统完整知识点
- 联想小新520怎么样?对比当贝D3X哪款更值得买?
- 电脑自带蓝牙与HC-06蓝牙模块使用串口助手通信
- C语言求23阶行列式,AX=0通解,施密特正交化
- 登录安全----双重MD5加密实现安全登录
- 网站浏览器崩溃原因分析
- HTML(hiden控件 readonly disabled)(maxlength属性)(id属性重点)
- 如何使用《背景音乐提取器》提取歌曲中的伴奏
- Qt编写可视化大屏电子看板系统24-模块2当月计划
- 数据仓库中各个常用英文简写的代表意义
热门文章
- PDF转HTML格式怎么转?这些方法值得收藏
- elecworks中“插入点”的意思
- 2022年危险化学品经营单位主要负责人操作证考试题及模拟考试
- python贝叶斯模型_【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)...
- jmeter两种设置中文方法
- linux 监听图形,Zabbix3.2+Grafana4.0实现可视化监控图形
- iphone尺寸大全
- MT6753芯片资料MT6753处理器分析
- fis3 的release -cwL
- FJUT-cwl的女朋友3 凑钱最少张数问题