rhel6.5-lnmp架构

一.lnmp架构

lnmp架构:Linux+Nginx+MySQL+PHP的网站服务器架构

Linux:计算机操作系统

Nginx:是一个高性能的HTTP和反向代理服务器,Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少

Mysql:一个小型关系型数据库管理系统

PHP:是一种在服务器端执行的嵌入HTML文档的脚本语言

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

二.mysql的安装部署

1.mysql的安装(采用源码包(mysql-boost-5.7.17.tar.gz)安装,没有兼容性的限制)

tar mysql-boost-5.7.17.tar.gz      ##解包

(1)编译cmake

yum install cmake-2.8.12.2-4.el6.x86_64.rpm

rhel6.5-lnmp架构

CMake是一个跨平台的编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是CMake的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用

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 存储引擎
-DDEFAULT_CHARSET=utf8                                                        #使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci                                  #校验字符
-DEXTRA_CHARSETS=all                                                            #安装所有扩展字符集

rhel6.5-lnmp架构

编译过程会有报错(安装一些依赖包):

yum install ncurses-devel -y  

rhel6.5-lnmp架构

yum install bison -y

rhel6.5-lnmp架构

yum install -y gcc gcc-c++            ##解释器

报错重新编译时,需要清除旧的对象文件和缓存信息
rm -f CmakeCache.txt

(2)编译安装make  && make install(磁盘空间要足够,不然会报错)

2.mysql的配置

cp /etc/my.cnf /etc/my.cnf.backup   ##备份原来的mysql的my.cnf

(1)cp /usr/local/lamp/mysql/support-files/my-default.cnf /etc/my.cnf       ##为了方便编辑把配置文件复制到/etc下

rhel6.5-lnmp架构

(2)vim /etc/my.cnf          ##mysql的配置文件

basedir = /usr/local/lamp/mysql                 ##mysql的主目录

datadir = /usr/local/lamp/mysql/data          ##数据目录

socket = /usr/local/lamp/mysql/data/mysql.sock        ##mysql连接端口的路径

rhel6.5-lnmp架构

(3)groupadd -g 27 mysql         

useradd -u 27 -g 27 mysql       ##建立mysql的用户以及用户组

id mysql

rhel6.5-lnmp架构

cd /usr/local/lamp/mysql/      

(4)chown mysql.mysql . -R              ##修改mysql的目录为仅mysql可读写

rhel6.5-lnmp架构

(5)vim ~/.bash_profile                      ##系统的环境变量的配置文件,把mysql的命令的路径添加进去

rhel6.5-lnmp架构

source ~/.bash_profile        ##更新配置

(6)初始化mysql

mysqld --user=mysql --initialize   ###初始化之后会提供初始密码以及生成mysql的data目录(密码为:wC#gTjV/g3:K)

rhel6.5-lnmp架构

(7)chown  root . -R

chown mysql data/ -R           ###除了mysql的data目录外,别的目录的为了数据的安全,用户都设定为超级用户

rhel6.5-lnmp架构

(8)把mysql的脚本复制到/etc/init.d/    ##方便操作

rhel6.5-lnmp架构

/etc/init.d/mysqld start      ##开启mysql端口3306

(9)修改密码

mysql_secure_installation      ##修改初始密码为自己的设定的密码

enter password for user root:wC#gTjV/g3:K   ##这里填写之前初始化生成的随机密码

rhel6.5-lnmp架构

(10)登陆验证(成功登陆mysql)

rhel6.5-lnmp架构

三.php的安装部署

1.php的安装(同样使用源码包安装(php-5.6.35.tar.bz2))

tar jxf php-5.6.35.tar.bz2  ##解包

(1)编译(--with表示添加的模块,要的模块--help查看之后直接添加即可)

rhel6.5-lnmp架构

报错的解决(主要就是依赖包的安装):

rhel6.5-lnmp架构

yum install  libxml2-devel -y

rhel6.5-lnmp架构

yum install  libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm -y

rhel6.5-lnmp架构

(2)编译安装

make && make install  ##编译,安装

rhel6.5-lnmp架构

2.php的配置

(1)创建nginx的用户

useradd nginx    

id nginx

rhel6.5-lnmp架构

(2)在php-fpm的配置文件中打开pid = run/php-fpm.pid

vim /usr/local/lamp/php/etc/php-fpm.conf.default

