LNMP
Linux +Nginx + MySQL + PHP
MySQL | Nginx | PHP |
---|---|---|
mysql-5.6.35 | nginx-1.12.2 | php-7.2.12 |
一、 MySQL
①下载Glibc包
下载地址: https://dev.mysql.com/downloads/mysql/
选择 Linux-Generic
进行下载
②Glibc安装
上传Glibc
包,并进入软件包所在目录
编写安装脚本: # vim mysql.sh
# !/bin/bash
#1.解压安装包
tar -zvxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
#2.移动到安装目录 /usr/local/mysql
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
#3.创建mysql账号
useradd -r -s /sbin/nologin mysql
#4.分配安装目录权限
chown -R mysql.mysql /usr/local/mysql
#5.进入安装目录
cd /usr/local/mysql
#6.删除 mariadb-libs 数据库
yum remove mariadb-libs -y
#7.初始化数据库vim
scripts/mysql_install_db --user=mysql
#8.将服务添加到 /etc/init.d/ 目录下
cp support-files/mysql.server /etc/init.d/mysql
#9.启动 mysql 服务
service mysql start
#10.配置环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
执行脚本
source mysql.sh
③配置
安全初始化
mysql_secure_installation
④测试
# 本地测试
mysql -uroot -p
# 远程测试
mysql -h 服务器IP -P 端口 -uroot -p
⑤ 配置systemctl
注意:需要停掉原来的服务
配置systemctl
创建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
参数 | 说明 |
---|---|
After | 启动条件,在某个服务启动后再启动 |
User / Group | 代表将来以哪个用户的身份运行此软件 |
ExecStart | 启动脚本调用哪个程序 |
LimitNOFILE | 代表限制文件大小 |
PrivateTmp | 代表是否把MySQL的运行程序放入私有空间 |
WantedBy | 安装模式 |
使用
# 1.启动
systemctl start mysql
# 2.设置开机启动
systemctl enable mysql
# 3.关闭开机启动
systemctl disable mysql
二、Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
官网:www.nginx.org
更多:百度百科
Nginx 特点
稳定、热部署、高并发、响应快、低消耗、分布式支持
①下载源码包
下载地址: https://nginx.org/en/download.html
②编译安装
添加www
用户
useradd -r -s /sbin/nologin www
安装依赖
yum -y install pcre-devel zlib-devel openssl-devel
解压并进入解压目录
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
配置
./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-http_ssl_module | 支持https ,需要安装依赖pcel-devel |
--with-http_stub_status_module | 基本状态信息显示,查看请求数、连接数等 |
--with-http_realip_module | 定义客户端地址和端口为header头信息,常用于反向代理后的真实IP获取 |
编译并安装:
make && make install
③ Nginx 目录
目录 | 作用 |
---|---|
conf | 配置文件 |
html | 网站默认目录 |
logs | 日志 |
sbin | 可执行文件 |
④配置Systemctl
注意:需要停掉原来的服务
创建nginx.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
: 后台运行
使用
# 1.启动
systemctl start nginx
# 2.设置开机启动
systemctl enable nginx
# 3.关闭开机启动
systemctl disable nginx
# 4.停止
systemctl stop nginx
# 5.热重载
systemctl reload nginx
⑤Nginx 使用
选项 | 作用 |
---|---|
-v | 软件版本 |
-V | 软件版本及所安装的模块(配置选项) |
-s | 发送信号,如 stop ,quit ,reopen ,reload stop(停止)、quit(优雅的推出)、reopen(重新打开配置文件)、reload(热重载配置文件) |
-t | 测试配置文件是否有语法错误 |
-c | 加载配置文件 |
⑥扩展:
查看一个网站所采用web server
curl -I 域名
三、PHP
Hypertext Preprocessor,超文本预处理器
是一种通用开源脚本语言,主要应用于Web领域。
PHP-FPM
PHP FastCGI Process Manager , PHP FastCGI 进程管理器
PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
在PHP
5.3.3
之前,PHP-FPM是一个补丁包 , PHP在5.3.3
之后已经把php-fpm
并入到php的核心代码中了,要想php支持php-fpm
,只需要在编译php源码的时候带上--enable-fpm
就可以了。
①下载源码包
下载地址: https://www.php.net/releases/
②编译安装
安装依赖
yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel
解压源码包并进入目录
tar -xf 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功能 |
根据需求配置
# ./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
③配置
配置文件
文件 | 作用 |
---|---|
php.ini | 默认配置文件 |
php-fpm.conf | php-fpm相关配置 |
www.conf | 主配置文件 |
创建相关文件
# 0.进入 php 安装目录
cd /usr/local/php/
# 1.源码解压路径中,拷贝php.ini-development
cp /soft/php-7.2.12/php.ini-development /usr/local/php/etc/php.ini
# 2. php-fpm.conf (默认已存在 .default)
cp etc/php-fpm.conf.default etc/php-fpm.conf
# 3. www.conf (默认已存在 .default)
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
加载顺序:①php.ini
②php-fpm.conf
③www.conf
添加启动服务
cp /soft/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
# 检测
ss -naltp|grep 9000
添加环境变量
echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
source /etc/profile
四、Nginx关联PHP-FPM
Nginx
只能处理静态页面,而且很快,当需要处理动态页面时需要调用php-fpm
进行解析,然后php-fpm
将解析后的结果返回给Nginx
默认Nginx
并不能解析PHP代码,我们需要修改配置文件 nginx.conf
,使其支持解析
配置
# 1.进入配置文件目录
cd /usr/local/nginx/conf/
# 2.去掉空行和注释行
grep -Ev '#|^$' nginx.conf.default > nginx.conf
# 3.编辑配置文件
vim 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
注意
:请确保 php-fpm
是启动状态 service php-fpm status
测试
创建测试文件
/usr/local/nginx/html/demo.php
修改文件内容
<?php
echo 'Hi tiger!'
?>
浏览器访问
http://10.1.1.66/demo.php