LNMP架构

LNMP架构介绍

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

原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

图解:
LNMP架构_第1张图片

LNMP搭建

系统环境: RHEL6 x86-64 selinux and iptables disabled

本篇博客中涉及的所有软件包下载可参考此博客:https://blog.csdn.net/qq657886445/article/details/83662696

Mysql 编译安装
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm

在这里插入图片描述

yum install -y gcc gcc-c++  ncurses-devel bison openssl-devel   #解决软件包依赖,不装这些依赖,等下cmake时会报错(这些依赖也可以根据报错一个一个解决,缺什么装什么即可)

LNMP架构_第2张图片

tar zxf mysql-boost-5.7.17.tar.gz     #此压缩包需自行下载
cd mysql-5.7.17/
cat CMakeLists.txt  #每次cmake都会缓存在此文件,要是cmake报错之后要先删除此文件,再cmake
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lamp/mysql -DMYSQL_DATADIR=/usr/local/lamp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lamp/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/
# 指定安装目录,数据存放目录,Unix socket 文件路径,安装 myisam 存储引擎,安装 innodb 存储引擎,使用 utf8 字符,校验字符,安装所有扩展字符集,安装boots库(要是压缩包中没有boots则需自行下载,一般xxx-boots这类压缩包中都带有boots)

LNMP架构_第3张图片

make && make install

LNMP架构_第4张图片
注:重新编译时,需要清除旧的对象文件和缓存信息
make clean
rm -f CmakeCache.txt

cd /usr/local/lnmp/mysql/support-files
cp  my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
vim /etc/my.cnf

LNMP架构_第5张图片

groupadd -g 27 mysql
useradd -g 27 -u 27 -M -d /usr/local/lnmp/mysql/  -s /sbin/nologin mysql

在这里插入图片描述

vi ~/.bash_profile  
PATH=$PATH:/usr/local/lnmp/mysql/bin   #添加环境变量
source ~/.bash_profile    #使之生效

LNMP架构_第6张图片

mysqld --initialize --user=mysql    #数据库初始化,此时登陆数据库无法查看信息
mysql_secure_installation #按提示完成 mysql 安全设置,生产环境推荐使用
[root@server6 mysql]# mysql_secure_installation 

Enter password for user root:  #此处密码为上一条初始化命令生成的密码

New password:                  #设定新密码
Re-enter new password:         #再次输入新密码  

