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