Linux下LNMP(Linux+Nginx+Mysql+php)架构的搭建

一.LNMP架构介绍

LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

  • Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
  • Nginx是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。
  • Mysql是一个小型关系型数据库管理系统。
  • PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统

 

二.实验环境(rhel6.5版本)

主机环境:rhel6.5 selinux 和iptables 都必须是disabled状态

各主机信息

主机名IP服务
server1172.25.83.1nginx,mysql,php

 

三.LNMP架构的搭建

1.Nginx的源码编译安装及配置

<1>Nginx的源码编译安装

(1)官网下在nginx安装包并进行解压

[root@server1 ~]# ll -d nginx-1.14.0.tar.gz 
-rw-r--r-- 1 root root 1016272 Feb 23 12:42 nginx-1.14.0.tar.gz
[root@server1 ~]# tar zxf nginx-1.14.0.tar.gz

 

 

(2)编辑文件去掉nginx版本号(防止黑客攻击)和注释掉debug(日至内容太多)

[root@server1 ~]# cd nginx-1.14.0
[root@server1 core]# vim src/core/nginx.h 
 14 #define NGINX_VER          "nginx/"
[root@server1 nginx-1.14.0]# vim auto/cc/gcc
171 # debug
172 #CFLAGS="$CFLAGS -g"

 

 

 

(3)安装编译过程需要的依赖包

[root@server1 nginx-1.14.0]# yum install gcc -y
[root@server1 nginx-1.14.0]# yum install pcre-devel openssl-devel -y

 

(4)配置编译环境

[root@server1 ~]# mkdir /usr/local/lnmp     #创建/usr/local/lnmp,便于管理lnmp。
[root@server1 nginx-1.14.0]# ./configure --prefix=/usr/local/lnmp/nginx \
> --with-http_ssl_module \
> --with-http_stub_status_module \
> --with-threads \
> --with-file-aio \
> --user=nginx \
> --group=nginx

 

 

(5)编译安装

[root@server1 nginx-1.14.0]# make && make install

 

 

<2>Nginx的相关配置

(1)编辑配置文件

[root@server1 nginx-1.14.0]# vim /usr/local/lnmp/nginx/conf/nginx.conf
 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;   #支持php
 46         }

 65         location ~ \.php$ {   #将以下注释去掉,支持php
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;   #注释这行
 70             include        fastcgi.conf;   #修改成.conf结尾
 71         }

 

 

 

(2)做软连接(方便直接以命令方式启动nginx)

[root@server1 nginx-1.14.0]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/

 

 

(3)添加nginx用户和组:因为在前面编译nginx时指定了nginx用户和nginx组。否则在下一步的检查语法环节会报错。

[root@server1 ~]# useradd nginx
[root@server1 ~]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)

 

(4)检查语法是否有错误

[root@server1 nginx-1.14.0]# nginx -t

 

 

(5)启动nginx,并查看80端口是否存在

[root@server1 nginx-1.14.0]# nginx 
[root@server1 nginx-1.14.0]# netstat -antulpe | grep nginx 

 

 

2.Mysql数据库的源码编译安装及配置

<1>Mysql的源码编译安装

(1)官网下载mysql数据包(mysql-boost-5.7.17.tar.gz)并解压

 

[root@server1 ~]# ll mysql-boost-5.7.17.tar.gz 
-rw-r--r-- 1 root root 61480982 Feb 22 21:53 mysql-boost-5.7.17.tar.gz
[root@server1 ~]# tar zxf mysql-boost-5.7.17.tar.gz

 

(2)官网下载Mysql预编译工具包,并进行安装(cmake:它支持编译c++语言)

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)

