LNMP环境搭建 —— Linux + Nginx + MySQL + PHP

Winema ·
更新时间:2024-11-13
· 630 次阅读

Table of Contents

LNMP定义

系统环境

LNMP安装部署

安装Nginx

解压源码包并进行语法检测[通过字体颜色可以查看是否写错]

编译

make && make install

隐藏版本号

关闭debug,减少编译代码量

修改nginx配置文件

开启nginx

安装MySQL

官网下载MySQL 

解压MySQL

编译MySQL

make && make install 安装MySQL

配置过程一

配置过程二

安装php

解压

编译

安装

编辑配置文件

编辑启动脚本

测试

LNMP定义

基于Linux操作系统,以Nginx作为web服务器,Mysql作为数据库。Nginx会直接处理静态请求,因为Nginx本身不具备处理动态请求能力,它会把用户的动态请求交给php服务(php-fpm)去处理,php服务可以和数据库进行交互,将结果返回给Nginx,最终返回给用户

流程:

静态请求:client -> nginx(location) -> html -> client

动态请求:client -> nginx(location) -> fastcgi(快速通用网关接口) -> php-fpm(管理进程) -> wrapper(工作进程) -> php -> mysql(php连接数据库)  -> php -> php-fpm -> fastcgi -> nginx -> http -> client 

系统环境

系统:rhel7.6

安装包版本:

nginx-1.18.0 mysql-boost-5.7.30 php-7.4.5 LNMP安装部署 安装Nginx 解压源码包并进行语法检测[通过字体颜色可以查看是否写错]

添加语法检测:

编译 yum install -y gcc gcc-c++ pcre-devel openssl-devel [root@node1 nginx-1.18.0]# ./configure --prefix=/usr/local/lnmp/nginx \ > --with-http_ssl_module \ > --with-http_stub_status_module \ > --user=nginx --group=nginx

make && make install

没有报错,make成功,同时在objs目录下又添加了很多内容

/usr/local/lnmp/nginx/sbin/nginx -V # 查看nginx系统版本内容

但是此时我们发现nginx版本号完全显示出来,这在企业中是相对比较危险的,那么接下来我们将其隐藏

隐藏版本号 vim src/core/nginx.h

关闭debug,减少编译代码量 vim auto/cc/gcc

关闭前:

关闭后:

修改nginx配置文件 # 默认不支持动态页面访问 cd /usr/local/lnmp/nginx/conf vim nginx.conf ### 打开php模块,并进行修改 修改访问顺序,首先访问index.php,没有再进行访问index.html ###

做软链接来方便操作,直接通过nginx来充当命令

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/ 开启nginx nginx # 开启nginx netstat -tnlp # 查看端口

安装MySQL

安装和更新部分官方文档:https://dev.mysql.com/doc/refman/5.7/en/source-installation-methods.html

官网下载MySQL 

 这里咱们不用最新版本,选择5.7.30版本

image widget

解压MySQL

编译MySQL

之前我们编译时通过./cofigure,但是我们可以看到,当前目录下并没有configure,这是因为MySQL是通过cmake来编译

useradd -s /sbin/nologin -M mysql # 创建MySQL用户,用来启动MySQL进程 yum install -y cmake # 安装cmake用于编译MySQL cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ # 安装MySQL -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ -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 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306

但是,这并不是结束,出现了错误

原因已经告知,缺少-DWITH_BOOST=模块,添加该模块再次运行

code snippet widget

并没有结束,再次运行的结果仍然有错误,看错误提示,告知我们缺少ncurses-devel库

yum install -y ncurses-devel

在这里要注意,在重新预编译时需要删除上一次编译的缓存文件CMakeCache.txt 

rm -fr CMakeCache.txt

再次编译

报错,需要添加C++编译器

yum install -y gcc-c++

清理缓存后再次编译,出现一个warning

yum install -y bison

 清理缓存,并再次编译,编译成功~编译过程已经没有错误

make && make install 安装MySQL

安装过程比较长,需要耐心等待一阵子。这里我直接截取部分过程,代表已经安装完成

