首先,什么是lnmp ? lnmp就是 Linux+nginx + mysql + PHP,如果您还不懂,那么请麻烦点一下浏览器上方的一个x按钮,退出本页面。
在开始搭建之前,我先来交代一下我的Linux系统环境,为centos,即使其他的linux系统也没关系,只是为了保证不出错误还是尽量和我的系统保持一致,那如果不一致怎么办,比如你的Linux系统为ubuntn,那就把我的一些命令换成ubuntu的命令就可以了。
另外说明的一点,本次搭建的lnmp环境,我们会分开安装各个软件,并且是采用源码编译安装,如果你觉得这并不是你阅读本篇文章的作用,而是想集成安装,那么请访问LNMP一键安装包 - CentOS/RadHat/Debian/Ubuntu下自动编译安装Nginx,PHP,MySQL,PHPMyAdmin 网址来根据步骤一步步的安装吧。好了,废话不多说,让我开始吧,let's do it!
在安装PHP之前需要安装一些依赖包,执行下面的命令就可以了,如果安装过请忽略
yum install vim gcc gcc++ wget libxml2-devel wget -y
1.下载PHP
访问PHP的官方下载地址:https://php.net
找到自己想要安装的版本来进行下载,我这里就以我自己的需求来选个一个地址
http://cn2.php.net/get/php-5.6.34.tar.gz/from/this/mirror
2.登陆到自己的Linux系统
3.进入自己的家目录,如果你是超级管理员用户,那么你的家目录是在/root下面,如果你是普通用户,你的目录是在/home ,当然了,像PHP这种服务,我们还是尽量用超级管理员用户登陆。
wget http://cn2.php.net/get/php-5.6.34.tar.gz/from/this/mirror
执行上面的目录来下载,这里来解释一下,mirror 这个是什么东西,这个就是和.gz 等的一样的压缩包,很多人等下载完这个东西,看到没有.zip,.gz 等这些后缀名,以为下载失败,其实不是,所以请放心。
接下来让我们解压文件
tar zxvf mirror
解压完就会在当前文件夹看到PHP的安装包,比如我的解压完是
mirror php-5.6.34
其中php-5.6.34就是我们需要用到的压缩包,让我们进入目录进行安装
cd php-5.6.34
进入目录之后就会发现有需要的文件,这些就是PHP的源文件
然后我们编译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了。
接下来我们简单介绍一下怎么运行我们自己写的PHP文件
比如我们随便在一个地方写一个index.php文件,然后写入内容
echo
然后保存退出,执行
/usr/local/php/bin/php index.php
这个时候输出hello world就代表文件执行成功,/usr/local/php/bin/php 是PHP文件执行的入口,如果我们要将PHP写如Linux环境变量,需要加入的目录为/usr/local/php/bin
同样的在安装之前先安装一些依赖工具和依赖包,如果安装求忽略
yum install cmake gcc gcc++ gcc-c++ ncurses-devel bison perl-Data-Dumper boost boost-doc boost-devel git -y
需要说明是其中的cmake工具,新版的mysql都采用cmake安装,所以请务必安装这个工具。
1.下载mysql的安装包
mysql的官方地址为:MySQL
在下载地址选择自己想要下载的版本,我这里就以我的情况提供一个下载地址
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz
然后执行下载,注意,下载地址像上面一样选择家目录
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz
然后解压
tar zxvf mysql-5.7.21.tar.gz
然后进入目录
cd mysql-5.7.21
然后编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DMYSQL_USWE=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DMITH_ZLIB:STRING=bundled -DWITH_BOOST=/usr/include/boost
然后安装
make && make install
根据机器的不同,安装时间也会不同。
安装完成之后还不可以,因为我们是编译安装的,在my.cnf 配置文件中,mysql指定mysql用户来作为mysql的权限,但是我们的系统里这个时候并没有mysql。
建立mysql用户组和mysql用户
groupadd mysql //建立用户组
useradd mysql mysql //建立用户并关联用户组
你以为到这里就结束里,并没有,新版的mysql数据库,需要在启动mysql的之前先初始化数据库,也就是将表结构写入数据库,执行
/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql
然后启动mysql
启动mysql的方式有三种,这里只列出一种
/usr/local/mysql/bin/mysqld_safe --user=mysql &
执行完按回车键,然后查看是否已经启动成功
ps aux | grep mysql
如果启动失败了,不会看到mysql的进程,并且在启动的环节就会报错,错误不会很大,无非就是文件没有权限了,把相应的文件的所属用户和用户组修改一下就好了,例如
chown -R mysql:mysql /var/run/mysql //这里只是一个举个例子,根据实际情况而定
如果对用户和用户组不知道是啥的,请参照我的另外一篇文章Linux用户以及用户组
如果还报错,请在下方给我留言,并附上错误的原因,程序员直接贴代码就好了
安装nginx之前先安装一个扩展pcre,这个是正则匹配用到的扩展,官方网址
PCRE - Perl Compatible Regular Expressions
可以在这个网站下载自己喜欢的版本,我这里就选择最新的版本,并附上安装过程
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
下载nginx
nginx的官方网址:nginx news ,可以在这里选择下载自己喜欢的版本,我这里以最新版为例
cd ~
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar zxvf cd nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00
make
make install
然后启动nginx
/usr/local/nginx/sbin/nginx
查看是否已经启动
ps aux | grep nginx
然后访问
127.0.0.1 //如果打印输出Welcome to nginx! 说明安装成功
增加nginx对PHP的支持
假设我们设定PHP的目录为
/usr/local/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;
}
然后保存退出
cd /home
mkdir www
cd www
vim index.php
然后输入
然后重启php和nginx
/usr/local/nginx/sbin/nginx
/usr/local/php/sbin/php-fpm
打开浏览器,输入
127.0.0.1/index.php
如果输出hello world 代表着成功。
至此,我们的lnmp环境已经搭建完毕,如果您有什么问题,请在下方留言,我看到会第一时间回复的哦!