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

一、LNMP简介

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

二、Mysql的源码安装

[1]. 解压安装包,解决依赖性
[root@server1 ~]# ls
mysql-boost-5.7.11.tar.gz  cmake-2.8.12.2-4.el6.x86_64.rpm
[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  -y 
##cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等
[root@server1 ~]# cd  mysql-5.7.11/
[root@server1 mysql-5.7.11]# yum install -y gcc gcc-c++ make ncurses-devel bison openssl-devel zlib-devel 
[2]. 源码编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql   \指定mysql的安装位置
          -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data   \数据库中数据存放的目录
          -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock  \链接数据库的SOCKET文件
          -DWITH_MYISAM_STORAGE_ENGINE=1   \ 安装MYISAM存储引擎
          -DENABLED_LOCAL_INFILE=1   \ 允许从本地导入数据
          -DWITH_PARTITION_STORAGE_ENGINE=1   \ 安装分区存储引擎
          -DWITH_SSL=yes   \ 支持SSL加密
          -DDEFAULT_CHARSET=utf8   \  使用UTF-8字符编码
          -DDEFAULT_COLLATION=utf8_general_ci   \  校验字符
          -DEXTRA_CHARSETS=all   \ 安装所有扩展字符集
          -DMYSQL_TCP_PORT=3306   \ MYSQL监听端口
[root@server1 mysql-5.7.11]# make
[root@server1 mysql-5.7.11]# make install

如果出错,需要重新编译时,需要根据提示删除缓存信息。

[root@server1 mysql-5.7.11]# rm -f CMakeCache.txt
[3]. 配置 MYSQL

<1 > 将编译完成的默认配置文件放在/etc下

[root@server1 mysql-5.7.11]# cd  /usr/local/lnmp/mysql/support-files/
[root@server1 support-files]# cp  my-default.cnf   /etc/my.cnf     ##cp到系统默认配置文件目录/etc

<2> 配置mysql服务

[root@server1 support-files]# vim  /etc/my.cnf  
# These are commonly set, remove the # and set as required.
basedir = /usr/local/lnmp/mysql          # mysql的安装目录
datadir = /usr/local/lnmp/mysql/data     # mysql数据存放位置
port = 3306                              # mysql服务对外端口
# server_id = .....
socket = /usr/local/lnmp/mysql/data/mysql.sock  # mysql与外界联系的套接字文件位置

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第1张图片
<3> mysql启动脚本复制到系统启动服务的默认目录中

[root@server1 support-files]#  cp mysql.server /etc/init.d/mysqld

<4> 对mysql服务进行限制(利用mysql用户),将mysql服务的工作空间局限在mysql用户的家目录中

 groupadd -g 27 mysql   ##建立一个mysql组,组id为27
  useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql
  # 指定mysql用户的家目录为/sbin/nologin   为了系统安全,MYSQL默认使用mysql用户来运行相关程序。

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第2张图片
<5> 将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令

vim /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin   ##把mysql的对应的命令脚本添加到环境变量中
source .bash_profile  
## 也可以使用软链接的方式添加环境变量 (ln -s /usr/local/lnmp/mysql/bin/* /usr/local/sbin/)

<6> 启动mysql

[root@server1 ~]# /etc/init.d/mysqld start
[root@server1 ~]# mysql  -p 

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第3张图片

三、PHP源码编译

[1]. 解压PHP源码包
[root@server1 ~]# tar jxf php-5.6.35.tar.bz2
[2]. 解决依赖
yum install libxml2-devel openssl-devel curl-devel libjpeg-turbo-devel libpng-devel freetype-devel gmp-devel net-snmp-devel bison libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm  -y
[3]. 预编译环境
./configure --prefix=/usr/local/lnmp/php   # php安装的位置
--with-config-file-path=/usr/local/lnmp/php/etc    # php配置文件所在的位置
--with-mysql=mysqlnd 
--enable-mysqlnd 
--with-mysqli=mysqlnd 
--with-pdo-mysql=mysqlnd    # 支持与mysql数据库之间建立联系
--with-openssl     # 支持openssl加密
--with-snmp 
--with-gd 
--with-zlib 
--with-curl 
--with-libxml-dir      #支持 libxml 函数
--with-png-dir --with-jpeg-dir --with-freetype-dir   # php处理图片的格式
 --with-pear -
--with-gmp 
--enable-inline-optimization 
--enable-soap 
--enable-ftp 
--enable-sockets 
--enable-mbstring 
--enable-fpm              # 开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx     # 对PHP服务的限制通过nginx用户来实现
--with-fpm-group=nginx    # PHP以nginx用户组身份运行
--with-mcrypt             # 提供了对多种块算法的支持 主要用来实现加密等算法
--with-mhash              # 加密算法

[root@server1 php-5.6.35]# make && make install
[4].配置php
[root@server1 php-5.6.35]# cd  /usr/local/lnmp/php/etc
[root@server1 etc]# cp  php-fpm.conf.default   php-fpm.conf
[root@server1 etc]# vim  php-fpm.conf

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第4张图片
LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第5张图片

[root@server1 php-5.6.35]# cp     php.ini-production   /usr/local/lnmp/php/etc/php.ini
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx
[5].将php启动的脚本复制到系统启动脚本的默认目录下,并启动php
cd php-5.6.35/sapi/fpm/    
cp init.d.php-fpm /etc/init.d/php-fpm    # init.d.php-fpm是编译完成的启动脚本
chmod +x /etc/init.d/php-fpm             #给脚本加上可执行权限
/etc/init.d/php-fpm start                #打开php服务
netstat -antlp                           # 查看php服务的监听端口

四、Nginx源码编译

[1]. 解压nginx源码包
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz   
[root@server1 ~]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip    # 带有sticky模块的nginx包
[2]. 配置nginx设置
[root@server1 ~]# cd nginx-1.10.1/src/core  
vim nginx.h      ##去掉nginx的版本号
[root@server1 ~]# cd nginx-1.10.1/auto/cc   
vim gcc           ##注释debug,为了安全考虑

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

[3]. 预编译环境
[root@server1  nginx-1.10.1 ]# ./configure --prefix=/usr/local/lnmp/nginx    # nginx的安装路径
--with-http_ssl_module                        # 支持https
--with-http_stub_status_module 
--with-threads    # 支持线程并发
--user=nginx 
--group=nginx     # 运行在nginx用户和nginx组
--with-file-aio
--add-module
[4]. 修改最大连接数
[root@server1 nginx-1.10.1]# cd   /usr/local/lnmp/nginx/conf/
[root@server1 conf]# vim  nginx.conf
events {
    worker_connections  65535;
}
修改操作系统的最大文件数
[root@server1 conf]# vim  /etc/security/limits.conf 
nginx   -   nofile      65536
[5]. 配置nginx服务
 [root@server1 ~  ]# vim /usr/local/lnmp/nginx/conf/nginx.conf
   第一行加上运行用户,第13行加上最大文件数
   第65---71行,去掉注释   # 将nginx与php结合起来

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第6张图片

[6].将编译生成的nginx二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命
vim /root/.bash_profile
  PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin
source /root/.bash_profile   # 重新加载/root/.bash_profile文件
[7].检测nginx服务是否可用并打开nginx服务
nginx -t   # 检测配置文件是否有错
nginx      # 打开nginx服务
[8].测试nginx和php
cd /usr/local/lnmp/nginx/html/
  vim index.php
   
在浏览器处输入nginx和php所在主机ip/地址:172.25.254.1/index.php

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第7张图片

如果向直接访问php页面则:加入index.php
[root@server1 conf]# vim  nginx.conf
45             index   index.php index.html index.htm;
[root@server1 conf]# nginx -s  reload

php和nginx结合成功!编译到此结束…

五、基于lnmp的论坛搭建

对于会出现的问题先解决了…

[1]. 解压论坛的包
[root@server1 ~]# yum  install unzip -y
# 添加指定解压位置
[root@server1 ~]# unzip  Discuz_X3.2_SC_UTF8.zip  -d /usr/local/lnmp/nginx/html/
[2]. 给一个满权限
[root@server1 ~]# cd   /usr/local/lnmp/nginx/html/
[root@server1 html]# mv upload/  bbs     ##改名为bbs
[root@server1 html]# cd  bbs/
[root@server1 bbs]# chmod 777 config/  data/  uc_server/ uc_client/  -R
[3]. 指定socket的路径
[root@server1 ~]# cd  /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini
# 加入scoket路径 /usr/local/lnmp/mysql/data/mysql.sock 【总共三处需要填写】
[root@server1 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm  done
[4]. 修改访问权限:
[root@server1 mysql]# pwd
/usr/local/lnmp/mysql
[root@server1 mysql]# chmod 755  data/
[5]. 测试:在浏览器访问:172.25.7.1/bbs

LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第8张图片LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第9张图片
LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第10张图片
LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第11张图片
安装完后进入管理员界面…
LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建_第12张图片

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