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

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=<directory>模块,添加该模块再次运行

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
phpinfo() # 输出php一个默认页面
?>
###

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

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值