:pid = run/php-fpm.pid   ##25行打开pid

rhel6.5-lnmp架构

(3)把php-fpm和php的配置文件复制到方便操作的路径

cp php-fpm.conf.default php-fpm.conf

cp php-5.6.35/php.ini-production /usr/local/lamp/php/etc/php.ini

rhel6.5-lnmp架构

(4)vim php.ini

date.timezone =Asia/Shanghai           ##修改时区

rhel6.5-lnmp架构

pdo_mysql.default_socket=/usr/local/lamp/mysql/data/mysql.sock   ##php连接mysql的通信接口

rhel6.5-lnmp架构

mysql.default_socket =/usr/local/lamp/mysql/data/mysql.sock

rhel6.5-lnmp架构

mysqli.default_socket =/usr/local/lamp/mysql/data/mysql.sock

rhel6.5-lnmp架构

(5)复制php-fpm的启动脚本到/etc/init.d/

php-fpm:PHP的解释器是php-cgi,php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理,所以就出现了一些能够调度php-cgi进程的程序,比如php-fpm是进程管理器,PHP-FPM是一个实现了Fastcgi的程序,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求,这就是fastcgi的对进程的管理。

rhel6.5-lnmp架构

/etc/init.d/php-fpm start        ##开启php-fpm端口9000

(6)查看端口

rhel6.5-lnmp架构

四.nginx的安装配置

1.nginx的安装(源码包安装)

tar zxf nginx-1.14.0.tar.gz  ##解包

(1)保护nginx的安全

vim src/core/nginx.h     ##删除版本号,当外界访问时看不见版本号,增加了安全性

vim auto/cc/gcc

#CFLAGS="$CFLAGS -g"     ##注释debug,这样产生的nginx的程序只有几百k

rhel6.5-lnmp架构

rhel6.5-lnmp架构

(2)编译

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx

rhel6.5-lnmp架构

报错解决:

yum install pcre-devel -y

rhel6.5-lnmp架构

(3)编译安装

make && make install

rhel6.5-lnmp架构

2.nginx的配置

(1)vim /usr/local/lamp/nginx/conf/nginx.conf          ##nginx的配置文件

rhel6.5-lnmp架构

rhel6.5-lnmp架构

以php结尾的访问,让fastcgi去管理这些访问进程,php-fpm的端口是9000,

location / {
            root   html;
            index  index.php index.html index.htm;         ##php的默认发布目录是index.php

        }

(2)重启nginx

nginx           ##/usr/local/lamp/nginx/sbin/nginx,nginx的脚本路径

nginx -t       ##检验配置文件是否合法

rhel6.5-lnmp架构

ln -s /usr/local/lamp/nginx/sbin/nginx /usr/local/sbin/       ##方便操作创建nginx的脚本链接到/sbin下

rhel6.5-lnmp架构

nginx -s reload        ##更新配置文件

rhel6.5-lnmp架构

3.在nginx上验证php是否配置成功

http://172.25.78.2      ##物理机访问成功

rhel6.5-lnmp架构

五.论坛包的配置

1.解压Discuz_X3.2_SC_UTF8.zip到nginx的默认发布目录

unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lamp/nginx/html/

mv upload/ bbs          ##把论坛的upload目录更名为bbs

http://172.25.15.1/bbs/install/           ##网络访问安装界面进行安装,点击“我同意”

2.校验目录权限

(1)权限不够

rhel6.5-lnmp架构

(2)在/usr/local/lamp/nginx/html/bbs目录下设定目录的权限

rhel6.5-lnmp架构

rhel6.5-lnmp架构

(3)填写数据库的信息以及管理员的密码

rhel6.5-lnmp架构

(4)连接mysql数据库(权限不够)

rhel6.5-lnmp架构

nginx不属于mysql用户组,也不是mysql用户,权限肯定不够,chmod 755 data/

rhel6.5-lnmp架构

数据库成功安装

rhel6.5-lnmp架构

六.测试论坛

1.成功登陆

rhel6.5-lnmp架构

记得删除安装的界面install/index.php,避免二次安装

rhel6.5-lnmp架构

rhel6.5-lnmp架构

当再次安装时,已经找不到安装界面

rhel6.5-lnmp架构

2.论坛的数据也成功接入到mysql数据库

rhel6.5-lnmp架构