LNMP架构之静态缓存(nginx+php+mysql+memcache)

本文详细介绍了LNMP(Linux+Nginx+MySQL+PHP)架构的基本概念、优势及如何从源码编译安装各组件。通过实例演示了如何在Linux环境下编译并配置MySQL、PHP和Nginx,以及如何整合这些组件来搭建一个论坛系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.LNMP基本架构

L(linux)N(nginx)M(mysql)P(php)

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言

二.lnmp架构的优点

在这里插入图片描述

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。 Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。
Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

三.实现mysql,php,nginx的源码编译

1.mysql的源码编译
[root@server1 ~]# ls # 先获取软件包
cmake-2.8.12.2-4.el6.x86_64.rpm # cmake是编译器
mysql-boost-5.7.17.tar.gz
[root@server1 ~]# tar zxf mysql-boost-5.7.17.tar.gz
[root@server1 ~]# ls
cmake-2.8.12.2-4.el6.x86_64.rpm
mysql-5.7.17 mysql-boost-5.7.17.tar.gz
[root@server1 ~]# yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm
[root@server1 ~]# yum install -y gcc gcc-c++ ncurses-devel bison
[root@server1 ~]# mkdir /usr/local/lnmp
[root@server1 ~]# cd mysql-5.7.17/
[root@server1 mysql-5.7.17]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DWITH_BOOST=boost/boost_1_59_0/
在这里插入图片描述

