当前位置:首页 > 文章列表 > 数据库 > MySQL > LNMP 环境搭建

LNMP 环境搭建

来源:SegmentFault 2023-01-29 14:18:50 0浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《LNMP 环境搭建》,就很适合你!文章讲解的知识点主要包括MySQL、nginx、PHP、LNMP,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

A. 软件环境

Linux ubuntu 16.04 LTS 
下载地址
Nginx nginx-1.12.0
下载地址
PHP   php-7.1.4
下载地址
MySQL mysql-5.7.18
下载地址

在运行所有命令之前,请执行

apt-get update

由于采用源码包编译安装,所以需要一个

c
编译器,如果提示为找到
c
编译器,那么请执行
sudo apt-get install gcc
命令安装
c compiler
。但是你可能会碰到仍然找不到
c compiler cc
的情况,请执行:
apt-get install build-essential

编译安装所需要的软件包,需要

make
依赖:

sudo apt-get install make

nginx
依赖的环境包:
Pcre  pcre-8.40
下载地址(有可能出现安装了也仍然提示未找到,
apt-get install libpcre3-dev
详情请看
Pcre2 pcre2-10.23
下载地址
zLib  zlib-1.2.11
下载地址

php
依赖的环境包:
libssl-dev
,安装方法:
apt-get install libssl-dev

libxml2-dev
,安装方法:
apt-get install libxml2-dev

libcurl4-gnutls-dev
,安装方法:
sudo apt-get install libcurl4-gnutls-dev

libzip-dev
安装方法:
apt install libzip-dev

apt install libonig5
,如果不行,请手动搜索:
apt search oniguruma
逐个尝试

php

gd
库需要的依赖:
  • libpng-dev
    apt-get install libpng-dev
  • libjpeg-dev
    apt-get install libjpeg-dev
  • libxpm-dev
    apt-get install libxpm-dev
  • freetype-官网下载,无需如此麻烦
    apt-get install libfreetype6-dev

另外,如果缺少什么

.h
这类的头文件,请根据错误提示,例如
apt-get install libfreetype*
*freetype*
这样安装解决!

系统升级到  ubuntu 17.07
php 升级到  php-7.1.8

这个时候会报错:libcurl 问题

find /usr -iname '*curl*'
// 创建一个软连接(系统升级导致 curl 默认路径改了,php 找不到了.....)
ln -s /usr/include/x86-linux-...../curl /usr/include/curl

php 编译安装扩展 phpize 命令
依赖的依赖包
m4
,安装方法:
apt-get install m4

autoconf
,安装方法:
apt-get install autoconf

mysql 
依赖的包:
libaio1
,安装方法:
apt-get install libaio1

如果出现

libpcre.so.1
找不到的错误,请手动链接:
sudo ln -s /usr/local/lib/libpcre.so.1 /lib/libpcre.so.1

B. 安装Linux系统

C. 安装环境所需的依赖包

D. 安装 Nginx

sudo tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
sudo ./configure 
        # 这个目录要自己事先创建好
        --prefix=/usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0
        # 支持 tcp/udp 负载均衡
        --with-stream
sudo make
sudo make install

设置 nginx.conf 文件

// 修改运行用户
user root;
// 修改日志文件路径
error_log logs/error.log;

http {
    // 加大上传文件大小限制
    client_max_body_size 2048M;
    // 加大 nginx 等待 php cgi响应的时间
    fastcgi_read_timeout 3600s; 
    // 新增自定义配置文件路径(免得在默认配置文件中新增数据)
    include 'vhost/*.conf';
}

然后在

vhost
目录下,创建
www.conf
配置文件:

server {
    server_name test.com;
    listen 80;
    index index.html;
    root /myself/web/test;
    
    location / {
        autoindex on;
    }
}

E. 测试 Nginx

cd /usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0/conf
sudo gedit nginx.conf # 修改配置文件,添加 域名(具体看 windows 下 nginx.conf 配置文件)
sudo gedit /etc/hosts # 修改 hosts 文件,添加相应域名
cd ../sbin
sudo ./nginx # 即可!不要 sudo start ./nginx ,他会提示报错的。

浏览器打开域名查看结果。

F. 安装PHP-7.1.4

tar -zxvf php-7.1.4.tar.gz
cd php-7.1.4
sudo ./configure 
             // php 主体文件所在目录
             --prefix=/usr/local/WebEnv/php-7.1.4
             // 默认配置文件在 ./lib 目录下
             // 注意这里是目录!!
             // 请不要使用这个编译选项,php 安装完成后,请使用 php --ini
             // 查看配置文件路径,然后修改。即推荐使用默认路径
             // --with-config-file-path=/usr/local/webEnv/php-7.1.4
             --with-mysqli=mysqlnd 
             --with-pdo-mysql=mysqlnd
             --with-openssl
             --with-tsrm-pthreads
             --with-curl
            
             --with=swoole
             --with-zlib
             --with-webp
             --with-jpeg
             --with-xpm
             --with-zip
             --with-xsl
             --with-freetype
             --with-mysqli
             // 注意以下四个选项,需要提前安装相关依赖!
             // 最后 freetype 这个选项,请使用 find / -iname 'freetype*' 来查找具体位置
             // 以下注释掉的 php 编译选项不再需要,php 会自动查找
             // --with-png-dir=/usr/lib
             // --with-jpeg-dir=/usr/lib
             // --with-xmp-dir=/usr/lib
             // --with-freetype-dir=/usr/local/include/freetype2
             
             --enable-gd
             --enable-calendar
             --enable-mbstring 
             --enable-ftp 
             --enable-pcntl 
             --enable-sysvmsg 
             --enable-sysvsem
             --enable-sysvshm
             --enable-shmop
             --enable-sockets 
             --enable-mysqlnd
             --enable-bcmath
             --enable-maintainer-zts  
             --enable-fpm
sudo make
sudo make install

简化版命令(可直接运行):
./configure --prefix=/myself/environment/php --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with=swoole --with-zlib --with-webp --with-jpeg --with-xpm --with-zip --with-xsl --with-freetype --with-mysqli --enable-gd --enable-calendar --enable-mbstring  --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop--enable-sockets  --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm && make && make install

修改 php.ini

需要复制

php
压缩包解压后的
php.ini-production
/usr/local/WebEnvironment/PHP-7.2.0/lib/php.ini

// 增加上传文件大小
post_max_size = 2048M
// 单个上传文件的最大大小
upload_max_filesize = 10M
// 单次最大上传文件数量
max_file_uploads = 200
// 设置扩展路径
extension_dir = "/usr/local/WebEnvironment/PHP-7.2.0/extensions"
// 添加自定义扩展
extension = redis.so
// php 事件扩展
extension = ev.so
extension = gd.so
// 设置时区
date.timezone = PRC
// 设置 php 最大占用内存
memory_limit = 512M
// 打开错误提示
display_errors = On

基本 ok。

G. 安装 MySQL-5.7.18

以下方式非源码编译安装,无法指定安装目录!如果需要指定安装目录,请查看 mysql-8.x 源码编译安装

tar -zxvf mysql-5.7.18.tar.gz
mv mysql-5.7.18 /usr/local/mysql
cd /usr/local
// 它本身没有 data 目录,需要自行创建(更高版本已经有 data 目录,无需重复创建)
sudo mkdir -m 755 data
cd bin
// 初始化 Data 目录内容
sudo ./mysqld --initialize-insecure 
// 启动,必须以 root 身份启动
sudo ./mysqld --user=root
----------- 另行启动一个 terminal ---------------------------------
// 设置密码
sudo ./mysqladmin -u root password 123456
// 登录测试
mysql -u root -p
// 配置文件(自己创建 my.cnf,默认文件名,配置文件路径:etc 目录下,可以是 /etc,也可以是 /usr/local/mysql/etc)
sudo mkdir - m 755 /usr/local/mysql/etc
// 编辑配置文件
sudo gedit /usr/local/mysql/etc/my.cnf

// 配置文件内容(设置编码)
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

H. nginx 添加虚拟主机

nginx.conf
中设置的
include vhost/*
路径

cd conf/vhost
sudo vim vhost.conf

// 添加如下内容,保存
server {
    server_name test.com;
    root /var/Website/Test;
    index index.php index.html;
    charset utf-8;
    
    location / {
        // 这边配置成单一入口访问(例如你用的PHP框架是 Laravel 就要求要单一路口)
        // 这边的含义是:
        // $uri     如果是一个文件,直接返回
        // $uri/    如果是一个目录,直接返回
        // 最后一个参数表示重定向!
        // 否则返回 /index.php?$query_string;
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php(.*) {
        // php 处理程序监听的 tcp 端口
        fastcgi_pass 127.0.0.1:9000;
        // 确定脚本名称
        # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        // 传递请求参数
        # fastcgi_param QUERY_STRING $query_string;
        // 必须要包含 fastcgi_params 预定义参数
        include fastcgi_params;
    }
}

server {
    server_name pma.com;
    root /var/Website/TestOther;
    index index.html;
    charset utf-8;
    
    location / {
        
    }
    
    # 静态资源处理
    # 例如:http://test.com/test.jpg
    # 他会从 /data 目录下获取,而不是从 /var/Website/TestOther 目录下获取
    # 注意匹配顺序,正则优先,然后 前缀
    location ~ \.(gif|jpg|png)$ {
        root /data;
    }
}

I. php-fpm 解释

参考文章

cgi、fastcgi、php-cgi、php-fpm 之间的联系和区别

配置文件路径:

// php-fpm 配置文件
etc/php-fpm.conf.default

// 进程池配置文件路径
etc/php-fpm.d/www.conf.default

// php.ini 配置文件(要从解压出来的压缩包根目录下拷贝重命名)
etc/php.ini

注意了,

php-fpm.conf
配置文件是
php-fpm
程序的配置文件,
www.conf
php-fpm.conf
配置文件的一部分(扩展),只是
php
将其独立出来了。他们是一个整体,这边修改的是
www.conf

user  = root # 这边可以新创建用户,也可以直接使用 root 用户(省事,我就 root 用户了)
group = root # 同上
listen = 127.0.0.1:9000 # 只能有一个 listen(我被坑的最惨的部分!以为可以 listen 多个!实际上不能!)

J. 设置软连接

sudo ln -s /path/to/php/sbin/php-fpm /bin/php-fpm
sudo ln -s /path/to/nginx/sbin/nginx /bin/nginx
sudo ln -s /path/to/mysql/bin/mysqld /bin/mysqld

K. 启动测试

Nginx

// windows 下启动
start nginx

// linux 下启动
sudo nginx # 启动
sudo nginx -s reload # 重新启动(重载配置文件)
sudo nginx -s stop # 快速停止
sudo nignx -s quite # 优雅停止
sudo nginx -s reopen # 重新打开日志文件(要在 nginx 启动的状态下执行才有效)

PHP
:

// 指定配置文件启动
// -c 指定 php 运行时配置文件
// -y 指定 php-fpm 运行时配置文件
// -R 可选,运行 root 身份运行 php-fpm
sudo php-fpm -c php.ini -y php-fpm.conf -R
// 通常的启动方式应该如下:
sudo php-fpm -R

mysql

sudo mysqld --user=root

今天关于《LNMP 环境搭建》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

版本声明
本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
Who Killed MySQL?Who Killed MySQL?
上一篇
Who Killed MySQL?
Mysql字符串截取函数SUBSTRING的用法说明
下一篇
Mysql字符串截取函数SUBSTRING的用法说明
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 笔灵AI生成答辩PPT:高效制作学术与职场PPT的利器
    笔灵AI生成答辩PPT
    探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
    13次使用
  • 知网AIGC检测服务系统:精准识别学术文本中的AI生成内容
    知网AIGC检测服务系统
    知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
    22次使用
  • AIGC检测服务:AIbiye助力确保论文原创性
    AIGC检测-Aibiye
    AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
    30次使用
  • 易笔AI论文平台:快速生成高质量学术论文的利器
    易笔AI论文
    易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
    38次使用
  • 笔启AI论文写作平台:多类型论文生成与多语言支持
    笔启AI论文写作平台
    笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
    35次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码