LNMP

Linux +Nginx + MySQL + PHP

MySQLNginxPHP
mysql-5.6.35nginx-1.12.2php-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.confphp-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.iniphp-fpm.confwww.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
Last modification:September 13th, 2019 at 09:40 am