lnmp架构

mysql源码编译

1.下载cmake-2.8.12.2-4.el6.x86_64.rpm 和mysql-boost-5.7.17.tar.gz
2.安装源码编译工具cmake(支持编译C++语言)
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y ##用yum安装可以解决软件依赖性

3.tar zxf mysql-boost-5.7.17.tar.gz    ###解压源码包
4.cd mysql-5.7.17/

5.执行:

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 \
##安装所有扩展字符集
-DWITH_BOOST=boost/boost_1_59_0/

6.直接执行完上面命令后,会报错,要解决一系列依赖性

用yum安装以下依赖性:
yum install gcc gcc-c++ ncurses-devel -y
安装完这些依赖性后,也会执行成功,但是会有warning
要想消除warning,在下载一个依赖性,就可以解决
yum install bison -y

7.删除cmake缓存文件,因为编译时会优先读取cmake缓存文件,要将缓存文件删了,重新编译
8.再次执行编译的命令,这次会执行成功

make && make install

配置mysql

cd /usr/local/lnmp/mysql/support-files/
cp my-default.cnf /etc/my.cnf   # 将配置文件拷贝到/etc(系统默认配置文件目录)

这里写图片描述

vim /etc/my.cnf     ##编辑mysql配置文件
     18 basedir = /usr/local/lnmp/mysql    ##安装目录
     19 datadir = /usr/local/lnmp/mysql/data  ##mysql数据存放目录
     20 port = 3306    ##端口
     22 socket = /usr/local/lnmp/mysql/data/mysql.sock

这里写图片描述

cp mysql.server /etc/init.d/mysqld
####将编译完成的mysql启动脚本复制到系统启动服务的默认目录中
groupadd -g 27 mysql   ###建立mysq组
useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql
###指定目录,建立mysql用户,
cd /usr/local/lnmp/mysql/
chown mysql.mysql . -R   ##更改此目录中的所有文件的用户和组

这里写图片描述

将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令
cd
vim .bash_profile
     10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source .bash_profile   ###加载文件

这里写图片描述

cd /usr/local/lnmp/mysql/
mysql --initialize --user=mysql   ###初始化
执行完这条命林后,会弹出很多行数据,复制最后一条冒号后生成的密码

这里写图片描述

此时,mysqld服务已经可以开启关闭了
cd /usr/local/lnmp/mysql/
chown root.root . -R
chown mysql data/ -R   
###将此目录的所有文件用户和家目录都改成超户
,除了data改成mysql因为mysql服务将要往这个目录中写数据,保证其有执行权限
打开mysqld  /etc/init.d/mysqld start

这里写图片描述

mysql_secure_installation
(1)在第一次交互请求后面输入刚刚初始化时复制的密码
(2)然后输入两次新密码
(3)接下来的交互式请求可以直接回车,这条交互式请求是询问你是否要检查密码强度,
如果输入y,就要重新修改密码,密码长度必须超过8位,必须有大小写字母,
所以我们直接回车
(4)接下来会询问是否要修改root密码,直接回车,因为上面已经设置过了
(5)接下来全部输入y回车就行
现在就可以直接进入mysql了
mysql -p
输入设置的密码进入就行

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

php源码安装

1.下载php源码包进行解压

tar jxf php-5.6.35.tar.bz2

cd php-5.6.35
ls
./configure --help | grep mysql   ###过滤出与mysql相关的模块

这里写图片描述

./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 
 --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  # 开启fpm模式(nginx等服务用的)
 --with-fpm-user=nginx  # 对PHP服务的限制通过nginx用户来实现
 --with-fpm-group=nginx  # PHP以nginx用户组身份运行
 --with-mcrypt   # 提供了对多种块算法的支持 主要用来实现加密等算法
 --with-mhash    # 加密算法

解决依赖性

yum install libxml2-devel -y
yum install openssl-devel -y
yum install curl-devel -y
yum install gmp-devel -y
yum install net-snmp-devel -y
###注意这几个包系统里面没有,你需要从网上下载
yum install -y gd-devel-2.0.35-11.el6.x86_64.rpm 
yum install libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 
libmcrypt-2.5.8-9.el6.x86_64.rpm -y
rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm 

编译和安装

make && make install
至此php安装完成
拷贝文件配置文件
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd
cd php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
修改之前拷贝的配置文件
vim /usr/local/lnmp/php/etc/php-fpm.conf
       将第25行注释去掉(pid)

