经过一番折腾,终于将LNMP环境搭建完成了。本文介绍的LNMP环境是在windows的Oracle VM VirtualBox中的Centos虚拟机上搭建的,各个软件的版本为:Centos7 + Nginx1.12.2 + Mysql-5.6.38 + PHP7.2.0。本文是在假设Centos7虚拟机已经安装完成的前提下进行介绍的,若尚未安装,可以前往Centos官网下载对应的ios文件安装,我下载的是这个:http://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso,然后按照网上的教程进行安装就可以了,教程实例:https://jingyan.baidu.com/article/9c69d48f8ec01613c8024e58.html。

  Centos7虚拟机安装完成就可以开始编译安装Nginx、Mysql和PHP了,下面容我一一道来。

一、安装前

1. 更新系统软件:

yum update

2. 查看是否已安装wget:

rpm -qa wget

否则安装:

yum install wget

3. 查看是否已安装编译器:

rpm -qa gcc

否则安装:

yum install gcc gcc-c++

二、安装Nginx

1. 安装nginx依赖包

nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法:

yum -y install pcre pcre-devel

nginx的各种模块中需要使用gzip压缩:

yum -y install zlib zlib-devel

安全套接字层密码库:

yum -y install openssl openssl-devel

2. 下载nginx包并解压(到/usr/local/src目录中)

cd /usr/local/src

wget http://nginx.org/download/nginx-1.12.2.tar.gz

tar -zxvf nginx-1.12.2.tar.gz

3. 编译安装(到/usr/local/nginx目录中)

cd nginx-1.12.2

./configure --prefix=/usr/local/nginx

make

make install

4. 创建并设置nginx运行账号:

groupadd nginx

useradd -M -g nginx -s /sbin/nologin nginx

cd /usr/local/nginx/conf

vim nginx.conf,设置user参数如下:

user nginx nginx

其他配置参数暂时无需改动。

5. 设置nginx为系统服务

vim /lib/systemd/system/nginx.service

文件内容:

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

6. 设置nginx开机自启动

systemctl enable nginx.service

7. 开启nginx服务:

systemctl start nginx.service

查看nginx是否启动成功:

ps aux | grep nginx

在虚拟机浏览器中访问测试:

http://localhost

出现以下界面则表示可以成功访问:

8. 防火墙开放80端口(nginx默认使用80端口,可在nginx.conf中配置,若无需进行远程访问则不需要开放端口)

永久开放80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙:

firewall-cmd --reload

查看防火墙开启状态:

systemctl status firewalld

查看80端口是否开放成功:

firewall-cmd --zone=public --query-port=80/tcp

可在windows宿主主机浏览器直接访问虚拟机ip测试是否可以成功访问。

三、安装Mysql

1. 卸载已有mysql

查看是否已安装mysql:

rpm -qa mysql

有则卸载:

rpm -e --nodeps 文件名称

是否存在与mysql相关的文件或目录:

whereis mysql

是则删除。

查看是否存在mariadb:

rpm -qa | grep mariadb

存在则卸载:

rpm -e --nodeps 文件名 //文件名是上一个命令查询结果

存在/etc/my.cnf,则需要先删除:

rm /etc/my.cnf

2. 安装编译mysql需要的依赖包

yum install libevent* libtool* autoconf* libstd* ncurse* bison* openssl*

3. 安装cmake(mysql5.5之后需要用cmake支持编译安装)

查看是否已安装cmake:

rpm -qa cmake

没有则下载编译安装:

cd /usr/local/src

wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz

tar -xf cmake-2.8.12.1.tar.gz

cd cmake-2.8.12.1

./configure

make

make install

检查cmake是否安装成功:

cmake --version

4. 下载mysql包并解压(到/usr/local/src目录)

cd /usr/local/src

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz

tar -zxvf mysql-5.6.38.tar.gz

5. 编译安装(到/usr/local/mysql目录)

cd mysql-5.6.38

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

