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后进行测试