这里写图片描述

cd /usr/local/lnmp/php/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

这里写图片描述

id nginx
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx  ###建立nginx用户

这里写图片描述

cd
cd php-5.6.35
cd sapi/fpm/
cp init.d.php-fpm /etc/init.d/php-fpm    ###制作php启动脚本
chmod  +x /etc/init.d/php-fpm      ###给启动脚本添加执行权限
/etc/init.d/php-fpm start
ps ax    ###查看php进程是否开启
netstat -antlp     ###查看端口状态

这里写图片描述

(三)nginx源码安装

1.解压源码包
tar zxf nginx-1.10.1.tar.gz
2.去掉版本号

cd nginx-1.10.1
cd src/core/
vim nginx.h 
###去掉版本号

这里写图片描述
3.注释掉179行

cd ..
cd auto/cc/
vim gcc 
##/debug,找到那行进行注释

这里写图片描述
4.进行预编译

cd nginx-1.10.1
./configure --help    ###查看要添加的模块帮助
./configure --prefix=/usr/local/lnmp/nginx 
--with-http_ssl_module 
--with-http_stub_status_module 
--user=nginx 
--group=nginx 
--with-threads 
--with-file-aio

5.解决依赖性安装

yum install -y pcre-devel   ###解决依赖性安装
make && make install

6.配置nginx服务
cd /usr/local/lnmp/nginx/conf
vim nginx.conf

       12 events {
       13     worker_connections  65535;
       14 }
################################################################
       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         }

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

vim /etc/security/limits.conf
nginx     -      nofile   65536

这里写图片描述
.将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令

vim  /root/.bash_profile     ###制作nginx启动脚本 
       10 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin
source .bash_profile  ###刷新一下

这里写图片描述

cd /usr/local/lnmp/nginx/sbin/
nginx -t  ##检测语法
nginx     ###打开nginx
cd  /usr/local/lnmp/nginx/html/  ###默认发布目录 
vim index.php
       <?php
       phpinfo()
       ?>

这里写图片描述
在网站分别访问172.25.70.1 172.25.3.5/index.php
这里写图片描述
这里写图片描述

为了方便测试再次编辑nginx.conf
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
nginx -s reload

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

论坛搭建

yum install unzip -y
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/  ###解压到指定目录
cd /usr/local/lnmp/nginx/html/
mv upload bbs  ###改目录名

这里写图片描述

cd bbs/
chmod 777 config/ data/ uc_server/ uc_client/ -R   ###修改里面目录权限

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

此时在/user/local/lnmp/php/etc/php.ini我们需要指定php连接mysql的通信接口,三个位置
cd /usr/local/lnmp/php/etc/
ls
vim php.ini
  ... 
       1005 [Pdo_mysql]
       1006 ; If mysqlnd is used: Number of cache slots for the internal result set cache
       1007 ; http://php.net/pdo_mysql.cache_size
       1008 pdo_mysql.cache_size = 2000
       1009 
       1010 ; Default socket name for local MySQL connects.  If empty, uses the built-in
       1011 ; MySQL defaults.
       1012 ; http://php.net/pdo_mysql.default-socket
       1013 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
       ...
       1159 ; Default socket name for local MySQL connects.  If empty, uses the built-in
       1160 ; MySQL defaults.
       1161 ; http://php.net/mysql.default-socket
       1162 mysql.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
       ...
       1218 ; Default socket name for local MySQL connects.  If empty, uses the built-in
       1219 ; MySQL defaults.
       1220 ; http://php.net/mysqli.default-socket
       1221 mysqli.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
       ...

在此安装时还会报错,连接数据库的权限不够
这里写图片描述

/etc/init.d/php-fpm reload   ###重新加载配置文件
cd /usr/local/
ll   ###查看里面目录权限
cd lnmp/
ll   ###查看里面目录权限
cd mysql/
ll    ###查看里面目录权限
chmod 755 data/   ###将data目录权限修改
/etc/init.d/mysqld start

此时论坛成功安装
这里写图片描述

cd /usr/local/lnmp/nginx/html/bbs/install/
ls
rm -fr index.php   ##删掉此文件

登陆查看
这里写图片描述
进入管理员管理中心,提示删除/install/目录下的php文件,按提示执行,避免二次安装
这里写图片描述

原文链接:加载失败,请重新获取