【LNMP平台搭建与应用 #yyds干货盘点#】男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述LNMP平台搭建与应用 #yyds干货盘点#相关的知识,希望能为你提供帮助。
LNMP平台搭建与应用
1.LNMP架构概述
- LNMP就是Linux+nginx+mysql+php,Linux作为服务器的操作系统、Nginx作为web服务器、PHP作为解析动态脚本语言、MySQL即为数据库
- Linux作为服务器的操作系统
- Nginx作为WebServer服务器
- PHP作为动态解析服务,也不只是php还有python、perl
- MySQL作为后端存储数据库服务
- Nginx服务本身不能处理PHP请求,那么当用户发起PHP动态请求,PHP是这样处理的
- 用户---> http协议---> nginx---> fastcgi协议---> php-fpm
- 注意fastcgi是nginx连接php-fpm之间的协议
- Nginx解析php的方法
- 1.将PHP页面的解析请求通过代理方式转发给Apache进行处理
- 将PHP页面的解析请求转发给php-fpm模块
文章图片
图文解释:
客户端使用浏览器访问某页面,通过http协议请求到对应的web服务器,web服务器是Nginx,如果客户端请求的静态页面比如html,Nginx会自己处理然后将对应的页面内容发送给客户端如果客户端请求的是动态页面例如PHP,因为网页大部分都是php写的,Nginx会把请求通过fastcgi协议转交给php进行处理,php会把解析的页面进行分析,如果页面信息包含数据库数据,php会与mysql建立tcp三次握手获取数据,数据获取后再转交给fastcgi协议,fastcgi协议再转交给Nginx服务,Nginx再通过http协议将页面呈现在浏览器上
1.2.Nginx与Fast_CGI详细工作流程
文章图片
1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx
2.Nginx会根据用户的请求进行判断,这个判断会通过定义的location完成,例如图片、文件会去找ftp服务,php会去找php-fpm
3.判断用户请求的是否是静态页面,如果是静态页面Nginx会直接处理
4.判断用户请求的是否是动态页面,如果是动态页面,Nginx会将该请求交给fastcgi协议进行下发
5.fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后调用具体的工作线程wrapper,类似于工单,每当工作来临时,php-fpm就会进行分配
6.wapper线程会调用php进行解析,如果只是解析代码,PHP解析完会自动返回
7.如果有查询数据库操作,则由php连接数据库(通过用户、密码、IP)进行连接然后发起查询操作
8.最终数据由mysql--->
php--->
php-fpm--->
fastcgi--->
nginx--->
http--->
user
2.安装LNMP架构 2.1.安装Nginx
使用官方提供的rpm包
[root@localhost ~]# cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/7/$basearch
enabled=1
gpgcheck=0yum安装
[root@localhost ~]# yum -y install nginx启动
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl enable nginx扩展
1.仅下载rpm包不进行安装,如果想安装并下载那么就把--downloadonly去掉
[root@localhost ~]# yum -y install nginx --downloadonly --downloaddir=/soft
在使用rpm安装,可以留着等下次做实例的时候用
[root@localhost soft]# rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm2.我们在官网系在了nginx的rpm包可能会存在依赖关系
[root@localhost ~]# yum -y localinstall nginx-1.16.1-1.el7.ngx.x86_64.rpm
2.2.安装MySQL
- mysql有两个版本可以选择一个5.6一个是5.7我们都来做一遍
- mysql所有功能都是修改配置文件实现的
1.下载MySQL官方扩展源
[root@localhost ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
也可以使用wget下载下来方便以后使用
[root@localhost ~]# wgt http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm2.安装完mysqlrpm后会在/etc/yum.repos.d中生成两个文件
root@localhost ~]# ls /etc/yum.repos.d/my*
/etc/yum.repos.d/mysql-community.repo/etc/yum.repos.d/mysql-community-source.repo3.安装mysql5.7
把mysql5.7包下载下来,然后方便下次使用
首先配置yum,开启缓存,不然安装好后就会自动删除
[root@localhost conf.d]# vim /etc/yum.conf
keepcache=1[root@localhost ~]# yum install mysql-community-server --downloaddir=/root/soft/ --downloadonly
在使用localinstall安装(也可以用rpm直接装)
[root@localhost soft]# yum -y localinstall mysql-community-server-5.7.29-1.el7.x86_64.rpm4.启动
[root@localhost soft]# systemctl start mysqld
[root@localhost soft]# systemctl enable mysqld5.由于mysql5.7默认配置了密码,需要在日志中过滤temporary password获取默认密码
[root@localhost soft]# grep"temporary password" /var/log/mysqld.log
2020-04-10T04:01:09.027390Z 1 [Note] A temporary password is generated for root@localhost: *2cNf4-Gh:oe6.登录
[root@localhost ~]# mysql -u root -p*2cNf4-Gh:oe
[root@localhost ~]# mysql -uroot -p$(awk /temporary password/print $NF /var/log/mysqld.log) 7.修改密码,密码必须是8位以上包含数字大小写字母
mysql>
alter user root@localhost identified by 1234.COm;
2.2.2.安装MySQL5.6
1.下载MySQL官方扩展源
[root@localhost ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm2.安装完mysqlrpm后会在/etc/yum.repos.d中生成两个文件
root@localhost ~]# ls /etc/yum.repos.d/my*
/etc/yum.repos.d/mysql-community.repo/etc/yum.repos.d/mysql-community-source.repo3.安装mysql5.6
把mysql5.6包下载下来,然后方便下次使用(有条件的可以直接yum装)
首先配置yum,开启缓存,不然安装好后就会自动删除
[root@localhost conf.d]# vim /etc/yum.conf
keepcache=1[root@localhost ~]# yum install mysql-community-server --downloaddir=/root/soft/ --downloadonly[root@localhost ~]# ls soft/
mysql-community-client-5.6.47-2.el7.x86_64.rpmmysql-community-libs-5.6.47-2.el7.x86_64.rpmmysql-community-common-5.6.47-2.el7.x86_64.rpmmysql-community-server-5.6.47-2.el7.x86_64.rpm在使用localinstall安装
[root@localhost soft]# yum -y localinstall *.rpm
或者
[root@localhost soft]# yum -y localinstall mysql-community-server-5.7.29-1.el7.x86_64.rpm如果网速不好则用rpm安装,安装顺序如下
[root@localhost soft]# rpm -ivh mysql-community-common-5.6.47-2.el7.x86_64.rpm
[root@localhost soft]# rpm -ivh mysql-community-libs-5.6.47-2.el7.x86_64.rpm
[root@localhost soft]# rpm -ivh mysql-community-client-5.6.47-2.el7.x86_64.rpm
[root@localhost soft]# rpm -ivh mysql-community-server-5.6.47-2.el7.x86_64.rpm4.启动
[root@localhost soft]# systemctl start mysqld
[root@localhost soft]# systemctl enable mysqld5.登录
[root@localhost ~]# mysql6.修改密码
[root@localhost ~]# mysqladmin -u root password 123
Warning: Using a password on the command line interface can be insecure.//这个提示表示密码太短
如果想改密码可以这样操作
[root@localhost ~]# mysqladmin -u root -p123 password 1234
上条没有没有加-p表示mysql没有密码因为是首次安装
下面这条加了-p表示指定之前的密码7.其他服务器远程连接mysql
首先在mysql服务器执行:
mysql>
grant all privileges on *.* to root@% identified by 123 with grant option;
mysql>
flush privileges;
远程主机
mysql -uroot -p123 -h 192.168.81.210
2.3.安装PHP
- 使用第三方扩展源安装php7.1
1.删除之前系统安装的php
[root@localhost php]# yum remove php-mysql-5.4 php php-fpm php-common2.安装扩展源
[root@localhost php]# wget http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@localhost php]# yum -y localinstall webtatic-release.rpm3.安装php7.1
如果https访问不到那么久在安装之前把/etc/yum.repos.d/webtatic.repo,把里面的https改成http,例如:mirrorlist=http://mirror.webtatic.com/yum/el7/SRPMS/mirrorlist
把rpm包下载到指定目录,方便下次使用,共计25个包
首先配置yum,开启缓存,不然安装好后就会自动删除
[root@localhost conf.d]# vim /etc/yum.conf
keepcache=1[root@localhost soft]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb --downloaddir=/root/soft/ --downloadonly
[root@localhost soft]# yum -y localinstall *.rpm4.启动
[root@localhost soft]# systemctl start php-fpm
[root@localhost soft]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.5.查看端口,到此完成
[root@localhost soft]# ss -lnptu | grep nginx
tcpLISTEN0128*:80*:*users:(("nginx",pid=7375,fd=12),("nginx",pid=7374,fd=12))
[root@localhost soft]# ss -lnptu | grep mysql
tcpLISTEN080:::3306:::*users:(("mysqld",pid=20862,fd=10))
[root@localhost soft]# ss -lnptu | grep php
tcpLISTEN0128127.0.0.1:9000*:*users:(("php-fpm",pid=23602,fd=9),("php-fpm",pid=23601,fd=9),("php-fpm",pid=23600,fd=9),("php-fpm",pid=23599,fd=9),("php-fpm",pid=23598,fd=9),("php-fpm",pid=23595,fd=7))没有网络的情况下,把所有的PHP的rpm包拷到服务器,执行php_install.sh即可
3.验证LNMP是否可用 3.1.Nginx解析php页面
- 验证nginx是否能正常解析php动态请求,以及php程序是否正常连接数据库
- 小技巧:location /中配置内容可以直接写在server中
1.配置server
[root@localhost conf.d]# vim php.conf
server
listen 80;
server_name phptest.com;
root /web/phptest;
index index.php index.html;
location ~ \\.php$
root /web/phptest;
fastcgi_pass 127.0.0.1:9000;
//fastcgi调用php-fpm
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
//$document_root表示/etc/nginx也就是nginx安装目录
include fastcgi_params;
//引入fastcgi脚本,这个include表示上级目录也可以写绝对路径2.写入php页面
[root@localhost conf.d]# vim /web/phptest/index.php
<
?php
phpinfo();
?>
3.重载nginx
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl reload nginx
文章图片
3.2.PHP连接MySQL
直接在站点目录下面写一个php文件即可,不需要重载
[root@bogon phptest]# vim mysqltest.php
<
?php
$servername = "localhost";
$username = "root";
$password = "123";
//创建链接
$conn = mysqli_connect($servername, $username, $password);
//检测连接
if (!$conn)
die("Connection failed: " . mysqli_connect_error());
echo "连接成功"?>
文章图片
3.3.扩展方式加主机头访问
- 不写全网站根目录即可
server
listen 80;
server_name php.com;
location /
root /web;
index index.php;
location ~ \\.php$
root /web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
4.部署WordPress博客站点 4.1.配置WordPress站点
[root@localhost conf.d]# vim wordpress.conf
#wordpress
server
listen 80;
server_name jiangxl.wordpress.com;
location /
root /web/wordpress;
index index.php index.html;
location ~ \\.php$
root /web/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILRNAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl reload nginx
4.2.部署WordPress源码
wget https://cn.wordpress.org/wordpress-4.9.4-zh——CN.tar.gz由于网站登录失败,因此我从第三方下载了wordpress-5.2.3-zh_CN.zip,上传到/web目录
解包
[root@bogon web]# mkdir /web
[root@bogon web]# cd /web
[root@bogon web]# unzip wordpress-5.2.3-zh_CN.zip
- 到此WordPress站点可以访问到安装界面
文章图片
- wordpress会用到后台数据库,因为博客肯定是需要上传文章附件等等,不配置数据库页面显示如下
文章图片
- 需要手动创建数据库,开始配置mysql
[root@localhost conf.d]# mysql -uroot -p123
mysql>
create database wordpress;
Query OK, 1 row affected (0.00 sec)mysql>
exit
4.4.配置网站属主
- 默认nginx的所属用户时nginx,nginx用户对/web/wordpress没有写入权限,因此会无法生成wp-config.php文件,因此我们需要修改网站属主
文章图片
- nginx也要修改程序用户,让通过nginx访问页面的用户具有写权限
- 同样php-fpm也要修改程序用户,让通过访问php页面的用户具有写权限
- 小技巧,搞架构记得程序所属用户设置成一样的,开始配置
[root@localhost conf.d]# groupadd -g 888 www
[root@localhost conf.d]# useradd -u 888 -g 888 www
[root@localhost conf.d]# chown -R www.www /web/wordpress修改nginx所属用户
[root@localhost conf.d]# sed -ri /^user/c user www;
../nginx.conf
重载让日志生效
[root@localhost conf.d]# systemctl reload nginx修改php-fpm所属用户
www.conf是他的模板文件,主配置文件是php-fpm.conf、php.ini
[root@localhost conf.d]# sed -ri /^user/c user = www /etc/php-fpm.d/www.conf
[root@localhost conf.d]# sed -ri /^group/c group = www /etc/php-fpm.d/www.conf
重启让日志生效
[root@localhost conf.d]# systemctl restart php-fpm
4.5.页面安装
4.5.1.开始安装
文章图片
4.5.2.填写数据库信息
文章图片
4.5.3.确认安装
- 这一步就生成了wp-config.php文件
文章图片
文章图片
4.5.4.配置后台
文章图片
4.5.5.安装完成
文章图片
5.部署wecenter知乎系统 5.1.配置wecenter站点
[root@localhost conf.d]# vim wecenter.conf
#wecenter
server
listen 80;
server_name jxl.wecenter.com;
root /web/wecenter;
index index.php index.html;
location ~ \\.php$
root /web/wecenter;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl reload nginx
5.2.部署wecenter源码
[root@jxl web]# unzip -d wecenter WeCenter_3-3-4.zip
[root@jxl web]# chown -R www:www /web/
5.3.配置数据库
创建wecenter数据库就行
[root@localhost web]# mysql -uroot -p123
mysql>
create database wecenter;
Query OK, 1 row affected (0.00 sec)mysql>
exit
Bye
5.4.页面安装
5.4.1.服务器环境检测
文章图片
6.4.2.配置数据库
文章图片
6.4.3.添加后台管理员
文章图片
6.4.4.安装完成
文章图片
6.4.5.网站首页
文章图片
6.4.6.登录后台点击登录按钮
文章图片
文章图片
推荐阅读
- 图解数据结构排序全面总结(上)
- Security安全认证 | Spring Boot如何集成Security实现安全认证
- Centos系统部署nginx1.18.0
- Nginx最常用的七种模块配置 #yyds干货盘点#
- 高频面试java高级进阶之锁?与CAS详解#yyds干货盘点#
- Database Sharding 架构深度解析指南
- Nginx基本概述 #yyds干货盘点#
- MySQL和Redis的数据一致性问题
- pd虚拟机中如何手动分配内存()