make(此过程需花费大概20-30分钟)

make install

6. 配置mysql

groupadd mysql

useradd -M -g mysql -s /sbin/nologin mysql

chown -R mysql:mysql /usr/local/mysql

7. 初始化配置

cd /usr/local/mysql/scripts

./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

8. 设置mysql为系统服务

vim /lib/systemd/system/mysql.service

文件内容:

[Unit]

Description=mysql

After=network.target

[Service]

Type=forking

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

ExecStop=/usr/local/mysql/support-files/mysql.server stop

ExecRestart=/usr/local/mysql/support-files/mysql.server restart

ExecReload=/usr/local/mysql/support-files/mysql.server reload

PrivateTmp=true

[Install]

WantedBy=multi-user.target

9. 设置mysql服务开机自启动

systemctl enable mysql.service

10. 启动mysql

systemctl start mysql.service

若是启动失败:

直接使用/usr/local/mysql/support-files/mysql.server restart启动可以看到详细错误原因:

若是这个原因,/var/lib/mysql这个目录(用于存放mysql.sock)不存在的话,手动创建就好了:

mkdir /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

再次启动,成功了!

查看是否启动成功:

ps aux | grep mysql

11. 登录mysql并设置root密码:

/usr/local/mysql/bin/mysql -u root

set password=password('123456');

四、安装PHP

1. 安装php依赖包

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

若提示yum中没有可用的软件包libmcrypt和libmcrypt-devel,则需要手动编译安装,可以先在windows宿主主机中前往libmcrypt官网下载然后使用rz指令将包上传至centos7进行编译安装。我下载的包为libmcrypt-2.5.8.tar.gz:

tar -zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure --prefix=/usr/local/libmcrypt

make

make install

2. 下载php包并解压

cd /usr/local/src

在windows上前往php官网下载php-7.2.0包,然后使用rz指令将下载好的php安装包上传到centos7上,解压:

tar -zxvf php-7.2.0.tar.gz

3. 编译安装(到/usr/local/php目录)

cd php-7.2.0

./configure --prefix=/usr/local/php --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-mbstring --with-mcrypt=/usr/local/libmcrypt --enable-zip --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --without-pear  --enable-bcmath

(注意:--with-mcrypt参数指定的是libmcrypt的安装目录。Php7不再使用mysql的库来支持mysql的连接,而是启用了mysqlnd来支持,所以php7的编译已经不再使用--with-mysql参数指定mysql的安装位置了,若想支持mysql,需要设置--enable-mysqlnd、--with-mysqli和--with-pdo-mysql=mysqlnd参数,--with-mysql-sock指定的是编译mysql时-DMYSQL_UNIX_ADDR参数指定的文件)

make(此过程需花费大概20分钟)

make install

4. 将php包解压目录中的配置文件放置到正确位置(configure命令中的--with-config-file-path设置的位置)

cp php.ini-development /etc/php.ini

5. 创建并设置php-fpm运行账号

groupadd www-data

useradd -M -g www-data -s /sbin/nologin www-data

cd /usr/local/php/etc

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

vim php-fpm.conf

发现搜索不到“user”(设置运行账号的位置),但发现文件的最后一行:

所以:

cd php-fpm.d

cp www.conf.default www.conf(否则include匹配不到文件)

vim www.conf

搜索“user”设置运行账号:

user=www-data

group=www-data

6. 配置nginx支持php

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

修改完成之后记得重启nginx服务:

systemctl start nginx.service

7. 设置php-fpm为系统服务:

vim /etc/systemd/system/php-fpm.service

文件内容:

[Unit]

Description=php-fpm

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/php/sbin/php-fpm

PrivateTmp=True

[Install]

WantedBy=multi-user.target

8. 设置php-fpm服务开机自启动:

systemctl enable php-fpm.service

9. 启动php-fpm:

systemctl start php-fpm.service

查看是否启动成功:

