当前位置: 首页 > article >正文

十LNMP

### 一、准备工作

**1.**环境要求:

       操作系统:CentOS 7.X 64位

       关闭SELinux和firewalld防火墙

       此次试验环境使用网络yum源,保证系统能正常连接互联网

**2.*网络yum*源:

 ``` shell 
         先将系统自带的yum配置文件移除或者删除,然后下载以下两个配置文件

       官方基础:[http://mirrors.163.com/.help/CentOS7-Base-163.repo](http://mirrors.163.com/.help/CentOS7-Base-163.repo)

                       [http://mirrors.aliyun.com/repo/Centos-7.repo](http://mirrors.aliyun.com/repo/Centos-7.repo)

       epel拓展:[http://mirrors.aliyun.com/repo/epel-7.repo](http://mirrors.aliyun.com/repo/epel-7.repo)

       下载完成后,需要使用命令清除掉原有的yum缓存,使用新的配置文件建立缓存
       # yum clean all      #清除掉原有缓存列表
       # yum makecache  #建立新的缓存列表
       # yum update         #将所有能更新的软件更新(非必选)

```


**3.安装编译工具和依赖软件包:
  ``` shell 
       yum -y install gcc gcc-c++ pcre-devel openssl openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel
```

     

**4. Nginx、MySQL、PHP三大软件的源码包下载地址:
       Nginx:[http://nginx.org/en/download.html](http://nginx.org/en/download.html)
       
   MySQL:[https://dev.mysql.com/downloads/mysql/](https://dev.mysql.com/downloads/mysql/)

   PHP:[http://www.php.net/](http://www.php.net/)

``` shell 
         **版本选用:**

       Nginx: 1.12.*     #选用软件的稳定版即可

       Mysql: 5.5.*       #5.5以上版本需要1G以上的内存,否则无法安装

       PHP:    7.1.*       #我们使用的是php7
```

### 二、源码软件包安装

#### 1.Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是内存的利用率高,并发能力强。

**1.1** **下载Nginx****源码包**

  ``` shell 
     wget http://nginx.org/download/nginx-1.12.2.tar.gz
     #或者去网站下好,直接解压到root目录下
```

#### **1.2** **创建用于运行Nginx****的用户**
     ``` shell 
      useradd -r -s /sbin/nologin nginx


#### 1.3解压缩Nginx并安装

``` shell 
  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

 make
 make install
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 nginx -s reload 
 pidof nginx #查看nginx的pid
 
```


**1.4** **上传编写好的nginx****启动管理脚本(见文本尾部)**

### 2.MySQL

**下载:**https://dev.mysql.com/downloads/mysql/

**选择:**MySQL Community Server 5.5 »

**选择:**Select Version: 按照自己要求选择

         Select Operating System: Source Code

         Select OS Version: Generic Linux

![[Pasted image 20240927201058.png]]


``` shell
   wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz
  #或者去网站下好,直接解压到root目录下
```

**2.1****创建用于运行Mysql****的用户:**

useradd -r -s /sbin/nologin mysql

**2.2****解压缩Mysql并安装:

``` shell 
   cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/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
#解释:第一是保存数据库缓存 ,然后是一下字符编码像utf-8 接着是mysql工具,mysql用户和端口
 make
 make install
 ln -s /usr/local/mysql/bin/*  /usr/local/bin

```


**2.3****修改安装后的目录权限**

``` shell
  cd /usr/local/mysql
   chown -R root .
chown -R mysql data
```


**2.4****生成Mysql****配置文件**

``` shell
        cd /root/lnmp/mysql-5.5.62/support-files
  cp -a ./my-medium.cnf  /etc/my.cnf
```


**2.5****初始化,生成授权表**

``` shell
  cd /usr/local/mysql   #一定要先切换到此目录下,然后再执行下一步。

 ./scripts/mysql_install_db --user=mysql
```


初始化成功标志:两个ok

**2.6****生成Mysql****的启动和自启动管理脚本

``` shell
  cd /root/mysql-5.5.62/support-files

切换到mysql的源码解压缩目录下的support-files

cp -a mysql.server /etc/init.d/mysqld
 chmod +x /etc/init.d/mysqld
 
 service mysqld start|stop|restart
```


**2.7****给mysql****的root****用户设置密码**
``` shell
   mysqladmin -uroot password 123456
```

### 3.PHP

**下载:**http://www.php.net/

``` shell
  wget https://www.php.net/distributions/php-7.1.29.tar.gz
```

**3.1****解压缩PHP****并安装:**

``` shell
 ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --with-gd --without-pear --enable-fpm
 #解释 pdo连接数据库的函数,-pear联网服务要关闭,fpm连接nginx的函数
make
make install

```

报错提示:若遇到libpng.so not found .报错(老版本的PHP会出现此问题)

解决方案:
 ln –s /usr/lib64/libpng.so  /usr/lib

**3.2****生成php****配置文件**

``` shell
   cp -a /root/php-7.1.29/php.ini-production /usr/local/php/etc/php.ini

复制源码包内的配置文件到安装目录下,并改名即可
```

**3.3****创建软连接,使用php****相关命令是更方便**

``` shell 
  ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
```


### 4.配置Nginx连接PHP(重难点)

**4.1 nginx****连接php****需要启动php-fpm****服务**

``` shell
   cd /usr/local/php/etc/
cp -a php-fpm.conf.default php-fpm.conf
生成php-fpm的配置文件,并修改指定参数
vim php-fpm.conf
#取消pid注释
pid = run/php-fpm.pid
 cd /usr/local/php/etc/php-fpm.d/
 cp -a www.conf.default www.conf
 vim www.conf
 修改用户和组的指定用户
       user = nginx
       group = nginx

```


**4.2** **修改Nginx****的配置文件,使其识别.php****后缀的文件**

``` shell
   vim /usr/local/nginx/conf/nginx.conf
   #修改这些参数
   user  nginx;
   worker_processes  auto;
   pid        logs/nginx.pid;
#取消下列行的注释,并修改include选项的后缀为fastcgi.conf,并注意每一行结尾的分号和大括号
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_params;            #修改为fastcgi.conf
}
cd /etc/init.d/
vim nginx.service #脚本在下面
chmod +x nginx.service

```

**注意:有些网站项目开发时,目录和页面结构不相同,重新定义正则匹配**
**案例:location ~  \.php(\/.*)*$**
**4.3** **修改Nginx****配置文件,使其默认自动加载php****文件**
``` shell
  location / {

root html;                                  #Nginx的默认网页路径
index      index.php index.html;    #设置默认加载的页面,以及优先级
}
```


**测试:**
``` shell
  
  #重启Nginx服务,创建php测试文件,访问并查看是否解析
    cd /usr/local/nginx/html/
vim info.php
service nginx.service  stop
service nginx.service  start
#在部署bbs项目
```


**附件:**建议使用时先复制到文本文件中查看下是否有字符集问题

nginx.service启动管理脚本
``` shell
  #!/bin/bash

#Author:liu

#chkconfig: 2345 99 33

#description: nginx server control tools

ngxc="/usr/local/nginx/sbin/nginx"

pidf="/usr/local/nginx/logs/nginx.pid"

ngxc_fpm="/usr/local/php/sbin/php-fpm"

pidf_fpm="/usr/local/php/var/run/php-fpm.pid"

case "$1" in

    start)

        $ngxc -t &> /dev/null

        if [ $? -eq 0 ];then

                $ngxc

                $ngxc_fpm

                echo "nginx service start success!"

        else

                $ngxc -t

        fi

        ;;

    stop)

        kill -s QUIT $(cat $pidf)

        kill -s QUIT $(cat $pidf_fpm)

        echo "nginx service stop success!"

        ;;

    restart)

        $0 stop

              sleep 1

        $0 start

        ;;

    reload)

        $ngxc -t &> /dev/null

        if [ $? -eq 0 ];then

                kill -s HUP $(cat $pidf)

                kill -s HUP $(cat $pidf_fpm)

                echo "reload nginx config success!"

        else

                $ngxc -t

        fi

        ;;

    *)

        echo "please input stop|start|restart|reload."

        exit 1

              ;;

esac
```

## 二、知识扩展

*  cmake与以前的configure有何区别?cmake是oracle收购MySQL后推出的替代脚本,它以命令形式进行环境检查,相较于configure脚本具有更高的安全性,并且命令格式虽然有变动,但功能类似,均用于指定路径、绑定端口等编译选项。
* 安装完成后,nginx和apache如何通过PHP-FPM服务连接PHP?
在nginx和apache编译安装时,默认会包含fastCGI模块,而FPM作为PHP的一个服务,在安装完成后被启动并监听9000端口。当nginx或apache需要连接PHP时,它们会通过fastCGI模块间接连接到FPM,而非直接创建连接。这样不仅提升了稳定性,也提高了解析请求时的效率,
![[Pasted image 20240927200033.png]]
   * nginx服务配置文件介绍
![[Pasted image 20240927203336.png]]

 
 * 平台搭好后用nvcat连接Linux上的mysql
 ``` shell
     mysql -uroot 
     #创建远程连接用户
     create user root@'192.168.90.1' identified by '123456';
     #查看密码成功没有
     select host,user,password from mysql.user;
     #给予用户增删改查权限
     grant all on *.* to root@'192.168.90.1';

```
在nvcat上连接Linux的IP
 


http://www.kler.cn/news/343077.html

相关文章:

  • 教育部白名单赛事到底是什么?大家为什么那么重视它?
  • 宠物咖啡馆数字化解决方案:基于SpringBoot的实现
  • 链表(3)_重排链表_面试题
  • 【系统架构设计师】目录提纲
  • Jave常用的类---String类
  • Vue2基础
  • 神经网络的基本骨架——nn.Module(torch.nn里的Containers模块里的Module类)
  • 什么是WebSocket
  • Spring Boot微服务架构设计与实战
  • Java后端面试----某团一面
  • 网站集群批量管理-Ansible(ad-hoc)
  • win10 屏幕录制,4款软件让你轻松搞定!
  • ABAP 表转JSON格式
  • Arduino程序设计(十五)步进电机驱动(28BYJ-48)
  • [数据结构] 树
  • 调整建模让 Power BI Copilot 得到更好结果
  • mysql学习教程,从入门到精通,SQL处理重复数据(39)
  • T7——咖啡豆识别
  • 【ShuQiHere】 智能代理与软件机器人:引领自动化未来的技术
  • 如何在uniAPP中添加样式