配置过程一 创建data目录(编译时选择的参数,sock存放路径),并更改所属为mysql cd /usr/local/lnmp/mysql/ mkdir data chown -R mysql data

做软链接 ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/

这里为了后面可以快捷使用mysql,创建软链接到/usr/local/bin/ 

修改配置文件一 cd mysql-test/include/ # 切换到配置文件目录下 mv /etc/my.cnf /etc/my.cnf.bak # 将原先的/etc/my.cnf进行备份,命名为/etc/my.cnf.bak cp default_my.cnf /etc/my.cnf # 将default_my.cnf复制到/etc/目录下,且命名为my.cnf vim /etc/my.cnf # 编译过程中所指定的配置文件目录

cd support-files/ cp -a mysql.server /etc/init.d/mysqld # 复制脚本 chmod +x /etc/init.d/mysqld # 增加执行权限 chkconfig mysqld on # 设置开机启动 chkconfig --list # 查看设置详情 systemctl status mysqld # 查看当前mysqld状态

初始化 mysqld --user=mysql --initialize

启动mysqld image widget systemctl start mysqld systemctl status mysqld 登录mysql(这里初始密码即初始化时的默认密码) mysql -uroot -p # 登录数据库

重置密码  mysql_secure_installation # 重置密码,这里我重置为dsd

image widget

测试访问mysql mysql -uroot -p

配置过程二 修改配置文件 vim /etc/my.cnf #编译时指定了配置文件目录

初始化 ./bin/mysqld --user=mysql --initialize

启动服务  ./support-files/mysql.server start

这里我出现了下图问题,不知道是不是大家都会出现,若出现可以参考一下我的解决办法

mkdir /var/log/mariadb # 创建mariadb目录 touch /var/log/mariadb/mariadb.log # 创建mariadb.log文件 chown -R mysql /var/log/mariadb/ # 修改使用者权限

启动成功~~~ 

重置密码 ./bin/mysql_secure_installation

image widget

安装php

官方下载地址:https://www.php.net/downloads.php 

解压

编译 ./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 libxml2-devel.x86_64 sqlite-devel.x86_64 libpng-devel.x86_64 -y

网上下载oniguruma包,并进行安装

wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-5.9.5-3.el7.x86_64.rpm ## 下载oniguruma二进制包 wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-devel-5.9.5-3.el7.x86_64.rpm ## 下载oniguruma-devel二进制包 yum install oniguruma-5.9.5-3.el7.x86_64.rpm oniguruma-devel-5.9.5-3.el7.x86_64.rpm -y

依赖安装完成,我们重新进行编译

编译成功~

安装 make && make install

编辑配置文件 修改php-fpm.conf配置文件

cp php-fpm.conf.default php-fpm.conf #备份默认配置文件1 vim php-fpm.conf

编辑扩展配置文件  cd php-fpm.d/ cp www.conf.default www.conf # 备份默认配置文件2 vim www.conf # 编辑配置文件2 ### nginx只能处理静态请求,当在接收到动态请求时会传给php,因此php这里接收的就是nginx的信息 ###

修改php主配置文件  cd php-7.4.5/ cp php.ini-production /usr/local/lnmp/php/etc/php.ini # 拷贝主配置文件到安装路径下 cd /usr/local/lnmp/php/etc/ vim php.ini # 编辑主配置文件 ### 更改时区到上海 ###

编辑启动脚本 cd php-7.4.5/sapi/fpm cp init.d.php-fpm /etc/init.d/php-fpm # 复制启动脚本到/etc/init.d/目录下 chmod +x /etc/init.d/php-fpm # 给该文件提供执行权限 /etc/init.d/php-fpm start

错误提示告知我们由于缺少nginx用户,那么我们就去新增一下

useradd -s /sbin/nologin -M nginx # 新增nginx用户 /etc/init.d/php-fpm start # 启动 netstat -tnlp # 查看我们开启的端口

测试 cd /usr/local/lnmp/nginx/html vim index.php ### ###

访问成功,显示php的信息页面

dsd2333 原创文章 99获赞 46访问量 6万+ 关注 私信 展开阅读全文
作者:dsd2333



Linux lnmp lnmp环境搭建 PHP Nginx Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号