LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)

LNMP的工作原理

首先,浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。

mysql源码安装

1.安装:

[root@server1 ~]# yum install -y gcc
[root@server1 ~]# tar zxf mysql-boost-5.7.11.tar.gz
[root@server1 ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm

2.编译

[root@server1 ~]# cd mysql-5.7.17/
[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 \   #文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \    #安装 myisam 存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \  #安装 innodb 存储引擎
> -DDEFAULT_CHARSET=utf8 \     #使用 utf8 字符
> -DDEFAULT_COLLATION=utf8_general_ci \   #校验字符 
> -DEXTRA_CHARSETS=all     #安装所有扩展字符集

出现报错
这里写图片描述
解决报错

[root@server1 mysql-5.7.17]# rm -fr CMakeCache.txt #清空缓存文件
[root@server5 mysql-5.7.11]# yum install ncurses-devel gcc-c++ -y #解决依赖包
再次将编译程序跑一边,后面加上boots指定路径
[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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/   #boots指定路径
[root@server1 mysql-5.7.17]# yum install bison -y    #系统可以跳过warning错误
[root@server1 mysql-5.7.17]# make   #编译,链接,生成可执行文件
[root@server1 mysql-5.7.17]# make install    #安装

注意: 报错后一定要先清除缓存后再次编译

3.mysql简单配置

[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# rpm -qa|grep mysql
mysql-libs-5.1.71-1.el6.x86_64
[root@server1 mysql]# cd support-files/
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf 
cp: overwrite `/etc/my.cnf'? y
[root@server1 support-files]# vim /etc/my.cnf 

这里写图片描述

[root@server1 support-files]# file mysql.server   #查看文件是一个脚本
mysql.server: POSIX shell script text executable
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld  #服务器配置文件
[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -u 27 -g 27 -M -d /usr/loca /lnmp/mysql/data -s /sbin/nologin mysql     #创建mysql用户
[root@server1 mysql]# ll

这里写图片描述

[root@server1 mysql]# chown -R mysql.mysql .  #修改mysql目录下文件的权限
[root@server1 mysql]# cd bin
[root@server1 bin]# pwd
/usr/local/lnmp/mysql/bin
[root@server1 bin]# cd
[root@server1 ~]# vim .bash_profile   #将mysql添加到系统的环境变量里
[root@server1 ~]# source .bash_profile   #刷新环境变量文件

这里写图片描述

[root@server1 ~]# mysqld --initialize --user=mysql  #初始化mysql

这里写图片描述

[root@server1 mysql]# /etc/init.d/mysqld start
[root@server1 mysql]# chown root . -R    #为了安全,改回权限
[root@server1 mysql]# chown mysql data/ -R   #只将data文件设为mysql用户可写
[root@server1 mysql]# mysql_secure_installation   
    Enter password for user root:            #输入初始化密码
    New password:                   #输入新密码
    enter new password: 
    Re-Change the password for root ? ((Press y|Y for Yes, any other key for No) :      
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y     #删除匿名
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y    #不允许远程root登陆
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y    #删除测试数据库并访问
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y   #重新加载权限表
[root@server1 mysql]# mysql -p     #登陆mysql

这里写图片描述


php源码安装

1.安装

[root@server1 ~]# tar jxf php-5.6.35.tar.bz2   #解压

2.安装php所有依赖性

[root@server1 ~]# yum install -y openssl-devel curl-devel gd-devel-2.0.35-11.el6.x86_64.rpm gmp-devel libmcrypt-* net-snmp-devel  libxml2-devel libpng-devel
[roo[root@server1 ~]# rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm 

3.编译php

[root@server1 ~]# cd php-5.6.35
[root@server1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash

这里写图片描述
看到这个界面说明编译成功,如果还有报错,说明还有依赖的安装包没有解决完,根据最后的error提示继续安装依赖包,再次将编译程序跑一遍,直到没有error为止。

[root@server1 php-5.6.35]# make   #编译,链接,生成可执行文件
[root@server1 php-5.6.35]# make install 

4.php简单配置

[root@server1 ~]# cd /usr/local/lnmp/php/
[root@server1 php]# cd etc/
[root@server1 etc]# ls
pear.conf  php-fpm.conf.default
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# cd
[root@server1 ~]# cd php-5.6.35
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-5.6.35]# cd /usr/local/lnmp/php/
[root@server1 php]# cd etc/
[root@server1 etc]# vim php.ini

这里写图片描述

[root@server1 etc]# vim php-fpm.conf
[root@server1 etc]# useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx    #创建用户

这里写图片描述

[root@server1 etc]# cd
[root@server1 ~]# cd php-5.6.35
[root@server1 php-5.6.35]# cd sapi/
[root@server1 sapi]# cd fpm/
[root@server1 fpm]# file init.d.php-fpm    #查看文件是否为脚本
init.d.php-fpm: POSIX shell script text executable
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm   #给执行权限
[root@server1 fpm]# /etc/init.d/php-fpm start  #开启服务
Starting php-fpm  done
[root@server1 fpm]# netstat -antlp

这里写图片描述


nginx源码安装

1.安装

[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz 
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz 
[root@server1 ~]# cd nginx-1.10.1
[root@server1 nginx-1.10.1]# vim src/core/nginx.h

这里写图片描述

[root@server1 nginx-1.10.1]# vim auto/cc/gcc

这里写图片描述

2.编译

[root@server1 nginx-1.10.1]# yum install -y pcre-devel   #安装依赖性
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --with-threads --with-file-aio
[root@server1 nginx-1.10.1]# make
[root@server1 nginx-1.10.1]# make install

3.配置nginx

[root@server1 nginx-1.10.1]# cd /usr/local
[root@server1 local]# cd lnmp/
[root@server1 lnmp]# cd nginx/
[root@server1 nginx]# ls
conf  html  logs  sbin
[root@server1 nginx]# pwd
/usr/local/lnmp/nginx
[root@server1 nginx]# cd conf/
[root@server1 conf]# vim nginx.conf

这里写图片描述
这里写图片描述

[root@server1 ~]# vim /etc/security/limits.conf 

这里写图片描述

[root@server1 ~]# vim .bash_profile
[root@server1 ~]# source .bash_profile
[root@server1 ~]# nginx -t
[root@server1 ~]# nginx

这里写图片描述
访问网页172.25.40.1
这里写图片描述

[root@server1 ~]# cd /usr/local/lnmp/nginx/html
[root@server1 html]# vim index.php

这里写图片描述
网页访问172.25.40.1/index.php
这里写图片描述

4.默认访问php页面

[root@server1 ~]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload

这里写图片描述
网页直接访问172.25.40.1时默认访问php网页
这里写图片描述


搭建论坛

[root@server1 ~]# yum install -y unzip
[root@server1 ~]# unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
[root@server1 ~]# cd /usr/local/lnmp/
[root@server1 lnmp]# ls
mysql  nginx  php
[root@server1 lnmp]# cd nginx/
[root@server1 nginx]# cd html
[root@server1 html]# cd upload/
[root@server1 html]# mv upload/ bbs

网页访问172.25.40.1/bbs
这里写图片描述
这里写图片描述

[root@server1 html]# cd bbs
[root@server1 bbs]# chmod 777 config/ data/ uc_server/ uc_client/ -R

刷新网页
这里写图片描述
这里写图片描述
这里写图片描述
问题1:
这里写图片描述

[root@server1 bbs]# /etc/init.d/mysqld start
[root@server1 etc]# vim php.ini
[root@server1 etc]# /etc/init.d/php-fpm reload
    Reload service php-fpm  done

这里写图片描述
这里写图片描述
这里写图片描述
再次刷新网页
问题2
这里写图片描述

[root@server1 etc]# cd /usr/local
[root@server1 local]# cd lnmp/
[root@server1 lnmp]# cd mysql/
[root@server1 mysql]# chmod 755 data

再次刷新网页
这里写图片描述
这里写图片描述
进入管理中心
问题3
这里写图片描述

[root@server1 ~]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# cd bbs/
[root@server1 bbs]# cd install/
[root@server1 install]# rm -fr index.php   #下次登陆论坛时,不用再次重新安装

再次刷新网页

猜你喜欢

转载自blog.csdn.net/Argued_D/article/details/81428214