LNMP(nginx+mysql+php)架构源码安装

一.mysql源码安装
步骤:
(1)下载解压源码包
注意:mysql 包和 mysql-boost 包的区别(mysql包必须配合boost-1.59版)
mysql5.7版本更新后,都需要boost库,mysql官网有自带boost库的源码包 ,cmake虽然yum源有自带,但版本过低,需安装 2.8 及以上版本的 cmake。
这里写图片描述
从网上下载包:
mysql-boost-5.7.17.tar.gz和cmake-2.8.12.2-4.el6.x86_64.rpm

tar zxf mysql-boost-5.7.11.tar.gz
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm
cd mysql-5.7.11/

(2)源码安装选择

cd mysql-5.7.11/
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    ##安装 innodb 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1   ##安装数据库分区
-DDEFAULT_CHARSET=utf8          ##使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci ##校验字符
-DEXTRA_CHARSETS=all            ##安装所有扩展字符集
-DWITH_BOOST=boost/boost_1_59_0/    ##指定 boost 路径

(3)解决依赖性

安装 gcc gcc-c++
指定 boost 路径
安装 ncurses-devel
安装 bison
注意:编译错误时,要清空CmakeCache,否则 cmake 时会读取错误文件
rm -fr CMakeCache.txt

这里写图片描述
(4)编译成功后,make&make install
这里写图片描述
这里写图片描述
(5)初始化设置

[root@server5 mysql-5.7.11]# cd /usr/local/lnmp/mysql/
[root@server5 mysql]# ls
bin  COPYING  docs  include  lib  man  mysql-test  README  share  support-files
[root@server5 mysql]# cd support-files/
[root@server5 support-files]# ls
magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@server5 support-files]# mv /etc/my.cnf /etc/my.cnf.back
[root@server5 support-files]# cp my-default.cnf /etc/my.cnf   ##复制mysql的配置文件
[root@server5 support-files]# cp mysql.server /etc/init.d/mysqld   ##复制mysql的执行脚本
[root@server5 support-files]# ll /etc/init.d/mysqld   (如果没有执行权限需要+x)
-rwxr-xr-x 1 root root 11005 Jul  1 18:01 /etc/init.d/mysqld
[root@server5 support-files]# groupadd -g 27 mysql
[root@server5 support-files]# useradd -u 27 -g 27 -d /usr/local/lnmp/mysql/data -M -s /sbin/nologin mysql
Creating mailbox file: File exists
[root@server5 support-files]# grep mysql /etc/passwdmysql:x:27:27::/usr/local/lnmp/mysql/data:/sbin/nologin
[root@server5 support-files]# pwd
/usr/local/lnmp/mysql/support-files
[root@server5 support-files]# cd ..
[root@server5 mysql]# chown mysql.mysql . -R
[root@server5 mysql]# pwd
/usr/local/lnmp/mysql
[root@server5 mysql]# cd bin/
[root@server5 bin]# vim /root/.bash_profile 
################################################################
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

