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
来源:https://blog.csdn.net/weixin_42435910/article/details/102723179