root@server1 mysql-5.7.17]# rm -fr CMakeCache.txt  # 在编译过程中如果解决依赖性,再重新编译时,需要清除缓存
[root@server1 mysql-5.7.17]# make && make install
[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# ls
bin  COPYING  docs  include  lib  man  mysql-test  README  share  support-files
[root@server1 mysql]# cd support-files/
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf 
cp: overwrite `/etc/my.cnf'? Y
[root@server1 support-files]# vim /etc/my.cnf  
 basedir =/usr/local/lnmp/mysql 
 datadir =/usr/local/lnmp/mysql/data 
 port =3306 
 # server_id = ..... 
 socket =/usr/local/lnmp/mysql/data/mysql.sock	

在这里插入图片描述

[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql   # 添加mysql用户,-u,指定用户uid,-g,指定用户组,-d,指定用户家目录,-M,禁止自主创建用户家目录
[root@server1 mysql]# pwd
/usr/local/lnmp/mysql
[root@server1 mysql]# chown -R mysql.mysql  /usr/local/lnmp/mysql   # 修改用户名和组名
[root@server1 mysql]# vim ~/.bash_profile   # 设置环境变量,方便登陆
10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

在这里插入图片描述

[root@server1 mysql]# source /root/.bash_profile     # 检测语法
[root@server1 mysql]# mysql   # 输入mysql,然后按tab键,可以加载出来,说明,文件已经生效

在这里插入图片描述

[root@server1 mysql]# mysqld --initialize --user=mysql    # 初始化,生成临时登陆密码

在这里插入图片描述

root@server1 mysql]# chown root.mysql /usr/local/lnmp/mysql -R 
[root@server1 mysql]# chown mysql /usr/local/lnmp/mysql/data -R 
[root@server1 mysql]# ll

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
2.源码编译php

 此安装包自行获取
[root@server1 ~]# ls
libmcrypt-2.5.8-9.el6.x86_64.rpm        
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 
php-5.6.35.tar.bz2
[root@server1 ~]# tar jxf php-5.6.35.tar.bz2 
[root@server1 ~]# yum install re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm gd-devel-2.0.35-11.el6.x86_64.rpm -y

 下载php的依赖性安装包
[root@server1 ~]# yum install gmp-devel zlib-devel libxml2-devel curl-devel net-snmp-devel -y
[root@server1 ~]# cd php-5.6.35 

 开始进行源码编译,选择自己需要的模块进行编译
[root@server1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php \
 --with-config-file-path=/usr/local/lnmp/php/etc \
 --with-mysql=mysqlnd \
 --enable-mysqlnd  \
 --with-mysqli=mysqlnd  \
 --with-pdo-mysql=mysqlnd \
 --with-openssl \
 --with-snmp \
 --with-gd \
 --with-zlib \
 --with-curl \
 --with-libxml-dir \
 --with-png-dir \
 --with-jpeg-dir \
 --with-freetype-dir \
 --without-pear \
 --with-gettext \
 --with-gmp \
 --enable-inline-optimization \
 --enable-soap \
 --enable-ftp \
 --enable-sockets \
 --enable-mbstring \
 --enable-fpm \
 --with-fpm-user=nginx \
 --with-fpm-group=nginx \
 --with-mcrypt \
 --with-mhash



 这些都是编译过程中需要的安装包
[root@server1 php-5.6.35]# yum install -y libxml2-devel-2.7.6-14.el6.x86_64
[root@server1 php-5.6.35]# yum install -y openssl-devel
[root@server1 php-5.6.35]# yum install -y libcurl-devel
[root@server1 php-5.6.35]# yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64
[root@server1 php-5.6.35]# yum install -y 2:libpng-devel-1.2.49-1.el6_2.x86_64
[root@server1 php-5.6.35]# yum install -y freetype-devel-2.3.11-14.el6_3.1.x86_64
[root@server1 php-5.6.35]# yum install -y gmp-devel-4.3.1-7.el6_2.2.x86_64
[root@server1 php-5.6.35]# yum install -y 1:net-snmp-devel-5.5-49.el6.x86_64
[root@server1 ~]#./configure --prefix=/usr/local/lnmp/php 
--with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd 
--enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 
--with-openssl --with-snmp --with-gd --with-zlib --with-curl 
--with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir 
--without-pear --with-gettext --with-gmp --enable-inline-optimization
--enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm 
--with-fpm-user=nginx --with-fpm-group=nginx  --with-mcrypt --with-mhash   # 再次重新编译
[root@server1 php-5.6.35]# make   &&  make install 
[root@server1 php-5.6.35]# cd
[root@server1 ~]# cat /etc/passwd | grep nginx   # 我们编译的时候,是以nginx用户和nginx组编译php的
[root@server1 ~]# id nginx   #没有nginx用户,只有用户创建了才能起来服务
id: nginx: No such user 
[root@server1 ~]# useradd nginx      # 建立nginx用户
[root@server1 ~]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)
[root@server1 ~]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# ls
php-fpm.conf.default  php.ini
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# vim php-fpm.conf   # 这是php的主配置文件 ,注意,文件里不能写以#开头的注释
pid = run/php-fpm.pid     # 打开pid,服务才能运行

在这里插入图片描述

[root@server1 etc]# cd /root/php-5.6.35
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-5.6.35]# cd sapi/fpm/
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@server1 fpm]# ll  /etc/init.d/php-fpm    # 这是启动脚本
-rw-r--r-- 1 root root 2359 Feb 18 09:32 /etc/init.d/php-fpm
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm   # 给启动脚本添加可执行权限
[root@server1 fpm]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# lsp
hp-fpm.conf  php-fpm.conf.default  php.ini
[root@server1 etc]# vim php-fpm.conf
[root@server1 etc]# vim php.ini 
936 date.timezone =Asia/Shanghai   # 修改时区
[root@server1 etc]# /etc/init.d/php-fpm start   # 开启服务
[root@server1 etc]# netstat -antlp

在这里插入图片描述
3.源码编译nginx

[root@server1 ~]# tar zxf nginx-1.14.0.tar.gz [
root@server1 ~]# cd nginx-1.14.0
[root@server1 nginx-1.14.0]# cd src/core/
[root@server1 core]# vim nginx.h1
4 #define NGINX_VER          "nginx/"
[root@server1 core]# cd -
/root/nginx-1.14.0
[root@server1 nginx-1.14.0]# vim auto/cc/gcc    # 关闭debug日志
171 # debug
172 #CFLAGS="$CFLAGS -g"

[root@server1 nginx-1.14.0]# ./configure
–prefix=/usr/local/lnmp/nginx
–without-http_ssi_module
–with-http_stub_status_module
–user=nginx --group=nginx
–with-threads
–with-file-aio #根据报错下载相应的软件,解决依赖性

[root@server1 nginx-1.14.0]# make && make install
[root@server1 nginx-1.14.0]# cd /usr/local/lnmp/nginx/
[root@server1 nginx]# ls
conf  html  logs  sbin
[root@server1 nginx]# vim conf/nginx.conf	 
          location / { 
              root   html; 
              index  index.php index.html index.htm;  # 把index.php 设置为默认发布目录,如果不改可能会出现403的访问禁止报错 
          }
          
          # 把php与nginx建立联系 
          location ~ \.php$ { 
              root           html; 
              fastcgi_pass   127.0.0.1:9000; 
              fastcgi_index  index.php; 
             # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 
              include        fastcgi.conf; 
          }

在这里插入图片描述

[root@server1 nginx]# cd sbin/
[root@server1 sbin]# ls
nginx
[root@server1 sbin]# pwd
/usr/local/lnmp/nginx/sbin
[root@server1 sbin]# ln -s /usr/local/lnmp/nginx/sbin/nginx  /usr/local/sbin/
[root@server1 sbin]# nginx -t

在这里插入图片描述

[root@server1 sbin]# nginx   # 开启nginx
[root@server1 sbin]# netstat -antlp | grep nginx 或者 netstat -ntlp

在这里插入图片描述
在这里插入图片描述

[root@server1 sbin]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim index.php  # 编写php界面
<?php
phpinfo()
?>

在这里插入图片描述

四.论坛搭建(整合mysql,php,nginx)

[root@server1 ~]# ls
Discuz_X3.2_SC_UTF8.zip
[root@server1 ~]# yum install -y unzip  # 没有这个命令,就要先下载
[root@server1 ~]# unzip Discuz_X3.2_SC_UTF8.zip  -d /usr/local/lnmp/nginx/html/
[root@server1 ~]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# ls
50x.html  index.html  index.php  readme  upload  utility
[root@server1 html]# mv upload/ bbs

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

[root@server1 bbs]# chmod 777 config/ -R
[root@server1 bbs]# chmod 777 data/ -R
[root@server1 bbs]# chmod 777 uc_*  -R

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

[root@server1 bbs]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini 
1013 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1162 mysql.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
1221 mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
[root@server1 etc]# /etc/init.d/php-fpm reload
[root@server1 etc]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# chmod 755 data/
[root@server1 mysql]# /etc/init.d/mysqld   restart

在这里插入图片描述在这里插入图片描述在这里插入图片描述

[root@server1 ~]# cd /usr/local/lnmp/nginx/html/bbs/install/
[root@server1 install]# ls
data  images  include  index.php
[root@server1 install]# rm -fr index.php 
[root@server1 install]# nginx -s reload

在这里插入图片描述在这里插入图片描述

[root@server1 install]# mysql -uroot -p
Enter password: 
mysql> show databases;

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值