Press y|Y for Yes, any other key for No: # 只有y或Y表示yes其余全为NO
Change the password for root ? ((Press y|Y for Yes, any other key for No) : # 由于数据库密码设置要求过高,要是设定的密码较简单,此处直接回车,若是选择y则会重新设置密码

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
      # 是否移除匿名用户

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y    # 是否不让root用户远程登陆

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y      # 删除test库和对test库的访问权限

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y       # 刷新授权表使修改生效

cd /usr/local/lnmp/mysql/       #为安全起见修改权限
chown -R root .
chown -R mysql data

LNMP架构_第7张图片

/etc/init.d/mysqld start    # 启动服务

LNMP架构_第8张图片

php编译及配置
yum install -y libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm net-snmp-devel curl-devel libxml2-devel openssl-devel gmp-devel   # 解决软件包依赖(和mysql一样,依赖可以根据编译报错一个一个解决,缺什么装什么即可)

LNMP架构_第9张图片

rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm

在这里插入图片描述

tar jxf php-5.6.35.tar.bz2
cd php-5.6.35
yum install libjpeg-devel -y

在这里插入图片描述
LNMP架构_第10张图片
在这里插入图片描述

yum install libpng-devel -y

在这里插入图片描述

yum install freetype-devel -y

在这里插入图片描述
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=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 --with-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-libdir=lib64 --with-ldap --with-ldap-sasl --with-mcrypt --with-mhash
LNMP架构_第11张图片

make && make install
cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf

在这里插入图片描述
LNMP架构_第12张图片

vim php-fpm.conf
pid = run/php-fpm.pid     # 去掉此行注释

在这里插入图片描述

cp /mnt/php-5.6.35/php.ini-production /usr/local/lnmp/php/etc/php.ini    # 将配置文件复制到指定路径

LNMP架构_第13张图片

vim /usr/local/lnmp/php/etc/php.ini  #更改时区

LNMP架构_第14张图片

cp /mnt/php-5.6.35/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  #将启动脚本复制到指定路径
chmod +x /etc/init.d/php-fpm   #给启动脚本加以执行权限

在这里插入图片描述

useradd -M -d /usr/local/lnmp/nginx/ -u 800 nginx

LNMP架构_第15张图片

/etc/init.d/php-fpm start   # 启动服务

LNMP架构_第16张图片

Nginx编译安装
tar zxf nginx-1.14.0.tar.gz
cd nginx-1.14.0

LNMP架构_第17张图片

yum install -y gcc openssl-devel pcre-devel  # 解决软件包依赖,gcc openssl-devel 之前已经安装

LNMP架构_第18张图片

vim nginx-1.14.0/src/core/nginx.h   #删除nginx版本信息,为了安全,这样编译后外界无法获取程序的版本号

在这里插入图片描述

vim auto/cc/gcc      #注释掉debug,编译以后程序只有几百 k

在这里插入图片描述

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx

LNMP架构_第19张图片

vim /usr/local/lnmp/nginx/conf/nginx.conf  #编辑配置文件
        location ~ \.php$ {    #以.php结尾的访问,让php-fpm去管理这些访问进程
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
    }

LNMP架构_第20张图片

        location / {  #将index.php置于默认发布页面最前面
            root   html;
            index  index.php index.html index.htm;
        }

LNMP架构_第21张图片

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/    #为了方便调用,将nginx启动脚本链接到/usr/local/sbin/或者/sbin/下

在这里插入图片描述

nginx -t  # 检查是否有语法错误

在这里插入图片描述

vim /etc/security/limits.conf     # 修改允许服务最大打开文件数

在这里插入图片描述

nginx     # 开启nginx

LNMP架构_第22张图片

vim /usr/local/lnmp/nginx/html/index.html

LNMP架构_第23张图片
打开浏览器访问ip测试:
LNMP架构_第24张图片

论坛的搭建

将下载的论坛压缩包解压到nginx的默认发布目录下
LNMP架构_第25张图片
浏览器访问ip/upload 安装论坛
1)点击我同意
LNMP架构_第26张图片
2)由于文件权限问题报错
LNMP架构_第27张图片
修改相关文件权限即可
在这里插入图片描述
刷新网页,点击下一步继续
LNMP架构_第28张图片
3)选择全新安装
LNMP架构_第29张图片
4)填写mysql信息和管理员用户名及密码
LNMP架构_第30张图片
5)显示数据库连接错误
LNMP架构_第31张图片需在/usr/local/lnmp/php/etc/php.ini文件中指定php连接mysql的通信接口,共有三处,完成后重新加载php
LNMP架构_第32张图片
在这里插入图片描述
LNMP架构_第33张图片
在这里插入图片描述
6)刷新网页继续安装,又会报错
LNMP架构_第34张图片
这是连接数据库权限不够,修改数据库data目录权限为755即可
在这里插入图片描述
刷新网页继续安装
LNMP架构_第35张图片
7)此时论坛已安装完成,点击右下角访问即可查看
LNMP架构_第36张图片
8)在右上角管理员登陆登陆
LNMP架构_第37张图片
9)至此lnmp架构搭建完成
LNMP架构_第38张图片
数据库disczu已经自动创建
LNMP架构_第39张图片
点击右上角管理中心,管理员登陆。
LNMP架构_第40张图片
为了避免二次安装,会提示Please delete install/index.php via FTP!
LNMP架构_第41张图片
直接删除upload/install/index.php文件,刷新网页即可
rm -fr /usr/local/lamp/nginx/html/upload/install/index.php
LNMP架构_第42张图片

你可能感兴趣的:(LNMP架构)