lnmp就是 Linux+nginx + mysql + PHP,把Apache替换为Nginx;

这里我用到的Linux环境为为centos,接下来就分步骤来一步步安装及测试。

一、安装php

参考链接:https://zhuanlan.zhihu.com/p/34422328
在安装PHP之前需要安装一些依赖包,执行下面的命令就可以了,如果安装过请忽略
yum install vim gcc gcc++ wget libxml2-devel wget -y

1.下载php

cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.36.tar.gz

解压源码包,创建账号

tar zxf php-5.6.36.tar.gz
useradd -s /sbin/nologin php-fpm

其中php-5.6.36就是我们需要用到的压缩包,让我们进入目录进行安装

cd php-5.6.34

然后我们编译PHP文件生成makefile 文件,这里需要普及一个小的知识点,那就是fastcgi;

php本来的请求是,当一个请求出现,PHP会启动一个进程来完成请求,然后关闭,但是这很耗费系统的资源,不符合我们的要求,我们需要php-fpm,然后可以监听php请求 ,如果有请求出现,那么开始提供进程来执行,如果业务多的话会创建一个新的,如果没有多余的请求的时候,php-fpm会释放掉多余的资源,而fastcgi就是php-fpm使用的前提,编译安装的时候必须加上这个参数。所以编译的时候需要加上--enable-fpm 选项

./configure --prefix=/usr/local/php --enable-fpm

./configure 就是就是编译makefile文件的工具 --prefix 就是指定安装PHP到哪个目录,执行完成之后下面的命令

make && make install
我们执行完成./configure 只是把我们的配置写入makefile文件,还没有安装,make 命令就是安装,到此我们就安装完成PHP了;
这时我们可以随意一个目录,建个文件index.php执行测试下
touch index.php
写入内容:
<?php
echo "hello world";
然后保存退出,执行
/usr/local/php/bin/php index.php
这个时候输出hello world就代表文件执行成功,/usr/local/php/bin/php 是PHP文件执行的入口,如果我们要将PHP写如Linux环境变量,需要加入的目录为/usr/local/php/bin
(补充)
添加环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/php/bin
关闭shell窗口后都需要再执行一次source /etc/profile才能生效,这个问题需要在~/.bashrc文件最后添加source /etc/profile,这样问题便得到解决;

二、安装mysql

参考链接:https://www.jianshu.com/p/276d59cbc529

(安装过程务必保持文件路径的前后统一,否则可能会导致不可预期的结果)

1、检查是否已经安装过mysql,执行命令

rpm -qa | grep mysql

如果有安装,则会显示该目录,删除即可:

rpm -e –nodeps 该目录

2、查询所有Mysql对应的文件夹

whereis mysql

存在就删除相关目录文件

rm -rf /usr/lib64/mysql /usr/local/mysql /usr/share/mysql

验证是否检查完毕

whereis mysql
find / -name mysql

3.下载mysql安装包

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

也可以直接到mysql官网: https://downloads.mysql.com/archives/community/ 选择对应版本进行下载

在执行wget命令的目录下或你的上传目录下找到Mysql安装包:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

4.执行解压命令

tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
ls

解压完成后,可以看到当前目录下多了一个解压文件,移动该文件到/usr/local/下,并将文件夹名称修改为mysql

mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql

(
如果/usr/local/下不存在mysql文件夹,直接执行如下命令,也可达到上述效果:
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
)

/usr/local/mysql目录下创建data目录

mkdir /usr/local/mysql/data
更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
5.编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
这里可能会出现这种错误

出现该问题首先检查该链接库文件有没有安装使用,命令进行核查

rpm -qa|grep libaio
运行命令后发现系统中无该链接库文件:
yum install  libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误:

执行如下命令后:

yum -y install numactl

执行无误之后,再重新执行第5步初始化命令,无误之后再进行下一步操作;

运行初始化命令成功后,输出日志如下:

记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码;

6、编辑配置文件my.cnf,添加配置如下:


vi /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8

lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效:

character_set_server:设置数据库默认字符集,如果不设置默认为latin1

innodb_file_per_table:是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别;

7、测试启动mysql服务器

/usr/local/mysql/support-files/mysql.server start

这里报错,说明没启动成功,报错原因有多种,要根据其原因去解决

因为没有路径也没有权限,所以创建此路径并授权给mysql用户:

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/

再执行启动命令:

说明启动成功;

查看是否存在mysql和mysqld的服务:

ps -ef|grep mysql | grep -v grep
ps -ef|grep mysqld | grep -v grep

8、添加软连接,并重启mysql服务:

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart

登录mysql,修改密码(密码为步骤5生成的临时密码):



mysql -u root -p
set password for root@localhost =password('想改的密码');

开放远程连接:

use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

9.设置开机自动启动

将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
赋予可执行权限
chmod +x /etc/init.d/mysqld
添加服务
chkconfig --add mysqld
显示服务列表
chkconfig –list

到这mysql安装完成;

三、安装nginx

1.安装nginx之前先安装一个扩展pcre,这个是正则匹配用到的扩展,官方网址:
http://www.pcre.org/,选择自己下载的版本
cd ~
wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
tar zxvf pcre-8.00.tar.gz
cd pcre-8.00
./configure
make & make install

2. 下载nginx

nginx的官方网址:http://nginx.org/,选择下载自己的版本,这里以最新版为例:

cd ~
wget http://nginx.org/download/nginx-1.19.10.tar.gz
tar zxvf nginx-1.19.10.tar.gz
cd nginx-1.19.10
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00
make & make install

如果出现该错误,重新执行下编译安装

./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00

make & make install