ps aux | grep php-fpm

10.写一个php脚本测试nginx是否已支持php,php是否已支持mysql。

<?php
phpinfo();

  至此,LNMP搭建完成!

PHP扩展安装说明:

  若想安装一些PHP扩展,首先可以在PHP源码目录下的ext子目录中查找是否存在你想安装的扩展,不存在则下载,存在则直接进入扩展源码目录进行安装操作,下面以安装pcntl扩展为例进行说明。

首先编译源码安装pcntl扩展:

cd /usr/local/src/php-7.0.27/ext/pcntl   (进入扩展源码目录)

/usr/local/php/bin/phpize(取决于你安装php之后phpize文件的位置)

./configure --with-php-config=/usr/local/php/bin/php-config(取决于你安装php之后php-config文件的位置)

make

make install

然后修改php配置文件:

vim /etc/php.ini

extension=pcntl.so

最后重启php-fpm服务:

systemctl reload php-fpm.service

这样pcntl就安装完成了!

  有个疑惑的地方,刚开始想安装mysql5.7.20的,但是在编译(make)的时候,真的很慢,有时候卡了大半天都不动的,不知道啥原因,试了很多次,浪费了很多时间啊,泪奔。最后实在受不了,改用mysql5.6.38,30分钟不到就编译完成了,阿西吧,有时候还是不要太纠结。。。

LNMP环境搭建哈哈的更多相关文章

  1. LNMP环境搭建

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

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

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

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

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

  4. LNMP环境搭建——MySQL篇

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

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

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

  6. Ubuntu16.04 lnmp 环境搭建

    Ubuntu16.04 lnmp 环境搭建 nginx 安装 sudo apt-add-repository ppa:nginx/stablesudo apt-add-repository ppa:o ...

  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环境搭建--Centos7

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

  9. zabbix学习(一)——LNMP环境搭建及zabbix安装

    第一部分:LNMP环境搭建 一.环境说明: OS:   centos7.6_x64nginx:nginx-1.16.0php:   php-7.1.11mysql:mysql-5.6.44 zabbi ...

随机推荐

  1. sweetalert2 全面替代 alert ,从 sweetalert2 弹出 text 到 弹出 Dom 以及模态框和取消 sweetalert2 的 OK 按钮

    1. 简易基本版 sweetalert 涵盖日常基本的弹出及对话框 2. 升级版本 sweetalert2 满足常见开发工作中的各种要求 3 取消 OK 按钮, 只需要设置 showConfirmBu ...

  2. xshell的快捷键

    https://blog.csdn.net/hellozpc/article/details/46753575

  3. Android应用系列:仿MIUI的Toast动画效果实现

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  4. (二)SQL -- 查询

    主要包含以下内容: 单表查询.子查询.多表查询(左连接右连接等).合并查询 单表查询: 基础查询语句: select 列名 from 表名 where 条件 group by 列名 order by ...

  5. the path component: '/var' is world-writable

    java.io.IOException: the path component: '/var' is world-writable.  Its permissions are 0666.  Pleas ...

  6. 第一次试验报告&学习总结

    打印输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个"水仙花数". 试验代码: p ...

  7. Vue 项目构建

    一.初始化项目 1.vue init webpack (fileName) 2.项目名称 3.项目描述 4.项目作者 5.是否依赖 .Vue 文件开发 第一个选项可以不依赖 .Vue 文件开发, 第二 ...

  8. tp3.2 页面Windows正常 linux异常,页面找不到

    这个问题主要是tp3.2 在读取控制器里的方法时,会把方法自动转为小写, 然后去对应view成找html文件,自然找不到. class textController extends ComContro ...

  9. html readonly 和 disable 区别

    readonly 和 disable的区别Readonly和Disabled它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(te ...

  10. webpack4常用片段

    webpack 4常用 初始化 npm init // Webpack 4.0以后需要单独安装 npm install webpack webpack-cli --save-dev 基础的config ...