LNMP平台搭建与应用 #yyds干货盘点#
Posted 江晓龙的技术博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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模块
1.1.LNMP架构图
图文解释:
客户端使用浏览器访问某页面,通过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=0
yum安装
[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.rpm
2.我们在官网系在了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所有功能都是修改配置文件实现的
2.2.1.安装MySQL5.7
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.rpm
2.安装完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.repo
3.安装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.rpm
4.启动
[root@localhost soft]# systemctl start mysqld
[root@localhost soft]# systemctl enable mysqld
5.由于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:oe
6.登录
[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.rpm
2.安装完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.repo
3.安装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.rpm mysql-community-libs-5.6.47-2.el7.x86_64.rpm mysql-community-common-5.6.47-2.el7.x86_64.rpm mysql-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.rpm
4.启动
[root@localhost soft]# systemctl start mysqld
[root@localhost soft]# systemctl enable mysqld
5.登录
[root@localhost ~]# mysql
6.修改密码
[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-common
2.安装扩展源
[root@localhost php]# wget http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@localhost php]# yum -y localinstall webtatic-release.rpm
3.安装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 *.rpm
4.启动
[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
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=7375,fd=12),("nginx",pid=7374,fd=12))
[root@localhost soft]# ss -lnptu | grep mysql
tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=20862,fd=10))
[root@localhost soft]# ss -lnptu | grep php
tcp LISTEN 0 128 127.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站点可以访问到安装界面
4.3.配置MySQL
-
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.登录后台
点击登录按钮
以上是关于LNMP平台搭建与应用 #yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章
⭐万字长篇超详细的图解Tomcat中间件方方面面储备知识⭐ #yyds干货盘点#