LNMP 是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
Nginx(fastcgi_pass) → FastCGI → (PHP-fpm → wrapper)php (php解析器)→mysql(读取或写入)
1.用户通过 http 协议发起请求,请求会先抵达 LNMP 架构中的 Nginx
2.Nginx 会根据用户的请求进行判断,这个判断是有 Location 进行完成
3.判断用户请求的是静态页面, Nginx 直接进行处理
4.判断用户请求的是动态页面, Nginx 会将该请求交给 fastcgi 协议下发
5.fastgi 会将请求交给 php-fpm 管理进程, php-fpm 管理进程接收到后会调用具体的工作进程 wrapper
6.wrapper 进程会调用 php 程序进行解析,如果只是解析代码 php 直接返回
7.如果有查询数据库操作,则由 php 连接数据库(用户 密码 IP)发起查询的操作
8.最终数据由 mysql->php->php-fpm->fastcgi->nginx->http->user
这里需要了解一下CGI与FastCGI: https://blog.csdn.net/qq_35887546/article/details/104564855
1)解压安装 mysql
tar zxf mysql-boost-5.7.28.tar.gz
2)创建 mysql 用户
[root@server4 mysql-5.7.28]# useradd -s /sbin/nologin -M mysql #-M表示不分配主目录
[root@server1 mysql-5.7.28]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
[root@server1 mysql-5.7.28]# yum install -y cmake #安装编译器
3)指定编译参数
[root@server4 mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ # 指定套接字文件位置
> -DEXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8 \ #默认字符集
> -DDEFAULT_COLLATION=utf8_general_ci \ #默认字符校对
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb 存储引擎
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装 myisam 存储引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \ ##安装 memory 存储引擎
> -DWITH_READLINE=1 \ #支持 readline 库
> -DENABLED_LOCAL_INFILE=1 \ #启用加载本地数据
> -DMYSQL_USER=mysql \ #指定 mysql 运行用户
> -DMYSQL_TCP_PORT=3306 #指定 mysql 端口
编译时会提示需要依赖性
4)根据提示解决依赖性问题
需要安装包:yum install -y gcc gcc-c++ ncurses-devel openssl-devel -y
安装好依赖性后再进行编译还会报错:
##报错##
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
重新编译时,需要清除原来的对象文件和缓存信息’
make clean;rm -fr CmakeCache.txt
上面报错的信息是缺少-DWITH_BOOST=
参数:
##解决##
将-DWITH_BOOST=boost/boost_1_59_0/
加到编译参数的后面
后面编译会有一个 warning:
CMake Warning at cmake/bison.cmake:20 (MESSAGE):
Bison executable not found in PATH
Call Stack (most recent call first):
sql/CMakeLists.txt:514 (INCLUDE)
##解决:
yum install -y bison
5)安装
make && make install #### (过程较长)
如果 make 还有问题,删除原来的目录,重新解压编译
6)修改权限
cd /usr/local/lnmp/mysql
mkdir data
chown -R root .
chown -R mysql data
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/
7)复制配置文件
cd /usr/local/lnmp/mysql/mysql-test/include
cp default_my.cnf /etc/my.cnf
cd /usr/local/lnmp/mysql/support-files
cp -a mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
systemctl status mysqld
8)初始化
mysqld --user=mysql --initialize ##(以 mysql 用户身份初始化)
初始化会生成一个临时密码,用于登录 mysql(要记住此密码)
#如:2019-01-03T09:06:09.448851Z 1 [Note] A temporary password is generated for root@localhost: r#9VqAoA/au:
9)启动 mysql:
systemctl start mysqld
10)进入 mysql:
mysql -uroot -pr#9VqAoA/au: ##使用刚才的临时密码
执行:show databases;
会报错
需要执行:mysql_secure_installation
,输入初始化密码后修改新密码,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求,剩余全部选 y
mysql 安装配置完成
1)解压:
tar zxf php-7.4.1.tar.gz
yum -y install bzip2
2)进入解压后的目录,开始编译
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/lnmp/mysql --enable-gd --without-pear --enable-fpm
#编译时遇到的报错就安装:
yum install sqlite-devel.x86_64 -y
yum install -y libxml2-devel
yum install -y libpng-devel
3)编译报错,逐步解决依赖性
yum install -y oniguruma-*
4)安装
make && make install
5)拷贝更改配置文件
[root@server5 etc]# pwd
/usr/local/lnmp/php/etc
[root@server5 etc]# cp php-fpm.conf.default php-fpm.conf
查看配置文件中以下几项是否开启:
[root@server1 etc]# vim php-fpm.conf
17 pid = run/php-fpm.pid #需要把注释去掉
6)拷贝子配置文件
[root@server5 php-fpm.d]# pwd
/usr/local/lnmp/php/etc/php-fpm.d
[root@server4 php-fpm.d]# cp www.conf.default www.conf
[root@server4 php-fpm.d]# vim www.conf
23 user = nginx
24 group = nginx
7)拷贝更改 php 主配置文件
[root@server1 php-fpm.d]# cd
[root@server1 ~]# cd lnmp/php-7.4.1/
[root@server5 php-7.4.1]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-7.4.1]# vim /usr/local/lnmp/php/etc/php.ini
修改时区:
961 date.timezone = Asia/Shanghai
8)拷贝 php 启动脚本至/etc/init.d/
[root@server1 php-7.4.1]# cd /root/lnmp/php-7.4.1/sapi/fpm
[root@server5 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
添加执行权限:
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm
添加用户:
[root@server1 fpm]# useradd -u 900 nginx
9)启动
/etc/init.d/php-fpm start
#FastCGI = Fast Common Gateway Interface
#(快速通用网关接口)
HTTP 服务器与你的或其它机器上的程序进行“交谈”的一种工具
启动报错可能因为没有 nginx 用户,需要手动创建
PHP配置完成
1)解压 nginx:
[root@server1 lnmp]# tar zxf nginx-1.14.0.tar.gz
2)进入 nginx 解压包:
[root@server1 lnmp]# cd nginx-1.14.0
[root@server1 nginx-1.14.0]# vim src/core/nginx.h
14 #define NGINX_VER "nginx/" #将此行末尾显示 nginx 版本号的配置删除
[root@server1 nginx-1.14.0]# vim auto/cc/gcc
171 # debug
172 #CFLAGS="$CFLAGS -g" #将这 2 行注释调,关闭 debug
3)编译安装 nginx:
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx
根据提示解决依赖性
##此处应该还需要安装 pcre-devel
4)安装
make && make install
5)修改 nginx 配置文件,开启 php 模块
[root@server1 nginx-1.14.0]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
2 user nginx;
45 index index.php index.html index.htm; #添加 php 页面
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 include fastcgi.conf;
71 }
6)将 nginx 启动脚本链接到/usr/local/sbin/
[root@server1 conf]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server1 conf]# nginx -t ##检测语法
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx ##开启 nginx
SCRIPT_FILENAME
7)尝试访问:
在 nginx 默认发布目录添加 index.php
[root@server1 conf]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim index.php
<?php #可以看到 php 的默认页面
phpinfo()
?>
8)启动 nginx 并访问:
http://172.25.63.1
1.解压
[root@server1 lnmp]# tar zxf wordpress-5.3.2-zh_CN.tar.gz -C /usr/local/lnmp/nginx/html/
2.浏览器访问http://172.25.63.1/wordpress
会看到报错:不能选择数据库
因为mysql中没有wordpress数据库,需要自己创建:
[root@server1 lnmp]# mysql -uroot -predhat
mysql> create database wordpress;
Query OK, 1 row affected (0.07 sec)
5.重试提交
又会看到新的报错:
抱歉,我不能写入wp-config.php文件。
解决:
[root@server1 lnmp]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# chown nginx.nginx wordpress -R