3.然后启动nginx

/usr/local/nginx/sbin/nginx

4. 查看是否已经启动

ps aux | grep nginx

5. 然后访问

127.0.0.1 //如果打印输出Welcome to nginx! 说明安装成功

(个人服务器就访问对应服务器IP)

6. 增加nginx对PHP的支持

假设我设定PHP的目录为

/home/www

打开nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf 

然后将这段代码改成下面这样(被#号所注释)

location ~ \.php$ {
root /home/www; //网站目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

然后wq保存退出

然后重启php和nginx

/usr/local/nginx/sbin/nginx

(出现这错误,端口被绑定,杀死进程继续启动

fuser -k 80/tcp

)

/usr/local/php/sbin/php-fpm

(如果出现该错误,执行后再执行下重启php

cd /usr/local/php/etc

cp php-fpm.conf.default php-fpm.conf

打开浏览器,输入

127.0.0.1/index.php

(个人服务器IP)

(

如果出现

首先可以查看nginx错误日志,这里说下配置错误日志:

重启nginx,再访问,可以去查看该日志

cat logs/error_nginx_php.log

这里可以查看下nginx.conf、php-fpm.conf 中的usergroup配置项和nginx.conf文件中的 user配置项是否一致

这里有各种错误,具体查看错误日志提示去解决即可;文件权限不足等,依个排查

如出现这个错误

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,..

检查nginx.conf下

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
修改为
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

然后重启即可

如果输出hello world 代表着成功,lnmp环境已经搭建完毕,具体还是需要自己搭建一遍遇到问题依次排查解决,会比较清晰。

LNMP环境搭建与配置的更多相关文章

  1. Linux下-LNMP环境搭建博客网站(全过程)

    通常我们所说的LNMP是指一个网站基本的组织框架,即Linux系统支持,Nginx静态服务,Mysql数据库支持以及PHP动态编程语言支持.目前Mysql数据库被Oracle数据库分析公司收购,其创始 ...

  2. LNMP环境搭建:Nginx安装、测试与域名配置

    Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...

  3. LNMP环境搭建

    LNMP环境搭建 Linux + Nginx + MySQL + PHP PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍 Nginx是一个web服务软件,和apache是一类 ...

  4. 阿里云(ECS)Centos服务器LNMP环境搭建

    阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...

  5. LNMP环境搭建——MySQL篇

    The world's most popular open source database 1.Install MySQL root@kallen:~# apt-get install mysql-s ...

  6. LNMP环境搭建之php安装,wordpress博客搭建

    LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...

  7. LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)

    测试环境:CentOS release 6.5 (Final) 软件安装:nginx   mysql-5.5.32-linux2.6-x86_64.tar.gz   php-5.3.27.tar.gz ...

  8. LNMP环境搭建哈哈

    经过一番折腾,终于将LNMP环境搭建完成了.本文介绍的LNMP环境是在windows的Oracle VM VirtualBox中的Centos虚拟机上搭建的,各个软件的版本为:Centos7 + Ng ...

  9. LNMP环境搭建--Centos7

    LNMP环境搭建--Centos7 | 刘鹏--博客 盒子 盒子 博客 分类 搜索 文章目录 在Centos7环境安装LAMP环境,备忘哈哈. 准备 首先去官网下载php,nginx 编译安装php ...

随机推荐

  1. yolov2算法浅见

    因为最近在复习yolo系列的算法,就借着这个机会总结一下自己对这个算法的理解,由于是第一次写算法类的博客,文中有什么错误和行文不通的地方还希望大家指正. yolov2与yolov1有很多改变. 最重要 ...

  2. 一次错误使用 go-cache 导致出现的线上问题

    话说一个美滋滋的上午, 突然就出现大量报警, 接口大量请求都响应超时了. 排查过程 查看服务器的监控系统, CPU, 内存, 负载等指标正常 排查日志, 日志能够响应的结果也正常. request.l ...

  3. C++介绍和class的介绍

    课程介绍 程序设计II是程序设计I的延续,继续提高编程能力,并能掌握面向对象(Object Oriented Programming)的程序设计方法.所谓面向对象,指的是将具体的流程变得模块化.这可以 ...

  4. 1025 PAT Ranking

    Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe ...

  5. 1003 Emergency (25分)

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  6. 将这段美化的css代码

    很多时候如果不是用了很多样式,很难把边框修饰得好看,看了一篇博文,觉得真的挺漂亮,也挺好看. 转载的博文地址 将这段美化的css代码 border:1px solid #96c2f1;backgrou ...

  7. hdu2870暴力或者dp优化

    题意:       给你一个矩阵,俩面的字母有一些转换规则,让你找到最大的相同字母字矩阵.. 思路:      一共有三种情况,就是a,b,c三种,我们可以分开来处理这三种情况,比如先处理a的,吧能转 ...

  8. hdu3449 有依赖的背包问题

    题意:       给你一些物品,每个物品有自己的价值和花费,每个物品都对应一个箱子,每个箱子有价钱,买这个物品必须买相应的箱子,给你一个价钱,问最多可以获得多少价值 <提示:多个物品可能同时对 ...

  9. Windows核心编程 第十七章 -内存映射文件(上)

    第1 7章 内存映射文件 对文件进行操作几乎是所有应用程序都必须进行的,并且这常常是人们争论的一个问题.应用程序究竟是应该打开文件,读取文件并关闭文件,还是打开文件,然后使用一种缓冲算法,从文件的各个 ...

  10. (1) arm 指令格式

    arm 指令的基本格式如下: <opcode>{<cond>}{S}{.W\.N} <Rd>,<Rn>{,<operand2>} opcod ...