LNMP

穿精又带淫゛_ 提交于 2019-12-02 05:36:22

LNMP

  • L:Linux系统
  • N:Nginx网站服务,接收用户的访问,并进行处理(静态请求)
  • M:MySQL数据库服务
  • P:PHP语言解析器,用于解析PHP源代码

LNMP是一种网站服务器架构,常用来搭建动态网站

一、项目开发流程

  • 项目经理完成业务梳理,明确每个项目的目标,梳理业务模块,每个模块包含哪些功能,制作思维导图
  • UI设计师根据产品原型制作效果图,明确业务实现细节,方便研发快速开发
  • 程序员开发,前端开发,客户端界面或APP的样式,后端开发,实现某些项目功能
  • 测试,开发完成后测试人员将项目进行bug测试然后反馈bug,测试通过
  • 运维,运维人员将系统进行试运行,稳定后发布上线

二、LNMP之MySQL搭建

企业级数据库部署中,安装MySQL通常使用GLIBC安装与源码安装(二选一)

1、GLIBC安装MySQL

GLIBC默认选项

默认安装路径:/usr/local/mysql			MySQL安装路径
默认数据目录:/usr/local/mysql/data	MySQL数据目录
默认端口:3306
默认socket套接字文件存放路径:/tmp/mysql.sock	套接字文件,负责客户端与服务端进行连接

官网下载MySQL包: https://dev.mysql.com/downloads/mysql/

配置并安装

//获取MySQL软件包,对MySQL包进行解压
#tar -zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
//移动解压缩后的文件夹到/usr/local目录下并改名为mysql
#mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
//进入/usr/local/mysql目录下
#cd /usr/local/mysql
//创建mysql系统账号并对整个目录进行授权(文件拥有者+所属组改为mysql)
#useradd -r -s /sbin/nologin mysql
-r:代表创建系统账号
-s:指定账号权限,/sbin/nologin代表可以使用mysql运行软件,但不能登录操作系统
#chown -R mysql.mysql /usr/local/mysql
//卸载mariadb-libs,mariadb是mysql软件的一个分支,所以需要卸载掉,否则会影响安装
#yum remove mariadb-libs -y
//初始化数据库(让data数据库目录中生成mysql系统数据库)
# cd /usr/local/mysql
# script/mysql_install_db --user=mysql
//为了方便启动需要复制启动脚本到/etc/init.d目录下并改名为mysql
#cp support-files/mysql.server /etc/init.d/mysql
//启动MySQL
#serviec mysql start
//追加/usr/local/mysql/bin目录到环境变量
#echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
#source /etc/profile

2、配置密码及测试

//配置MySQL密码以及安全策略
#mysql_secure_installation
//远程测试
#mysql -h 服务器IP地址 -P 端口号 -uroot -p

3、配置mysql.service

目的:为了能用systemctl启动MySQL或实现开机自启

注:需要停掉原来的服务

创建一个mysql.service文件

#vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=network.target
After=syslog.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
LimitNOFILE = 5000
PrivateTmp=false

[Install]
WantedBy=multi-user.target
参数 作用
Unit 代表单元,启动程序需要有单元信息
After 代表在某些服务启动后在进行MySQL启动
Service 代表服务,最核心配置
User/Group 代表将来以哪个用户的身份运行此软件
ExecStart 代表启动脚本调用哪个程序
LimitNOFILE 限制文件大小
Install 安装模式,吧MySQL服务运行在何种模式下

使用

#service mysql stop
启动、关闭和重启
#systemctl start mysql
#systemctl stop mysql
#systemctl restart mysql
开机自动启动或关闭
#systemctl enable mysql
#systemctl disable mysql

三、LNMP之Nginx搭建

Nginx是一个http服务器(web服务器),可以做网页静态服务器,其特点是占有内存少,并发能力强

中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

特点:稳定性强,热部署,高并发,响应快,低消耗,分布式支持

1、源码安装Nginx

下载源码包: https://nginx.org/en/download.html

①安装依赖库:

#yum install pcre-devel zlib-devel openssl-devel

②下载软件包到本地并解压缩

#tar -zxf nginx-1.12.2.tar.gz
#cd nginx-1.12.2

③创建系统用户www

#useradd -r -s /sbin/nologin www

④配置

#./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
参数 作用
–prefix 安装路径
–user 以那个用户身份安装初始化
–group 以那个用户组安装初始化
–with-* 代表安装哪些模块,默认情况下只安装基本模块

