LNMP搭建

lnmp工作流

1.用户通过浏览器输入域名访问到nginx web服务器

2.nginx进行用户请求判断(location url匹配的功能)静态请求则nginx直接响应给用户,如果是动态请求,比如.php结尾;那么nginx就会通过fastcgi接口把请求转发给php后台程序的引擎(php-fpm进程),php进行动态请求解析(获取数据库中的内容,要登陆,注册),php解析发现请求还要读取数据库,就会再通过php连接数据库,然后读取完毕之后返回给nginx,最终nginx把数据库响应给用户客户端

用户浏览器发出请求 >>> nginx(动静态请求分析)>>> 动态 >>> fastcgi_pass >>> php进程(php-fpm) >>> 读取数据库内容(mysql_connect) >>> mysql

LNMP搭建之nginx部署

1.安装nginx的系统依赖环境
yum install -y zlib zlib-devel openssl openssl-devel pcre pcre-devel wget http-tools vim
2.下载nginx源代码包
wget http://nginx.org/download/nginx-1.20.0.tar.gz
3.解压缩源代码包
tar -xzf nginx-1.20.0.tar.gz
4.创建普通的nginx用户,用于运行nginx进程,降低nginx的系统权限
useradd nginx -u 1111 -s /sbin/nologin -M
5.编译安装
./configure --user=nginx --group=nginx --prefix=/opt/nginx120 --with-http_gzip_static_module --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install
6.给nginx配置一个软连接,这是生产环境常用的操作,便于运维,开发,测试一起使用,也便于日后nginx的升级
ln -s /opt/nginx120/ /opt/nginx
7.配置环境变量
[root@www ~]# cat /etc/profile.d/nginx.sh 
export PATH=$PATH:/opt/nginx/sbin/
[root@www ~]# source /etc/profile

LNMP搭建之mysql部署

安装mysql前提准备

1.创建普通用户mysql,降低程序运行权限
useradd -s /sbin/nologin mysql
2.下载mysql二进制包
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz

二进制方式安装mysql

1.解压二进制mysql代码
[root@www ~]# tar -xzf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz 

2.配置软连接,快捷访问mysql
ln -s /opt/mysql-5.7.32-linux-glibc2.12-x86_64/ /opt/mysql

3.安全性的准备工作,卸载可能centos7存在的mariadb相关的依赖
rpm -e --nodeps mariadb-libs
4.开始准备启动mysql的配置文件
[root@www ~]# cat /etc/my.cnf 
[mysqld]
basedir=/opt/mysql/
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
server_id=1
port=3306
log_error=/opt/mysql/data/mysql_error.log

[mysql]
socket=/tmp/mysql.sock

初始化mysql服务器

1.检查mysql所需的依赖环境
yum install -y libaio-devel

2.创建mysql数据文件夹,用于初始化数据,且进行权限控制
[root@www ~]# mkdir -p /opt/mysql/data
[root@www ~]# chown -R mysql:mysql /opt/mysql

3.初始化mysql数据库
[root@www ~]# /opt/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/mysql/data --basedir /opt/mysql

配置mysql客户端

使用systemctl命令管理mysql数据库

1.编写mysql启动的脚本,定义一个mysqld.service
[root@www ~]# cat /etc/systemd/system/mysqld.service 
[Unit]
Description=MySQL server by qiu
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000

启动mysql数据库

