Linux运维——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@foundation38 Desktop]# scp -r lnmp/ [email protected]:/root/
[root@vm1 ~]# cd lnmp/
[root@vm1 lnmp]# tar zxf mysql-boost-5.7.17.tar.gz
[root@vm1 lnmp]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y              ##解决依赖性
[root@vm1 lnmp]# yum install   gcc    gcc-c++    ncurses-devel     -y
[root@vm1 mysql-5.7.17]# cd mysql-5.7.17/                      ##必须进入mysql目录再编译
[root@vm1 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 \
当编译报错时,必须执行:
[root@vm1 mysql-5.7.17]# make clean
[root@vm1 mysql-5.7.17]# rm -fr CMakeCache.txt
重新编译
[root@vm1 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 \           ##安装innobase存储引擎
> -DDEFAULT_CHARSET=utf8 \                 ##使用utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \             ##校验字符
> -DEXTRA_CHARSETS=all \                  ##安装所有扩展字符集
> -DWITH_BOOST=boost/boost_1_59_0/                  ##boots指定路径
[root@vm1 mysql-5.7.17]# yum install bison -y                ##解决编译警告
[root@vm1 mysql-5.7.17]# poweroff
vm3内存给1024,虚拟硬盘给20G
必须在/root/lnmp/mysql-5.7.17/下安装
[root@vm1 mysql-5.7.17]# make && make install                #编译链接生成可执行文件 && 安装

其他:
0.0.0.0 默认网关————wifi连着,不可访问外网————解决/etc/sysconfig/network注释网关,重启网络;临时办法route del default gw 172.25.254.250

2.数据库简单配置

[root@vm1 ~]# cd lnmp/mysql-5.7.17/support-files/
[root@vm1 support-files]# cp mysql.server /etc/init.d/mysqld             ##添加启动脚本
[root@vm1 support-files]# vim /etc/my.cnf
[root@vm1 support-files]# cd /etc/
[root@vm1 etc]# cp my.cnf my.cnf.bak           ##备份原文件
[root@vm1 etc]# cd -
/root/lnmp/mysql-5.7.17/support-files
[root@vm1 support-files]# cp my-default.cnf /etc/my.cnf             ##重新拷贝安装包里的过去
cp: overwrite `/etc/my.cnf'? y
[root@vm1 support-files]# cd /etc/
[root@vm1 etc]# vim my.cnf                  ##里面写入安装路径,数据库存放路径,文件路径

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第1张图片
[root@vm1 etc]# groupadd -g 27 mysql
[root@vm1 etc]# useradd -u 27 -g 27 mysql               ##创建mysql用户,root用户开启进程不安全,因root权力太大
[root@vm1 etc]# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)
[root@vm1 etc]# chown mysql.mysql /usr/local/lnmp/mysql/ -R               ##修改mysql目录下所有人及所有组
[root@vm1 etc]# vim ~/.bash_profile                   ##将mysql用户添加到系统的环境变量中

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第2张图片
[root@vm1 etc]# source ~/.bash_profile             ##刷新,使之生效
[root@vm1 etc]# mysqld --user=mysql --initialize            ##初始化mysql;会看到初始密码

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第3张图片

[root@vm1 etc]# chown root /usr/local/lnmp/mysql/ -R           ##为了安全,把mysql目录下所有人还原为root
[root@vm1 etc]# chown mysql /usr/local/lnmp/mysql/data/ -R           ##只改data文件所有人
[root@vm1 etc]# ll /usr/local/lnmp/mysql/

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第4张图片
[root@vm1 etc]# chmod +x /etc/init.d/mysqld            ##给启动脚本加执行权限
[root@vm1 etc]# /etc/init.d/mysqld start
[root@vm1 etc]# mysql -uroot -p'Wv_,FOLNT1kk'               ##用初始密码登陆后会报错提示改密码
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
[root@vm1 etc]# mysql_secure_installation -p'Wv_,FOLNT1kk'           ##输入新密码后,一直回车(不启用密码检测插件...)
[root@vm1 etc]# mysql -uroot -predhat              ##登陆mysql

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第5张图片
二、PHP(php是连接nginx与mysql的桥梁)

1、源码编译php(需要什么,安装什么)

[root@vm1 ~]# cd lnmp/
[root@vm1 lnmp]# tar jxf php-5.6.35.tar.bz2   
[root@vm1 lnmp]# yum install   re2c-0.13.5-1.el6.x86_64.rpm     libmcrypt-2.5.8-9.el6.x86_64.rpm   libmcrypt-devel-2.5.8-9.el6.x86_64.rpm -y
[root@vm1 lnmp]# cd php-5.6.35              ##必须在此目录下编译
[root@vm1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --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     ##编译(要把刚才编译的mysql参数加进来;添加mysql的驱动mysqlnd)
报错1:
error: xml2-config not found. Please check your libxml2 installation.
[root@vm1 php-5.6.35]# yum install libxml2-devel libcurl-devel -y
再次编译
报错2:
error: Cannot find OpenSSL's
[root@vm1 php-5.6.35]# yum install openssl-devel -y
再次编译
报错3:
No such command: whatprodives. Please use /usr/bin/yum --help
[root@vm1 php-5.6.35]# yum whatprovides */jpeglib.h
[root@vm1 php-5.6.35]# yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64 -y
再次编译
报错4:
error: png.h not found.
[root@vm1 php-5.6.35]# yum whatprovides */png.h
[root@vm1 php-5.6.35]# yum install libpng-devel-1.2.49-1.el6_2.x86_64 -y
再次编译
报错5:    
error: freetype-config not found.
[root@vm1 php-5.6.35]# yum whatprovides */freetype-config
[root@vm1 php-5.6.35]# yum install freetype-devel-2.3.11-14.el6_3.1.x86_64 -y
再次编译
报错6:     
error: Unable to locate gmp.h
[root@vm1 php-5.6.35]# yum whatprovides */gmp.h
[root@vm1 php-5.6.35]# yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
再次编译
报错7:      
error: Could not find net-snmp-config binary. Please check your net-snmp installation.
[root@vm1 php-5.6.35]# yum search net-snmp
[root@vm1 php-5.6.35]# yum install net-snmp net-snmp-devel -y
[root@vm1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --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           ##编译成功

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第6张图片

[root@vm1 php-5.6.35]# make && make install  ##编译 && 安装

2.PHP配置

[root@vm1 php-5.6.35]# cd /usr/local/lnmp/php/
[root@vm1 php]# useradd nginx             ##添加nginx用户
[root@vm1 php]# cd etc/
[root@vm1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@vm1 etc]# vim php-fpm.conf         ##use、group为nginx;pid打开


[root@vm1 etc]# cd
[root@vm1 ~]# cd lnmp/php-5.6.35
[root@vm1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@vm1 php-5.6.35]# cd /usr/local/lnmp/php/etc/
[root@vm1 etc]# vim php.ini             ##设置时区


[root@vm1 etc]# cd -
/root/lnmp/php-5.6.35
[root@vm1 php-5.6.35]# cd sapi/fpm/
[root@vm1 fpm]# pwd
/root/lnmp/php-5.6.35/sapi/fpm
[root@vm1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@vm1 fpm]# chmod +x /etc/init.d/php-fpm
[root@vm1 fpm]# /etc/init.d/php-fpm start
[root@vm1 fpm]# netstat -antlpe|grep php
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      0          207203     10938/php-fpm       
[root@vm1 fpm]# netstat -antlpe|grep mysql
tcp        0      0 :::3306                     :::*                        LISTEN      27         88459      19430/mysqld      

三、nginx

1.源码安装

[root@vm1 lnmp]# tar zxf nginx-1.14.0.tar.gz
[root@vm1 lnmp]# cd nginx-1.14.0
[root@vm1 nginx-1.14.0]# vim auto/cc/gcc          ##关闭debug模式


[root@vm1 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
[root@vm1 nginx-1.14.0]# yum install pcre-devel -y
[root@vm1 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
[root@vm1 nginx-1.14.0]# make && make install

2.配置

[root@vm1 nginx-1.14.0]# cd /usr/local/lnmp/nginx/
[root@vm1 nginx]# cd conf/
[root@vm1 conf]# vim nginx.conf

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第7张图片
注:fastcgi在php解释器上运行php文件,并把执行结果返回到nginx页面。mysql通过php读写
[root@vm1 conf]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@vm1 conf]# nginx -t
[root@vm1 conf]# nginx
[root@vm1 conf]# netstat -antlpe|grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      0          211898     14882/nginx         
[root@vm1 conf]# cd /usr/local/lnmp/nginx/html/
[root@vm1 html]# vim index.php            ##php测试页面


[root@vm1 html]# nginx -s reload
检测:访问172.25.38.1

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第8张图片
至此,lnmp搭建完成

四、搭建论坛

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

检测:访问172.25.38.1/bbs

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第9张图片

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第10张图片

[root@vm1 bbs]# chmod 777 config/ -R
[root@vm1 bbs]# chmod 777 data/ -R
[root@vm1 bbs]# chmod 777 uc_server/ uc_client/ -R

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第11张图片

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第12张图片

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第13张图片

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第14张图片

[root@vm1 bbs]# vim /usr/local/lnmp/php/etc/php.ini

[root@vm1 bbs]# /etc/init.d/php-fpm reload

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第15张图片
[root@vm1 bbs]# chmod 755 /usr/local/lnmp/mysql/data/

Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第16张图片
Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装)_第17张图片

你可能感兴趣的:(Linux运维——LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装))