lnmp架构搭建—源码编译(nginx、mysql、php)
含义及理解:
LNMP = Linux+Nginx+Mysql+PHP:LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。LNMP代表的就是linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。
Nginx 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP 是一种在服务器端执行的嵌入HTML文档的脚本语言。
LNMP的工作原理:首先,浏览器发送http request请求到服务器(Nginx)服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx,服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
LNMP特点:Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。
nginx的编译与安装:
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务
开启一台虚拟机作为lnmp服务器主机
准备好lnmp相关的源码包并解压
tar zxf nginx-1.15.9.tar.gz
cd nginx-1.15.9/
ls
修改配置文件使不显示nginx版本
cd nginx-1.15.9/src/core
vim nginx.h
删除第14行 nginx后面的内容
加快安装,是nginx占用空间更小一点
cd nginx-1.15.9/auto/cc/
vim gcc
将第172行注释掉
解决编译过程中一些软件的依赖性
在实际操作过程中,要根据具体的报错情况来安装软件或插件解决依赖性
yum install gcc pcre-devel openssl-devel -y
编译并安装
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module
make && make install
编译安装成功查看
cd /usr/local/lnmp/nginx
ls
创建nginx用户并在配置文件更改
id nginx
useradd nginx
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
添加软连接并测试
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
nginx
nginx
netstat -antlp
测试
本地发布网页目录
vim /usr/local/lnmp/nginx/html/index.html
设置后端网页虚拟主机
在lnmp服务器端修改配置文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf 在末尾行加入
server {listen 80;server_name www.cc.com;location / {root html/www;index index.html;
}
} server {listen 80;server_name bbs.cc.com;location / {root html/bbs;index index.html;
}
}server {listen 80;server_name blog.cc.com;location / {root html/blog;index index.html;
}
}
}
在默认发布目录下创建目录并写入对应网页
cd /usr/local/lnmp/nginx/html
mkdir www
cd www
vim index.html
检测配置文件语法并重启服务
nginx -t
nginx -s reload
测试:
在真机注意更改本地解析
curl www.cc.com
curl bbs.cc.com
curl blog.cc.com
设置均衡负载
在开启两台虚拟机,安装httpd,写入网页并开启服务
在lnmp服务器虚拟机修改配置文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
http {include mime.types;default_type application/octet-stream;upstream cc {server 172.25.11.1:80;server 172.25.11.2:80;
}将之前设定的网页虚拟主机注释
server {listen 80;server_name www.cc.com;location / {proxy_pass http://cc;
}
}
}
检测语法并重启nginx
nginx -t
nginx -s reload
测试:
mysql的编译安装及设置
在编译安装mysql之前关闭nginx
nginx -s stop
准备好源码包并解压
tar zxf mysql-boost-5.7.17.tar.gz
cd mysql-5.7.17/
ls
安装编译过程中有依赖性的软件(实际操作中,请根据自身情况来安装)
yum install -y cmake-2.8.12.2-4.el7.x86_64.rpm
yum install -y gcc gcc-c++ ncurses-devel
yum install -y bison
安装依赖性软件后进行mysql的编译安装
编译安装时间较长
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
编译好之后安装
make && make install
安装成功,查看
cd /usr/local/lnmp/mysql
ls
复制启动脚本到/etc/init.d/
cd /lnmp安装包/mysql-5.7.17/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
将原来的/etc/my.cnf备份,重新拷贝安装包里的过去
cd /etc
cp my.cnf my.cnf.bak
cd /lnmp安装包/mysql-5.7.17/support-files/
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
添加用户和组
groupadd -g 27 mysql
useradd -u 27 -g 27 mysql (id=27是因为rpm默认安装时mysql用户的id为27,并非强制)
chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目录的权限,使其对mysql用户可写)
将mysql命令添加到环境变量
vim ~/.bash_profile
添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile 使文件生效
初始化和安全初始化mysql
mysqld --user=mysql --initialize(以mysql用户身份初始化)
初始化会生成一个临时密码,用于登录mysql(要记住此密码)
为了安全,再将mysql目录的所有者改为root
chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R ##数据目录所有者必须是mysql,不然mysql用户不能写
启动mysql 并安全初始化
/etc/init.d/mysqld start
mysql_secure_installation 然后会提示是否启用密码检测插件,直接回车不启用
测试登陆mysql并查看
php的编译安装及设置
准备好源码包并解压
yum -y install bzip2
tar jxf php-5.6.35.tar.bz2
解决编译过程中软件的依赖性(实际操作中,请根据自身情况来安装)
yum install -y libxml2-devel libcurl-devel
yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libjpeg-turbo-devel-1.2.90-5.el7.x86_64
yum install -y libpng-devel-1.2.49-1.el6_2.x86_64 libpng-devel-1.5.13-7.el7_2.x86_64
yum install -y freetype freetype-devel
yum install -y net-snmp net-snmp-develcd /lnmp安装包
yum install -y re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
开始编译并安装
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhashmake && make install
拷贝更改配置文件
cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
查看配置文件中以下几项是否开启:
user = nginx
group = nginx
pid = run/php-fpm.pid
拷贝更改php主配置文件
cd /lnmp安装包/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cd /usr/local/lnmp/php/etc
vim php.ini
修改时区:
date.timezone = Asia/Shanghai
拷贝php启动脚本至/etc/init.d/
cd /lnmp/php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
启动php
/etc/init.d/php-fpm start
查看网络端口
netstat -antlp
LNMP架构部署
先确保nginx、mysql、php都是开启状态
查看端口:
netstat -antlp
安装论坛前测试php网页
并修改nginx配置文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf注释掉之前设定的负载均衡集群
并且开启php界面设定、增加index.php文件
检测语语法并重启nginx
nginx -t
nginx -s reload
编写php测试网页
cd /usr/local/lnmp/nginxhtml
vim index.php
自行准备好论坛的压缩包
安装解压命令并解压文件到指定目录
yum install -y unzip
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
切换到解压目录并查看文件
重命名 uoload 为bbs
并给目录增加权限
cd /usr/local/lnmp/nginx/html
ls
mv upload bbs
chmod 777 config/ -R
chmod 777 data/ -R
chmod 777 uc_server/ uc_client/ -R
编辑php主配置文件
并重启php
vim /usr/local/lnmp/php/etc/php.inipdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock/etc/init.d/php-fpm reload
由于 nginx用户 对于 /usr/local/lnmp/mysql/data 目录没有权限
cd /usr/local/lnmp/mysql
chmod 755 data/
打开浏览器开始安装部署
172.25.11.4/bbs
这里输入mysql密码并设定论坛管理者密码
点击右上角管理中心进入管理
发现没有界面
解决如下:
cd /usr/local/lnmp/nginx/html/bbs/install
rm -fr index.php
重新刷新管理界面
lnmp架构搭建—源码编译(nginx、mysql、php)相关推荐
- LNMP架构的源码编译
文章目录 一.安装 Nginx 服务 1.实验前准备 2.安装依赖包 3.创建运行用户 4.编译安装 5.路径优化 6.添加Nginx系统服务 二.安装 MySQL 服务 1.安装Mysql环境依赖包 ...
- LNMP架构的搭建——源码编译(PHP,nginx,Mysql)
一.源码编译 在企业中,我们常常是需要什么模块才会添加什么模块,而源码编译就可以让我们按需安装. yum安装的优缺点: yum安装的优点:安装东西,方便快捷,特别是不用考虑包依赖. yum安装的缺点: ...
- centos lnmp源码安装mysql_CentOS 6.6 下源码编译安装MySQL 5.7.5
说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具 # yum -y install gcc-c++ ncurses-devel cmake make perl \ ...
- mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...
centos5 源码安装Nginx + mysql + apache + php的方法 主要依照的是张宴的一篇博文<http://blog.s135.com/post/366/>,安装的软 ...
- 源码编译安装mysql,DDL数据定义语言的使用。
今天来尝试下源码编译安装mysql. 这次我们要用到cmake工具,安装cmake. # yum install cmake # tar -xf mysql-5.5.37.tar.gz # cd my ...
- 源码编译安装mysql
源码编译安装mysql 添加mysql组和mysql用户 [root@centos mysql]# groupadd mysql [root@centos mysql]# useradd -g ...
- WdOS源码编译安装MySQL 5.5.25a
2019独角兽企业重金招聘Python工程师标准>>> MySQL是一个中.小型关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数 ...
- mac版源码编译安装mysql
mac版源码编译安装mysql 一.基础环境 1.清理环境(清理系统自带的Mariadb和boost) CentOS 7 版本的系统默认自带安装了MariaDB,需要先清理. ##查询已安装的mari ...
- Windows 源码编译 nginx (加入nginx-http-flv-module)
文章目录 windows 源码编译 nginx,可以加入功能模块 1. 依赖 2. 步骤 2.1 下载源码 2.2 解压依赖 2.3 配置环境变量 2.4 配置和编译 3. 测试 4. 参考 wind ...
最新文章
- Redis数据库设置密码
- 测试网站访问速度的几个小方法
- 正则重温(学习笔记)
- 数据库安装mysql57_记录CentOS7.X版本下安装MySQL5.7数据库
- 【重温基础】6.数字
- android刷新时的圆形动画_Android自定义view渐变圆形动画
- Java 将鼠标改为图片的两种方法
- java电器类代码_阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。...
- Android开发指南(39) —— Testing Fundamentals
- 故障:PDF 文件打印失败
- 瀑布流效果Demo总结(4)之基于jquery+masonry.js的实现
- 一起学爬虫(Python) — 01
- Mysql 免安装配置
- Greek Gods,Roman Gods and Chinese Gods
- Go-Excelize API源码阅读(二十五)——GetSheetName、GetSheetIndex、GetSheetMap()
- 分布式动态路由的实现
- 基于Bert论文构建Question-Answering模型
- CentOS6 图形界面(gnome)安装
- 魔方世界服务器文件,魔方世界服务器补丁
- 12306排队是什么意思_12306 说:有时候,能排队也是一种幸福!
热门文章
- python邮箱爆破_Python在线爆破邮箱账号密码测试代码(亲测可用)
- 优先队列默认是小顶堆吗_一分钟带你读懂什么是堆?
- android studio日历小程序,android studio无法加载日历界面
- 快准牌电脑发软件_做自媒体必备技能,视频剪辑软件排名(精品篇)
- php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...
- Latex 加空格的方法
- 在Linux中对硬盘进行分区、格式化和挂载
- 如何把WAV格式音频转换为MP3格式
- [C#学习] DataAdapter.Fill()分页
- 如何安装Genymotion虚拟机以及Genmotion的eclipse插件