LNMP平台就是Linux,Nginx,MySQL,PHP的组合架构,需要LINUX服务器,MySQL数据库,PHP解析环境

1本案例在单台服务器上部署LNMP环境
在这里插入图片描述

安专nginx

首先进行安装可以再官网上下载软件包 网址为http://www.Nginx.org
以下是对已经下载好的软件包Nginx1.15进行编译安装
一、首先需要安装配置支持的软件包 pcre、zlib
yum -y install pcre-devel zlib-devel
pcre-devel 正则的包和开发的包
zlib-devel 支持压缩包和开发的包

二、创建一个专门的用户nginx
useradd -M -s /sbin/nologin nginx
创建一个nginx便于自己管理自己,为了安全考虑,同时不允许从控制台登录
那么-M是创建宿主目录,也就是创建普通用户在家目录/home下会有自己的一个目录
-M则不会在产生
id nginx 查看用户是否创建成功
建立nginx的用户,并设置不能远程登录,故不能-M不建议宿主目录

三、切换到opt解压已经下载好,并传到/opt的软件包
[root@localhost opt]# tar xzvf nginx-1.15.9.tar.gz
四、执行安装模块./configure的意思是执行当前目录下面的configure文件
[root@localhost opt]#cd nginx-1.15.9

[root@localhost opt]#yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \                让nginx支持正则表达式
expat-devel \               这俩个是让nginx支持开发的语音,也就是让nginx支持多种的语言
perl 

[root@localhost nginx-1.15.9]#
./configure \ ###配置
–prefix=/usr/local/nginx \ ###配置安装的路径为/usr/local/nginx
–user=nginx \ ###用户是nginx
–group=nginx \ ###组为nginx
–with-http_stub_status_module ####获取nginx的状态统计信息