[root@server1 ~]# ll cmake-2.8.12.2-4.el6.x86_64.rpm
-rw-r--r-- 1 root root 8373300 Feb 22 21:57 cmake-2.8.12.2-4.el6.x86_64.rpm
[root@server1 ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y

 

 

(3)安装预编译过程中的诸多依赖包

[root@server1 mysql-5.7.17]# yum install gcc gcc-c++ -y
[root@server1 mysql-5.7.17]# yum install ncurses-devel -y
[root@server1 mysql-5.7.17]# yum install bison -y    #bison可以安装,也可以不安装,不安装的话会有警告

 

(4)进行预编译(创建预编译环境时需指定一些之后用得到的参数)

如果在cmake时报错,缺什么,补什么,但是在重新cmaek之前要删掉缓存

[root@server1 mysql-5.7.17]# rm  -rf  CMakeCache.txt

以下是个参数意思:

[root@server1 mysql-5.7.17]#  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \    #安装目录
> -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \    #数据库存放目录
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \   #Unix  socket文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \      #安装myisam存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \    #安装innobase存储引擎
> -DDEFAULT_CHARSET=utf8 \              #utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \ #检验字符
> -DEXTRA_CHARSETS=all \                #安装所有扩展字符集
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \     #安装archive存储引擎     
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   #安装blackhole存储引擎
> -DWITH_PARTITION_STORAGE_ENGINE=1 \   #安装数据库分区
> -DENABLED_LOCAL_INFILE=1 \            #允许从本地导入数据
> -DWITH_READLINE=1 \                   #快捷键功能
> -DWITH_SSL=yes \                      #支持 SSL
> -DMYSQL_TCP_PORT=3306 \                 #MySQL监听端口

 

加上要用到的参数后创建编译环境(预编译)

[root@server1 mysql-5.7.17]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \    #安装目录
> -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \    #数据库存放目录
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \   #Unix  socket文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \      #安装myisam存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \    #安装innobase存储引擎
> -DDEFAULT_CHARSET=utf8 \              #utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \ #检验字符
> -DEXTRA_CHARSETS=all \                #安装所有扩展字符集
> -DWITH_BOOST=boost/boost_1_59_0

 

(5)编译与安装:make && make install

[root@server1 mysql-5.7.17]# make   #这一步需要的时间比较久,请耐心等待

 

[root@server1 mysql-5.7.17]# make install

 

 

编译成功后在/usr/local/lnmp目录下生成mysql目录

<2>Mysql的相关配置

(1)拷贝没有mysql服务启动脚本到/etc/init.d下,并给与可执行权限

[root@server1 mysql-5.7.17]# cp -p /usr/local/lnmp/mysql/support-files/mysql.server /etc/init.d/mysqld           #-p表示同步权限
[root@server1 mysql-5.7.17]# ll -d /etc/init.d/mysqld   #具有x的权限(可执行的权限)
-rwxr-xr-x 1 root root 10916 Feb 22 22:28 /etc/init.d/mysqld

 

 

(2)拷贝mysql配置文件到/etc下并进行修改

[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql/support-files
[root@server1 support-files]# cp /etc/my.cnf /etc/my.cnf.backup    #备份/etc/my.cnf文件。这步可做,可不做
[root@server1 support-files]# ls
magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf     #用my-default.cnf文件覆盖/etc/my.cnf文件
cp: overwrite `/etc/my.cnf'? y
[root@server1 support-files]# vim /etc/my.cnf    #编辑mysql的配置文件。
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock

 

 

(3)更改环境变量并刷新

 

[root@server1 support-files]# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 support-files]# source ~/.bash_profile


[root@server1 support-files]# mysql   #按两次tab键补全,来验证mysql环境变量配置成功
mysql                       mysqlimport
mysqladmin                  mysql_install_db
mysqlbinlog                 mysql_plugin
mysqlcheck                  mysqlpump
mysql_client_test           mysql_secure_installation
mysql_client_test_embedded  mysqlshow
mysql_config                mysqlslap
mysql_config_editor         mysql_ssl_rsa_setup
mysqld                      mysqltest
mysqld_multi                mysqltest_embedded
mysqld_safe                 mysql_tzinfo_to_sql
mysqldump                   mysql_upgrade
mysqldumpslow               mysqlxtest
mysql_embedded 

 

 

(4)创建mysql用户和组

[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -u 27 -g 27 mysql

 

(5)修改权限,创建/usr/local/lnmp/mysql/data,并更改该目录用户和所有组为mysql

[root@server1 mysql]# chgrp mysql /usr/local/lnmp/mysql/ -R     #此步可做,也可不做
[root@server1 ~]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# mkdir data
[root@server1 mysql]# chown mysql.mysql data

 

 

(6)获取数据库登陆密码

[root@server1 mysql]# mysqld --user=mysql --initialize    #执行命令后,密码在最后一行,一定要记住这个密码。
9=e2yyXGc6Op

 

(7)开启数据库,安全初始化,更改登陆密码(不进行安全初始化,不能在数据库进行操作)

[root@server1 mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/usr/local/lnmp/mysql/data/server1.err'.
 SUCCESS! 
[root@server1 mysql]# mysql_secure_installation     #更改密码时,就是刚刚生成的密码,其他默认回车就可以。

 

 

查看mysql的端口(3306)

 

 

(8)登陆测试

 

3.Php的源码编译安装及配置

<1>Php的源码编译安装

(1)官网下载php安装包并解压

[root@server1 ~]# ll -d php-5.6.35.tar.bz2 
-rw-r--r-- 1 root root 15055074 Feb 23 10:33 php-5.6.35.tar.bz2
[root@server1 ~]# tar jxf php-5.6.35.tar.bz2

 

 

(2)安装编译需要的依赖包

[root@server1 ~]# yum install libxml2-devel -y
[root@server1 ~]# yum install openssl-devel -y
[root@server1 ~]# yum install libcurl-devel -y
[root@server1 ~]# yum whatprovides */jpeglib.h
[root@server1 ~]# yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64 -y
[root@server1 ~]# yum whatprovides */png.h
[root@server1 ~]# yum install libpng-devel-1.2.49-1.el6_2.x86_64 -y
[root@server1 ~]# yum install freetype-devel -y
[root@server1 ~]# yum whatprovides */gmp.h
[root@server1 ~]# yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm         #这两个包需要从官网上下
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
[root@server1 ~]# yum install libmcrypt-* -y  
[root@server1 ~]# yum install net-snmp-devel -y

 

(3)配置编译环境

缺什么补什么
yum  provides  */不知道的包
再进行安装

参数意思:

[root@server1 ~]# cd php-5.6.35
[root@server1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php \  #php安装的位置
> --with-config-file-path=/usr/local/lnmp/php/etc \     #php配置文件所在的位置
> --with-openssl \          #支持openssl加密
> --with-snmp  \            #支持与mysql所数据库之间建立联系
> --with-gd \              
> --with-zlib \
> --with-curl \
> --with-libxml-dir \       #支持libxml函数
> --with-png-dir \          #支持php处理图片的格式(png格式)
> --with-jpeg-dir \         #支持php处理图片的格式(jpeg格式)
> --with-freetype-dir \     #支持php处理图片的格式(freetype格式)
> --with-gmp \
> --with-gettext \
> --with-pear \
> --enable-mysqlnd \
> --with-mysql=mysqlnd \
> --with-mysqli=mysqlnd \
> --with-pdo-mysqlnd \
> -enable-inline-optimization \
> --enable-soap \
> --enable-ftp \
> --enable-sockets \
> --enable-mbstring \
> --enable-fpm \            #开启fpm模式(nginx等服务用的)
> --with-fpm-user=nginx \   #对php服务的限制通过nginx用户来实现
> --with-fpm-group=nginx \  #php以nginx用户组身份运行
> --with-mcrypt \           #提供了对多种算法的支持,主要用来实现加密等算法
> --with-mhash              #加密算法

 

 

(4)编译安装

[root@server1 php-5.6.35]# make && make install   #该过程需要的时间比较久,请耐心等待

 

 

<2>Php的相关配置

(1)拷贝php启动脚本到/etc/init.d目录下,并给与执行权限

 

[root@server1 php-5.6.35]# cd sapi/fpm/
[root@server1 fpm]# ls
config.m4          LICENSE        php-fpm.conf        status.html.in
CREDITS            Makefile.frag  php-fpm.conf.in     tests
fpm                php-fpm        php-fpm.service     www.conf.in
init.d.php-fpm     php-fpm.8      php-fpm.service.in
init.d.php-fpm.in  php-fpm.8.in   status.html
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm          #给启动脚本加可执行的权限

 

 

(2)添加nginx用户和组:因为在前面编译php时指定了nginx用户和nginx组不过这一步在编译nginx时已经做了这步,所以这里不用再做这步。

 

(3)修改时区和pid

修改pid:因为上述的编译安装没有生成php-ftp.pid文件以供使用。所以要用下面的方案来生成php-fpm.pid文件

[root@server1 php-5.6.35]# cd /usr/local/lnmp/php/etc
[root@server1 etc]# ls
pear.conf  php-fpm.conf.default
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf      #拷贝文件。注意:这步是必须的,因为之后要在nginx服务的配置文件中进行相应的配置,使得nginx支持.conf结尾的文件
[root@server1 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default
[root@server1 etc]# vim php-fpm.conf
打开端口 pid = run/php-fpm.pid(去掉分号)

 

 

[root@server1 etc]# cd ~/php-5.6.35
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini    #值的注意的是必须将拷贝过来的文件的名字该为php.ini
[root@server1 php-5.6.35]# vim /usr/local/lnmp/php/etc/php.ini
date.timezone = Asia/Shanghai           #将时区改为亚洲上海

 

 

(4)开启php.并查看9000(php)端口是否存在

[root@server1 ~]# /etc/init.d/php-fpm start       #开启php-fpm服务
[root@server1 ~]# netstat -antulpe | grep php     #查看php-fpm的端口为9000

 

 

测试:

1.网页输入172.25.83.1(搭建lnmp服务器ip),即可访问到nginx默认页面

 

 

2.检测是否支持php语言

[root@server1 ~]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim index.php
<?php
phpinfo()
?>

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值