⑤编译并安装

#make && make install

2、Nginx目录介绍

  • conf:配置文件目录,Nginx主配置文件nginx.conf。

  • html:项目目录,项目源代码就存放在此目录下。

  • logs:日志目录,error.log错误日志与access.log访问日志

  • sbin:二进制文件目录,Nginx的主程序sbin/nginx

3、Nginx的使用

选项 作用
-V 显示Nginx的版本号与配置的选项信息
-t 用于语法检查
-s 发送信号,stop(停止),quit(退出),repoen(重新打开配置文件),reload(重载配置文件)
-c 加载配置文件

3、配置nginx.service

目的:为了能用systemctl启动Nginx或实现开机自启

注:需要停掉原来的服务

创建一个mysql.service文件

#vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=Nginx Web Server
After=network.target
  
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target


注:type=forking

使用

#service mysql stop
启动、关闭和重启
#systemctl start nginx
#systemctl stop nginx
#systemctl restart nginx
热重载
#systemctl reload nginx
开机自动启动或关闭
#systemctl enable nginx
#systemctl disable nginx

四、LNMP之PHP搭建

PHP

外文名:Hypertext Preprocessor,中文名:超文本预处理器。

是一种通用开源脚本语言,重要应用于web领域

PHP-FPM

端口号:9000

PHP-FPM是进程管理器,用于接收web服务器的请求

Apache与PHP之间的关系:PHP是以模块的形式加载在Apache的内核中。在解析动态PHP代码时,其效率较高

Nginx与PHP之间的关系:Nginx与PHP相对而言都是独立的,只不过在应用过程中,解析动态脚本时,Nginx会自动将源代码发送给PHP-FPM程序。Nginx在处理静态页面时,效率较高

1、源码安装PHP-FPM

下载源码包: https://www.php.net/releases/

①安装依赖库

#yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel

②解压缩并进入解压目录

#tar -zxf php-7.2.12.tar.gz
#cd php-7.2.12

③基本配置

#./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
参数 作用
–prefix 安装目录
–with-config-file-path 配置文件目录
–enable-fpm 开启php-fpm功能
–with-fpm-user 以那个用户运行php-fpm
–with-fpm-group 你那个用户组运行php-fpm

搭建商城配置

# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-libzip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts

④编译并安装

#make && make install

2、PHP-FPM配置文件

文件 作用
php.ini 默认php配置文件
php-fpm.conf php-fpm相关的配置
www.conf php-fpm主配置文件

创建相关配置文件

//php.ini文件
#cp /root/php-7.2.12/php.ini-development /usr/local/php/etc/php.ini
//php-fpm.conf文件
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
//www.conf文件
#cp /usr/local/php/etc/php-fpm.d/www.config.default /usr/local/php/etc/php.fpm.d/www.conf

3、后续配置

①添加启动服务

//将启动文件复制到/etc/init.d中
#cp /root/php-7.2.12/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
//添加执行权限
#chmod +x /etc/init.d/php-fpm
//启动
#service php-fpm start

②添加环境变量

#echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
#source /etc/profile

4、配置php-fpm.service

目的:为了能用systemctl启动php-fpm或实现开机自启

注:需要停掉原来的服务

创建一个mysql.service文件

#service php-fpm stop
#vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm -D
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

五、Nginx关联PHP-FPM

因nginx只能解析静态页面,如果想解析动态页面就需要调用PHP-FPM进行解析

让Nginx识别.php代码,然后转发给PHP-FPM

修改nginx.conf配置文件让其支持解析动态页面

//进入nginx安装目录下
#cd /usr/local/nginx
//去除'#'号注释行和空白行
#grep -Ev '#|^$' conf/nginx.conf > nginx.conf
//编辑nginx.conf配置文件
#vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        # 监听端口
        listen       80;
        # 真实域名,localhost代表本机
        server_name  localhost;
        # 项目目录
        root html;
        # 任意请求
        location / {
            # 默认首页(如果在html目录发现默认首页,直接运行)
            index  index.html index.htm;
        }
        # 添加PHP文件支持
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # 当访问遇到错误时,返回50x.html页面给用户
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

设置完成后需要重新加载Nginx

#systemctl reload nginx
//要在启动nginx服务的前提下才能执行这条命名

测试:

在nginx的项目目录下创建.php文件并写入内容
#vim /usr/local/nginx/html/demo.php
<?php
	echo 'hello word';
?>
在本机浏览器访问
http://服务IP/demo.php
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!