五、进行编译安装
[root@localhost nginx-1.15.9]# make && make install ###编译和安装
六、优化路径 建立软连接 以便管理员直接执行“nginx”命令就可以调用Nginx的主程序
[root@localhost nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //软链接创建其实就是文件对文件目录对目录,一一对应的才能进行操作的,/usr/local/nginx/sbin/nginx,nginx在这里是一个文件,所以不可能跟sbin进行对应的,因为sbin是一个目录,相当于在/usr/local/sbin/目录下创建了一个nginx文件,/usr/local/sbin里面执行的可以理解成环境变量,及时在任何的地方都可以执行的程序,不需要添加任何的路径
六、下面是Nginx的运行控制
[root@localhost nginx-1.15.9]# nginx ###开启Nginx
[root@localhost nginx-1.15.9]# netstat -anpt | grep nginx ##过滤出nginx
tcp 0 0.0.0.0:80 0.0.0.0:* LISTEN 11191/nginx: master
七、可以在软件上直接看是不是正常运行
[root@localhost nginx-1.15.9]# yum -y install lynx ##安装一个浏览器小程序
[root@localhost nginx-1.15.9]# lynx 127.0.0.1 ##进行测试一下

Welcome to nginx!
如果想让nginx的启动服务交由systemctl管理,那必须有一个nginx.service 这么一个服务,但是nginx不自带这个服务,那么我们就需要手动进行编译了
可以直接在/lib/systemd/system/目录下添加一个名叫nginx.service 的服务,进行编译
[root@localhost nginx-1.15.9]# vi /lib/systemd/system/nginx.service

注释:
[Unit]       单元信息
Description=nginx        描述
After=network.target    网络服务模式
[Service]
Type=forking       forking服务类型,一般start开启这个服务,后天会有一个守护进行去支撑他,让他持续在线工作
PIDFile=/usr/local/nginx/logs/nginx.pid        进程文件,里面存放着每次开启或者关闭的进程信息
ExecStart=/usr/local/nginx/sbin/nginx               启动文件
ExecReload=/usr/bin/kill -s HUP $MAINPID        重载
ExecStop=/usr/bin/kill -s QUIT $MAINPID            停止
PrivateTmp=true            开启缓存
[Install]
WantedBy=multi-user.target           多用户登录模式

[root@localhost ~]#chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]#systemctl enable nginx.service
使用systemctl命令能否正常启用,停止,重启,重载nginx服务
[root@localhost ~]# netstat -auntp |grep nginx
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# netstat -anutp |grep nginx

MySQL安装配置

为了与Nginx,PHP环境保持一致,此处选择采用源代码编译的方式安装MySQL组件

MySQL 部署的方法
*编译安装MySQL
*优化调整
*初始化数据库
*启动MySQL 服务冰设置root数据库账号的密码

安装mysql

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake


注释:
ncurses \
ncurses-devel \   这俩个包是用于字符终端和开发的软件包
bison \  这是一个通用解析器生成器,关联底层c或者c++编程会使用

useradd -s /sbin/nologin mysql
注释:创建一个mysql程序用户,并且指定环境不能远程登录,另外创建账户之后会在普通用户的家目录/home建立一个mysql的家目录

###上传mysql-boost-5.7.20.tar.gz到opt目录下###
cd /opt
tar xf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   通信文件
-DSYSCONFDIR=/etc \  系统配置文件
-DSYSTEMD_PID_DIR=/usr/local/mysql \  pid进程路径
-DDEFAULT_CHARSET=utf8  \               中文的字符集
-DDEFAULT_COLLATION=utf8_general_ci \      扩展字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1 \     这四个是 开启各种存储引擎,STORAGE_ENGINE存储引擎的意思
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \   数据存放位置
-DWITH_BOOST=boost \   兼容c++库的解析器
-DWITH_SYSTEMD=1     自己的进程id

######编译安装####

make && make install

#####数据库目录进行权限调整###
chown -R mysql:mysql /usr/local/mysql/

调整配置文件

[root@localhost mysql-5.7.20]#vi /etc/my.cnf

[client]
port = 3306       // 端口
default-character-set=utf8   //  字符集
socket = /usr/local/mysql/mysql.sock  //通信文件,用于连接数据库

[mysql]
port = 3306 
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql      //使用者
basedir = /usr/local/mysql       //工作目录
datadir = /usr/local/mysql/data    //数据目录
port = 3306                    // 端口
character_set_server=utf8   //   字符集utf8,让其识别中文
pid-file = /usr/local/mysql/mysqld.pid   // 进程文件
socket = /usr/local/mysql/mysql.sock   // 通信文件,用于连接数据库
server-id = 1     //身份标识

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
这是一个默认的语法

chown mysql :mysql /etc/my.cnf

#######设置环境变量####

echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH’ >> /etc/profile

注释:命令让系统识别的几种方式:1.建立软链接,建立在/usr/local/bin或/usr/bin/目录下;
2.cp到系统环境(bin)目录下;3.环境变量的设置,在/etc/profile文件里修改

3.echo ‘export PATH’ >> /etc/profile
source /etc/profile 刷新一下配置文件

切到该目录下,进行下面的配置操作,配置的意思是初始化数据库

cd /usr/local/mysql/

bin/mysqld \
--initialize-insecure \   初始化
--user=mysql \    指定使用者
--basedir=/usr/local/mysql \   工作目录
--datadir=/usr/local/mysql/data   数据目录
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
注释:把mysqld.service拷贝到/usr/lib/systemd/system/目录下,便于使用systemctl命令管理
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306

mysqladmin -u root -p password //刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

mysql -u root -p ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

PHP解析环境的安装

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

安装PHP环境
yum -y install \
libjpeg \    
libjpeg-devel \ 前面俩句专门处理png图片的 和开发包的
libpng libpng-devel \  处理png图片
freetype freetype-devel \  字体样式开发包
libxml2 \
libxml2-devel \  处理文件的格式xml格式,版本2
zlib zlib-devel \  压缩和压缩开发工具包
curl curl-devel \ curl可以不用是浏览器,直接用curl的应用打开一个网页,展示一个内容,相当于字符界面的浏览器工具
openssl openssl-devel     用证书做安全认证

上传php-7.1.10.tar.bz2包到opt目录下

cd /opt
tar xjvf php-7.1.10.tar.bz2
cd php-7.1.10

./configure \
--prefix=/usr/local/php \   安装路劲
--with-mysql-sock=/usr/local/mysql/mysql.sock \   .sock通讯问津,用于连接数据库
--with-mysqli \   连接mysql
--with-zlib \使用压缩
--with-curl \  使用curl的浏览工具
--with-gd \使用之前安装gd库  
--with-jpeg-dir \ 使用jpg图片处理目录
--with-png-dir \ 使用png图片处理目录
--with-freetype-dir \ 字体样式
--with-openssl \  使用证书安全认证
--enable-fpm \  开启动态加载模块
--enable-mbstring \   开启mbstring库,能够支持多字节的字符串,处理中文字符串
--enable-xml \ xml格式处理
--enable-session \ 开启会话共享
--enable-ftp \  开启ftp服务
--enable-pdo \ 连接数据库驱动
--enable-tokenizer \  做身份认证的
--enable-zip  开启zip压缩

make && make install

简单解释一下,php有三个配置文件,PHP.ini核心配置文件,php-fpm.conf进程服务配置文件还有www.conf扩张配置文件。其实www.conf就是php-fpm.conf它的子配置文件

[root@localhost php-7.1.10]#cp php.ini-development /usr/local/php/lib/php.ini

在解压缩目录下cp一个php的默认核心配置文件模板到php工作目录下的lib叫做php.ini

vi /usr/local/php/lib/php.ini 在配置文件修改搜索以下俩条进行补全

cp php.ini-development /usr/local/php/lib/php.ini

让php的配置文件php.ini,命令能让系统识别

vi /usr/local/php/lib/php.ini ( 在配置文件修改搜索以下俩条进行补全)

mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai    时间区域

/usr/local/php/bin/php -m //验证安装的模块

配置及优化FPM模块

[root@localhost php-7.1.10]# cd /usr/local/php/etc/
[root@localhost etc]# ll 查看下是否有这三个文件
total 12
-rw-r–r-- 1 root root 1233 Sep 3 11:51 pear.conf
-rw-r–r-- 1 root root 4463 Sep 3 11:51 php-fpm.conf.default 默认的配置模板
drwxr-xr-x 2 root root 30 Sep 3 11:51 php-fpm.d

[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

拷贝默认配置模板并重新命名为php-fpm.conf

[root@localhost etc]# cd /usr/local/php//etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# cd /usr/local/php/etc/
[root@localhost etc]# vi php-fpm.conf

pid = run/php-fpm.pid   启用fpm的进程模块
另外我们看配置文件里面有一个include包含的信息,php-fpm.d模块下以.conf结尾的配置文件都可以识别

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

从这可以看出www.conf.default就是php-fpm.confde的扩展文件

[root@localhost php-fpm.d]# vi www.conf 到该配置文件看下,可以看到fpm监听端口9000在这里插入图片描述

[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

[root@localhost etc]# netstat -anpt |grep 9000
在这里插入图片描述

ln -s /usr/local/php/bin/* /usr/local/bin/

让/php/bin/下面的所有命令文件放在/usr/local/bin,让其任何路径都可以使用php-cgi及php-config

[root@loacalhost sbin]# ps aux | grep -c “php-fpm” //统计fpm的进程
在这里插入图片描述

让nginx支持php功能

[root@localhost etc]# vi /usr/local/nginx/conf/nginx.conf

  location ~ \.php$ {
            root           html;  //站点目录名称
            fastcgi_pass   127.0.0.1:9000;   监听端口
            fastcgi_index  index.php;  识别首页的类型是 index.php
             fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name; 添加一个站点路径
        }

下面开始做测试页
[root@localhost etc]# vi /usr/local/nginx/html/index.php

<?php
phpinfo();
?>

[root@localhost etc]# systemctl restart nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后做一个数据链路库的测验

在这里插入图片描述
把ip改成自己虚拟主机的IP地址

在这里插入图片描述

搭建社区论坛

| ####LNMP应用部署####

[部署Discuz!社区论坛Web应用]

########以下安装论坛##########

cd /opt

unzip Discuz X3.4_ SC_ UTF8.zip -d /tmpcd /tmp/dir SC _UTF8/

cp -r upload/ /usr/local/nginx/html/bbs/cd /usr/local/nginx/html/bbs/

chown -R root:nginx ./config/

chown -R root:nginx ./data/

chown -R root:nginx ./uc_ client/

chown -R root:nginx ./uc_ server/

chmod -R 777./config/chmod -R 777 ./data/

chmod -R 777 ./uc client/chmod -R 777 ./uc_ server/

http://lP/bbs/install/index.php

在这里插入图片描述

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

Please delete install/index.php via FTP!

注释:请通过ftp删除install/index.php

cd /usr/local/nginx/html/bbs/
mv install/ install.lock
chmod 600 install.lock/

Logo

更多推荐