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) >>> mysqlLNMP搭建之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/profileLNMP搭建之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 -pqhj123LNMP搭建之PHP部署
FASTCGI
cgi通用网关接口,用于http服务器(nginx,apache)和其他应用服务器(指的是另一个动态服务器上安装的python,php脚本编程语言编写的一个逻辑框架)通信的一个工具
fastcgi是一个可伸缩、高效的在http服务器之间和动态脚本之间通信的网关接口
在Linux环境下,fastcgi其实就是一个socket套接字文件
如果http服务器和后端程序运行在两台服务器上,这个fastcgi通信形式就是IP+端口的网络通信模式如果http服务器和后端程序运行在同一台机器上,那么这个socket就可以是本地通信
ip+port,127.0.0.1socket套接字文件
多数主流的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后进行测试



