LNMP架构

一、Mysql 源码安装

1、下载、解压、编译mysql
下载安装包:mysql-boost-5.7.11.tar.gz (boost模块自带)
[root@server1 ~]# tar zxf mysql-boost-5.7.11.tar.gz 
[root@server1 ~]# yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm
[root@server1 ~]# cd mysql-5.7.11/	
[root@server1 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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
 

注意:

1.cmake版本必须2.8以上,系统rpm包自带为2.6版本,因此需要自行下载2.8以上版本的cmake.
2.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 路径

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

2、解决依赖性
[root@server1 mysql-5.7.11]# yum install -y gcc gcc-c++
[root@server1 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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/     ##指定 boost 路径
[root@server1 mysql-5.7.11]# rm -f CMakeCache.txt  ##清空Cmake,否则 cmake 时会读取错误文件
[root@server1 mysql-5.7.11]# yum install -y ncurses-devel
[root@server1 mysql-5.7.11]# rm -f CMakeCache.txt
[root@server1 mysql-5.7.11]# yum install -y bison
[root@server1 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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/

示图:成功解决依赖性
这里写图片描述

3、编译并安装
[root@server1 mysql-5.7.11]# make
[root@server1 mysql-5.7.11]# make install
4、mysql配置
<1>创建mysql的可执行脚本
[root@server1 ~]# cd /usr/local/lnmp/mysql/support-files/
[root@server1 support-files]# ls
magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@server1 support-files]# file mysql.server     ##shell脚本文本可执行文件
mysql.server: POSIX shell script text executable     
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld
[root@server1 support-files]# ll /etc/init.d/mysqld ##脚本是否有可执行权限+x
-rwxr-xr-x 1 root root 11005 Oct 23 14:30 /etc/init.d/mysqld
[root@server1 ~]# cd /etc/
[root@server1 etc]# mv my.cnf my.cnf.back             ##将原配置文件备份
[root@server1 etc]# cd /usr/local/lnmp/mysql/support-files/
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf
<2>新建mysql用户,指定uid、gid和家目录
[root@server1 ~]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -u 27 -g 27 -d /usr/local/lnmp/mysql/data -M -s /sbin/nologin mysql
[root@server1 mysql]# grep mysql /etc/passwd
mysql:x:27:27::/usr/local/lnmp/mysql/data:/sbin/nologin
[root@server1 mysql]# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)
[root@server1 mysql]# chown mysql.mysql . -R              ##当前目录第归

在这里插入图片描述

<3>修改环境变量
[root@server1 mysql]# vim ~/.bash_profile
 10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 mysql]# source ~/.bash_profile 
<4>编辑配置文件
[root@server1 ~]# 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@server1 ~]# mysqld --initialize --user=mysql   ##初始化临时密码
 [root@server1 mysql]# chown root . -R
[root@server1 mysql]# chown mysql data/ -R    ##保证 mysql 用户对 data 目录有绝对权限
[root@server1 mysql]# /etc/init.d/mysqld start
[root@server1 mysql]# mysql_secure_installation  ##安全初始化,初始密码为临时密码

示图:初始化临时密码
在这里插入图片描述


mysql初始化命令:
mysql_install_db                    ##旧版本初始化命令
mysqld --initialize --user=mysql    ##新版本初始化命令
初始化报错:

在这里插入图片描述

以上报错原因:
mysql在进行初始化的时后,会检测数据目录是否存在,
如过不存在,mysql会创建它,
如果存在,而且这个目录里有数据,mysql会报错,并且终止初始化:
解决方法:删除data目录,重新初始化

[root@server1 ~]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# rm -fr data/
[root@server1 mysql]# mysqld --initialize --user=mysql

5、登陆测试

在这里插入图片描述

二、Php 源码安装

1、下载、解压php安装包
[root@server1 ~]# tar jxf php-5.6.35.tar.bz2 
2、编译、安装
[root@server1 php-5.6.35]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-mysqlnd --with-mysql=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
[root@server1 php-5.6.35]# make && make install 
解决依赖性安装包:
libxml2-devel  
openssl-devel  
curl-devel 
libjpeg-turbo-devel 
libpng-devel
freetype-devel  
gmp-devel    
net-snmp-devel
libmcrypt-2.5.8-9.el6.x86_64.rpm		  ##源端下载
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm    ##源端下载
3、配置php
[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/etc/
[root@server1 etc]# ls
pear.conf  php-fpm.conf.default  php.ini
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini
[root@server1 etc]# vim php-fpm.conf
 25 pid = run/php-fpm.pid                ##打开pid
 [root@server1 etc]# vim php.ini 
 936 date.timezone =Asia/Shanghai        ##设定时区
4、设置php启动脚本
[root@server1 php-5.6.35]# cd sapi/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     ##添加可执行权限
5、添加nginx用户,启动服务
[root@server1 ~]# useradd -u 800 -M -d /usr/local/lnmp/nginx nginx
[root@server1 ~]# /etc/init.d/php-fpm start

示图:php端口9000
在这里插入图片描述

三、Nginx 源码编译

1、下载、解压nginx及其sticky模块
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz 
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz 
2、编译、安装
[root@server1 ~]# cd nginx-1.10.1
[root@server1 nginx-1.10.1]# vim src/core/nginx.h   ##隐藏版本号
14 #define NGINX_VER          "nginx/"      
[root@server1 nginx-1.10.1]# vim auto/cc/gcc      ##注释debug
178 # debug
179 #CFLAGS="$CFLAGS -g"         
 [root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
 [root@server1 nginx-1.10.1]# make && make install 
解决依赖性
[root@server1 nginx-1.10.1]# yum install -y pcre-devel
3、配置nginx
[root@server1 nginx]# vim /usr/local/lnmp/nginx/conf/nginx.conf
 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@server1 ~]# ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/
[root@server1 ~]# nginx -t          ##检测配置文件
[root@server1 ~]# nginx             ##开启nginx
nginx的测试页
[root@server1 ~]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim index.php
<?php
phpinfo()
?>

测试:
在这里插入图片描述
在这里插入图片描述

[root@server1 html]# vim /usr/local/lnmp/nginx/conf/nginx.conf
 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;  ##设定优先访问index.php
 46         }
[root@server1 html]# nginx -s reload

测试:访问172.25.51.1,自动优先访问index.php页面
在这里插入图片描述

四、搭建论坛,LNMP架构

1、在 /usr/local/lnmp/nginx/html 目录下载Discuz_X3.2_SC_UTF8.zip并解压
[root@server1 html]# pwd
/usr/local/lnmp/nginx/html
[root@server1 html]# unzip Discuz_X3.2_SC_UTF8.zip 

2、访问网页、搭建论坛
[root@server1 html]# mv upload/ bbs        ##解压后的upload重命名为bbs
<1>访问172.25.51.1/bbs,开始搭建论坛

在这里插入图片描述

<2>开始安装,系统排错

在这里插入图片描述
错误一:bbs下权限不够

[root@server1 bbs]# chmod 777 uc_server/ config/ data/ uc_client/ -R     ##设定权限777

刷新页面
在这里插入图片描述
在这里插入图片描述
注意:数据库密码必须同前一致
在这里插入图片描述
错误二:目录不存在

[root@server1 bbs]# vim /usr/local/lnmp/php/etc/php.ini
1013 pdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sock
1162 mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
1221 mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
[root@server1 bbs]# /etc/init.d/php-fpm reload
[root@server1 bbs]# chmod 755 /usr/local/lnmp/mysql/data/

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

<3>论坛搭建成功

在这里插入图片描述

<4>登陆论坛,用户admin,密码admin

在这里插入图片描述


注意:避免重复安装,删除/usr/local/lnmp/nginx/html/bbs/install/index.php
[root@server1 bbs]# rm -fr /usr/local/lnmp/nginx/html/bbs/install/index.php

五、Php -memcache缓存

1、下载、解压memcached
[root@server1 ~]# tar zxf memcache-2.2.5.tgz 
2、添加环境变量
[root@server1 ~]# vim ~/.bash_profile 
[root@server1 ~]# source ~/.bash_profile 
[root@server1 ~]# cd memcache-2.2.5
[root@server1 memcache-2.2.5]# phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

在这里插入图片描述

3、编译、安装
[root@server1 memcache-2.2.5]# ./configure 
[root@server1 memcache-2.2.5]# make && make install
4、添加memcache到php扩展
[root@server1 ~]# vim /usr/local/lnmp/php/etc/php.ini 
 874 extension=memcache.so
[root@server1 ~]# /etc/init.d/php-fpm reload

示图:查看php扩展
在这里插入图片描述

5、安装memcached并查看其端口
[root@server1 memcache-2.2.5]# yum install -y memcached
[root@server1 memcache-2.2.5]# /etc/init.d/memcached start

示图:查看memcached端口
在这里插入图片描述

6、设置memcache.php
[root@server1 memcache-2.2.5]# cp memcache.php /usr/local/lnmp/nginx/html/
[root@server1 memcache-2.2.5]# cd /usr/local/lnmp/nginx/html/
[root@server1 html]# vim memcache.php    ##用户名:memcache,密码:redhat

在这里插入图片描述

7、访问172.25.51.1/memcache.php

(用户名:memcache,密码:redhat)

在这里插入图片描述
在这里插入图片描述

8、物理机高并发测试
[root@server1 memcache-2.2.5]# cp example.php /usr/local/lnmp/nginx/html/

在这里插入图片描述

[root@foundation51 ~]# ab -c 10 -n 1000 http://172.25.51.1/example.php
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.25.51.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/
Server Hostname:        172.25.51.1
Server Port:            80

Document Path:          /example.php
Document Length:        123 bytes

Concurrency Level:      10
Time taken for tests:   0.890 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      280000 bytes
HTML transferred:       123000 bytes
Requests per second:    1123.04 [#/sec] (mean)
Time per request:       8.904 [ms] (mean)
Time per request:       0.890 [ms] (mean, across all concurrent requests)
Transfer rate:          307.08 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     2    9   0.9      9      14
Waiting:        1    9   0.9      9      14
Total:          2    9   0.9      9      14

Percentage of the requests served within a certain time (ms)
  50%      9
  66%      9
  75%      9
  80%      9
  90%     10
  95%     10
  98%     11
  99%     11
 100%     14 (longest request)
[root@foundation51 ~]# ab -c 10 -n 1000 http://172.25.51.1/memcache.php
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.25.51.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/
Server Hostname:        172.25.51.1
Server Port:            80

Document Path:          /memcache.php
Document Length:        101 bytes

Concurrency Level:      10
Time taken for tests:   1.860 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      316000 bytes
HTML transferred:       101000 bytes
Requests per second:    537.56 [#/sec] (mean)
Time per request:       18.603 [ms] (mean)
Time per request:       1.860 [ms] (mean, across all concurrent requests)
Transfer rate:          165.89 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       2
Processing:     2   18   3.1     19      29
Waiting:        2   18   3.1     18      29
Total:          2   19   3.1     19      29

Percentage of the requests served within a certain time (ms)
  50%     19
  66%     20
  75%     20
  80%     21
  90%     22
  95%     23
  98%     25
  99%     26
 100%     29 (longest request)

在这里插入图片描述

六、Nginx 虚拟主机和 https 加密

1、配置虚拟主机
[root@server1 ~]# vim /usr/local/lnmp/nginx/conf/nginx.conf
117  server {
118          listen 80;
119          server_name www.test.org;
120 
121          location / {
122                  root /www1;
123                  index index.html;
124          }
125  }
126 
127  server {
128          listen 80;
129          server_name www.hello.org;
130 
131          location / {
132                  root /www2;
133                  index index.html;
134          }
135  }
2、配置默认发布目录,默认发布文件
[root@server1 ~]# mkdir /www1 
[root@server1 ~]# mkdir /www2
[root@server1 ~]# vim /www1/index.html
www.test.org
[root@server1 ~]# vim /www2/index.html
www.hello.org
3、调试,重新加载 nginx
[root@server1 ~]# 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@server1 ~]# nginx -s reload
4、物理主机测试
[root@foundation51 ~]# vim /etc/hosts
172.25.51.1 server1 www.hello.org www.test.org

在这里插入图片描述

5、配置 https 加密
[root@server1 ~]# vim /usr/local/lnmp/nginx/conf/nginx.conf
 98     server {
 99         listen       443 ssl;
100         server_name  www.test.org;
101 
102         ssl_certificate      cert.pem;
103         ssl_certificate_key  cert.pem;
104 
105         ssl_session_cache    shared:SSL:1m;
106         ssl_session_timeout  5m;
107 
108         ssl_ciphers  HIGH:!aNULL:!MD5;
109         ssl_prefer_server_ciphers  on;
110 
111         location / {
112             root   /www1;
113             index  index.html index.htm;
114         }
115     }

生成cert.pem (key)文件
[root@server1 ~]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
[root@server1 certs]# mv cert.pem /usr/local/lnmp/nginx/conf/
[root@server1 certs]# nginx -t
[root@server1 certs]# nginx -s reload

在这里插入图片描述在这里插入图片描述

6、物理主机访问https://www.test.org

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值