[root@www ~]# systemctl start mysqld
[root@www ~]# systemctl status mysqld
● mysqld.service - MySQL server by qiu
   Loaded: loaded (/etc/systemd/system/mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-05-13 09:28:21 EDT; 5s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 4278 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─4278 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf

May 13 09:28:21 www.aa.com systemd[1]: Started MySQL server by qiu.

配置环境变量

[root@www ~]# cat /etc/profile.d/mysql.sh
export PATH=$PATH:/opt/mysql/bin
[root@www ~]# source /etc/profile

登录mysql数据库

首次登陆root密码为空,直接回车即可
[root@www ~]# mysql -uroot -p
修改root密码
[root@www ~]# mysqladmin -uroot password "qhj123"
测试登陆
mysql -uroot -pqhj123

LNMP搭建之PHP部署

FASTCGI

cgi通用网关接口,用于http服务器(nginx,apache)和其他应用服务器(指的是另一个动态服务器上安装的python,php脚本编程语言编写的一个逻辑框架)通信的一个工具

fastcgi是一个可伸缩、高效的在http服务器之间和动态脚本之间通信的网关接口

  • 在Linux环境下,fastcgi其实就是一个socket套接字文件
  • 如果http服务器和后端程序运行在两台服务器上,这个fastcgi通信形式就是IP+端口的网络通信模式
  • 如果http服务器和后端程序运行在同一台机器上,那么这个socket就可以是本地通信
  • ip+port,127.0.0.1
  • socket套接字文件

多数主流的web服务器都是支持fastcgi网关接口,比如nginx,apache,lighttpd

fastcgi通用网关接口,也被多种脚本编程语言支持

当http服务器遇见静态请求,直接返回给用户;如果是动态请求,nginx就转发给fastcgi+php,后端程序进行逻辑处理完毕后,再返回给nginx,最终给用户响应

nginx通过fastcgi_pass模块转发动态请求

安装PHP所需环境

1.安装PHP所需的依赖环境
yum install gcc gcc-c++ make zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y

2.发现yum仓库缺少一个软件包No package libiconv-devel available,因此我们需手动下载,自行编译安装
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
tar -xzf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/opt/libiconv && make && make install

安装PHP

1.下载PHP源代码包
wget http://mirrors.sohu.com/php/php-7.3.5.tar.gz

2.解压缩PHP源代码包
tar -xzf php-7.3.5.tar.gz

3.编译安装
./configure --prefix=/opt/php7.3.5 \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/opt/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp \
--enable-opcache=no

make && make install

php配置文件

默认的php配置文件模板,在解压php源码的目录下

[root@www php-7.3.5]# pwd
/root/php-7.3.5
[root@www php-7.3.5]# ls php.ini*
php.ini-development  php.ini-production

2.拷贝该配置文件,放到php的编译安装目录下
cp php.ini-development /opt/php7.3.5/lib/php.ini

有关fastcgi配置文件

1.检查fastcgi的默认配置文件
[root@www php-7.3.5]# cd /opt/php7.3.5/etc/
[root@www etc]# ls
pear.conf  php-fpm.conf.default  php-fpm.d

2.拷贝模板配置文件,生成新的php配置文件
[root@www etc]# cp php-fpm.conf.default php-fpm.conf
[root@www etc]# cd php-fpm.d/
[root@www php-fpm.d]# cp www.conf.default www.conf

启动PHP服务,指定以fastcgi形式

用绝对路径命令,启动php进程
[root@www php-fpm.d]# /opt/php7.3.5/sbin/php-fpm 

启动PHP后,检查端口和进程状态
[root@www php-fpm.d]# ps -ef | grep php
root      13777      1  0 12:19 ?        00:00:00 php-fpm: master process (/opt/php7.3.5/etc/php-fpm.conf)
nginx     13778  13777  0 12:19 ?        00:00:00 php-fpm: pool www
nginx     13779  13777  0 12:19 ?        00:00:00 php-fpm: pool www

[root@www php-fpm.d]# netstat -tunlp | grep php
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      13777/php-fpm: mast

修改nginx支持PHP

cat extra/test_php.conf
server{
	listen 80;
	server_name _;
	
	location / {
		root html;
		index index.html;
	}
	
	location ~ .*\.(php|php5)?$ {
		root html/php;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi.conf;
	}
}

检查启动nginx,mysql,php后进行测试

什么是lnmp架构 lnmp项目_什么是lnmp架构


什么是lnmp架构 lnmp项目_nginx_02