# make & make install
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP
工作流程:
client用户请求 --> 通过cdn、4lb负载均衡等 --> 服务端nginx --> 如果用户请求为html这类静态页面 --> nginx直接返还结果。
client用户请求 --> 通过cdn、4lb负载均衡等 --> 服务端nginx --> 如果用户请求为动态页面 --> 请求转移到fastcgi协议 --> 然后发给php-fpm进程 --> 进一步转发到工作进程wrapper --> 再到php服务 --> 如果需要访问mysql数据库 --> 返回结果到php --> php-fpm --> fastcgi --> nginx --> clint
搭建lnmp架构
编译mysql(源码包下载地址:https://downloads.mysql.com/archives/community/)
# tar zxf mysql-boost-5.7.30.tar.gz 解压
# cd mysql-5.7.30/
# useradd -s /sbin/nologiin -M mysql安装前创建 mysql 用户来启用Mysql 服务
没有安装cmake提前安装
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #指定安装的位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #指定套接字文件的位置
> -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \
> -DEXTRA_CHARSETS=all \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #存储引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \ #存储引擎
> -DWITH_READLINE=1 \ #支持readline库
> -DENABLED_LOCAL_INFILE=1 \ #加载本地数据
> -DMYSQL_USER=mysql \ #只定mysql用户为运行
> -DMYSQL_TCP_PORT=3306 #指定运行端口
> -DWITH_BOOST=boost/boost_1_59_0 #指定boost
安装过程中会出现一些报错需要安装一些组件,按照提示安装().devel ,我的安装过程需要的组件有gcc-c++,ncurses-devel,bison。安装完成后删除 rm -fr CMakeCache.txt(此文件为预编译缓存)。解决所有组件后开始编译安装
# make & make install
# cd /usr/local/lnmp/mysql/
# mkdir data 编译时指定的目录
# chown -R mysql data/ 修改目录的拥有者
# cp mysql-test/include/default_my.cnf /etc/my.cnf 复制配置文件
# cp -a support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld 给脚本执行权限
# chkconfig mysqld on 设置开机启动
# ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/ 做软连接
# mysqld --user=mysql --initialize 初始化(完成后生成一个密码)
# systemctl start mysqld
# systemctl status mysqld.service
此时可以使用生成的密码登录数据库,但是没有安全初始化无法查看数据库。所以需要进行安全初始化;这里直接进行安全初始化
# mysql_secure_installation 安全初始化修改完密码后便可以登录数据库查看
# mysql -uroot -pBp4890731+
mysql> show databases;
编译php(源码包下载地址:https://www.php.net/downloads.php#gpg-7.4.5)
# tar zxf php-7.4.20.tar.gz 解压
# cd php-7.4.20/
# ./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-s 预编译
编译过程中需要安装的组件有libpng-devel,libxml2-devel,sqlite-devel。(oniguruma,oniguruma-devel)这两个安装包需要在网上下载,下载地址( http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm,http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm)。编译完成后进行make install。
# rpm -ivh oniguruma-6.7.0-1.el7.x86_64.rpm oniguruma-devel-6.7.0-1.el7.x86_64.rpm 安装组件
继续编译
编译完成后
# make insatll
编辑配置文件
# cd /usr/local/lnmp/php/
# cp etc/php-fpm.conf.default etc/php-fpm.conf
# vim etc/php-fpm.conf 此文件中需要打开php进程
# cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
# vim etc/php-fpm.d/www.conf 更改配置中的user和group
最后复制源码中的主配置文件
# cp /root/Downloads/php-7.4.20/php.ini-development etc/php.ini
# vim etc/php.ini 更改时区
# cp /root/Downloads/php-7.4.20/sapi/fpm/init.d.php-fpm /etc/init.d/php.fpm 复制启动脚本
# chmod +x /etc/init.d/php.fpm 加执行权限
# useradd -s /sbin/nologin -M nginx 添加nginx用户
# /etc/init.d/php.fpm start 开启服务
# netstat -antlp 查看端口
编译nginx(源码包下载地址:http://nginx.org/en/download.html)
# tar zxf nginx-1.18.0.tar.gz 解压
# cd nginx-1.18.0/# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx 编译
# make install、
# nginx/sbin/nginx -V
安装完成后,可以查看版本号。我们需要删除版本号后的变量和注释掉debug
# vim /root/Downloads/nginx-1.18.0/src/core/nginx.h
然后删除nginx目录重新编译
# make & make install
# cd /usr/local/lnmp
# vim conf/nginx.conf 添加index.php文件,首先访问此文件。之后需要开启php连接模块,发布页面时index.php,直接访问fastcgi.conf
然后开启服务
# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin 做软连接
# nginx -t 语法检查
# nginx 开启服务 (nginx -s reload 重新加载)
访问测试:
写一个php页面
# vim conf/nginx.conf
测试: lnmp架构搭建完成