export PATH`
##########################################################
[root@server5 bin]# source /root/.bash_profile   ##运行环境变量
[root@server5 mysql]# vim /etc/my.cnf        ##编辑配置文件
#############################################
 18 basedir = /usr/local/lnmp/mysql
 19 datadir = /usr/local/lnmp/mysql/data
 20 port = 3306
 21 # server_id = .....
 22 socket = /usr/local/lnmp/mysql/data/mysql.sock
########################################################

[root@server5 mysql]# mysql_install_db  ## 老版本的初始化命令,5.6以后新命令
[root@server1 bin]# mysqld --initialize --user=mysql

A temporary password is generated for root@localhost: _AcXHlHrf4Qk(临时密码)

[root@server1 mysql]# chown root . -R 
[root@server1 mysql]# chown mysql data/ -R   ##保证 mysql 用户对 data 目录有绝对权限

[root@server1 mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 

[root@server1 mysql]# mysql_secure_installation     ##安全初始化

##密码强度校验,y|Y:加载该模块,else:不检验密码强度
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

这里写图片描述
这里写图片描述
这里写图片描述
(6)登录测试

[root@server1 mysql]# mysql -p

mysql> create database westos;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| westos             |
+--------------------+
5 rows in set (0.00 sec)

[root@server1 mysql]# cd data/
[root@server1 data]# ls
auto.cnf        ib_logfile0  mysql            mysql.sock.lock     server1.pid
ib_buffer_pool  ib_logfile1  mysqld_safe.pid  performance_schema  sys
ibdata1         ibtmp1       mysql.sock       server1.err         westos

二.php源码安装
(1)解压、预编译 php

[root@server5 ~]# tar jxf php-5.6.35.tar.bz2 

(2)安装编译所需的各种包,解决依赖。进行编译,加上需要的参数

yum install libxml2-devel -y
yum install openssl-devel -y
yum install curl-devel -y
yum install freetype-devel -y
yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64
yum install -y gmp-devel
yum install -y net-snmp-devel
yum install libjpeg -y
rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm 
rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm 
rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

(3)编译三部曲

[root@server5 ~]# cd php-5.6.35
[root@server5 ~]# ./configure –prefix=/usr/local/lnmp/php 
–with-config-file-path=/usr/local/lnmp/php/etc –enable-mysqlnd 
--prefix    ##指定目录
--with-config-file-path     ##指定配置文件目录
--with-openssl      ##支持 openssl 服务
--with-curl/gd/zlib     ##支持 curl/gd/zlib
--with-libxml-dir    ##支持 libxml 函数
--with-png-dir//--with-jpeg-dir     ##支持图片格式
--mysql(等等)     ##数据库类型指定 mysqlnd
--with-fpm-user/group   ##指定用户、组
--with-mcrypt/mhash ##支持 crypt/hash

make && make install

(4)配置php

[root@server5 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server5 php-5.6.35]# cd /usr/local/lnmp/php/
[root@server5 php]# cd etc/
[root@server5 etc]# ls
pear.conf  php-fpm.conf.default  php.ini
[root@server5 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server5 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini
[root@server5 etc]# vim php-fpm.conf
###########################################################
 21 [global]
 22 ; Pid file
 23 ; Note: the default prefix is /usr/local/lnmp/php/var
 24 ; Default Value: none
 25 pid = run/php-fpm.pid
#################################################################
 [root@server5 etc]# vim php.ini
##############################################################
 933 [Date]
 934 ; Defines the default timezone used by the date functions
 935 ; http://php.net/date.timezone
 936 date.timezone =Asia/Shanghai

(5)复制脚本,启动 php

root@server1 php-5.6.35]# cd sapi/fpm/
[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 status
php-fpm is stopped
[root@server1 fpm]# /etc/init.d/php-fpm start
Starting php-fpm  done

三.nginx源码安装
(1)解压、预编译

    tar zxf nginx-1.10.1.tar.gz
    tar zxf nginx-sticky-module-ng.tar.gz
    cd nginx-1.10.1
    [root@server5 nginx-1.10.3]# vim src/core/nginx.h
########################################
 12 #define nginx_version      1010003
 13 #define NGINX_VERSION      "1.10.3"
 14 #define NGINX_VER          "nginx/"    ##隐藏nginx版本
[root@server5 nginx-1.10.3]# vim auto/cc/gcc 
############################################
178 # debug                           
179 #CFLAGS="$CFLAGS -g"                    ##关闭debug 
###########################################

这里写图片描述
这里写图片描述
(2)进行编译第一步

./configure --prefix=/usr/local/lnmp/nginx  ##指定安装目录
--with-http_ssl_module      ##安装 ssl 模块
--with-threads      ##设置多线程
--with-http_stub_status_module 
--with-file-aio –add-module=/root/nginx-sticky-module-ng文件读写,aio 模式,一个有效请求,一个线程,nginx#导入nginx-sticky模块

(3)会报错,因为缺少pcre-devel包
这里写图片描述

yum install -y pcre-devel

(4)重新进行编译之后make&make install
这里写图片描述
(5)修改Nginx的配置文件

[root@server5 nginx]# vim /usr/local/lnmp/nginx/conf/nginx.conf

 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;
 46         }
 65         location ~ \.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;
 71         }


 ##################################################
[root@server5 nginx]# ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/
[root@server5 nginx]# nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server5 nginx]# vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>
[root@server5 nginx]# nginx 
[root@server5 nginx]# /etc/init.d/php-fpm start 
Starting php-fpm  done
[root@server5 nginx]# nginx -s reload

这里写图片描述
(6)测试是否成功,出现下图页面说明Nginx安装启动成功
这里写图片描述
(7)写一个PHP测试页面并进行测试
这里写图片描述
这里写图片描述

四、lnmp搭建论坛,测试架构
这儿不太清楚,在网上看了看,内容都比较杂乱,掌握了一点大概过程,相信会有一定的学习效果。

猜你喜欢

转载自blog.csdn.net/chao199512/article/details/81417030