环境介绍:
selinux and iptables is disable
- 系统版本:rhel6.5
- ip : 172.25.14.1
client –> nginx –> php-fpm(应用,实现fastcgI程序) –>php –> mysql
注:关于php-fpm更进一步的了解,可以参考如下文档:
一、lnmp架构
lnmp架构:Linux+Nginx+MySQL+PHP的网站服务器架构
Linux:计算机操作系统
Nginx:是一个高性能的HTTP和反向代理服务器,Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少
Mysql:一个小型关系型数据库管理系统
PHP:是一种在服务器端执行的嵌入HTML文档的脚本语言
这四种免费的开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
二、mysql编译
1.获得 解压 mysql-boost-5.7.11.tar.gz
tar zxf mysql-boost-5.7.11.tar.gz
2.进入解压后的目录中,开始源码编译三部曲
3.安装工具包和依赖包
yum install -y gcc gcc-c++ ncurses-devel bison openssl-devel zlib-devel
4.获取安装cmake工具,系统带的版本太低,cmake-2.8.12.2-4.el6.x86_64.rpm
yum install cmake-2.8.12.2-4.el6.x86_64.rpm
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 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=./boost/boost_1_59_0/
参数解释:
#安装目录
-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_ARCHIVE_STORAGE_ENGINE=1 \
#安装 archive 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装 blackhole 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \
#安装数据库分区
-DENABLED_LOCAL_INFILE=1 \
#允许从本地导入数据
-DWITH_READLINE=1 \
#快捷键功能
-DWITH_SSL=yes \
#支持 SSL
-DDEFAULT_CHARSET=utf8 \
#使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci \
#校验字符
-DEXTRA_CHARSETS=all \
#安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 \
#MySQL 监听端口
6.编译完成后安装,时间较长,耐心等待
ps:如果是虚拟机的话,可以增加内存和磁盘容量,尤其是磁盘容量,如果不够后期会报错。这里,小编给的内存4G,磁盘容量20G呢,还有硬盘为512固态硬盘,速度可能会快些。小编本次编译用时:17分钟左右
make && make install
编译完成时如下所示
7.保留原配置文件
mv /etc/my.cnf /etc/my.cnf.bak
8.把启动脚本放到正常位置/etc/init.d/
cd /usr/local/lnmp/mysql/support-files
cp mysql.server /etc/init.d/mysqld -p
9.新建mysql用户
useradd mysql
10.设置环境变量
[root@server1 ~]# vim ~/.bash_profile
--PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 ~]# source ~/.bash_profile
11.初始化
mysqld --initialize --user=mysql --basedir=/usr/local/lnmp/mysql/ --datadir=/usr/local/lnmp/mysql/data
(初始化密码:qB-3qK4+=Dh-),这个要记录下来,因为后面改密码的时候需要用到
12.权限问题
除了date其他所有人应该是root
chown root.mysql /usr/local/lnmp/mysql/* -R
chown mysql.mysql /usr/local/lnmp/mysql/data -R
13.重启数据库服务,登陆,修改密码
/etc/init.d/mysqld start
mysql -p密码 ##登陆
alter user root@localhost identified by 'redhat';
万一把密码给忘记了:
/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables &
mysql
use mysql;
select * from user\G;
update user set authentication_string=password('westos') where user='root';
二.php-fmp
1.获得解压php-5.6.20.tar.bz2
tar jxf php-5.6.20.tar.bz2
2.进入解压后的目录
[root@server1 ~]# cd php-5.6.20
3.解决依赖问题
这些仓库可以提供
yum install libxml2-devel-2.7.6-14.el6.x86_64
yum install openssl-devel-1.0.1e-15.el6.x86_64
yum install libcurl-devel.x86_64
yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64
yum install libpng-devel-1.2.49-1.el6_2.x86_64
yum install freetype-devel-2.3.11-14.el6_3.1.x86_64
yum install gmp-devel-4.3.1-7.el6_2.2.x86_64
yum install net-snmp-devel.x86_64
这几个第三方下载:这里已经下好了再家目录下
libmcrypt-2.5.8-9.el6.x86_64.rpm
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
re2c-0.13.5-1.el6.x86_64.rpm
4.解决依赖问题安装
安装3中提到的所有软件
5编译
[root@server1 php-5.6.20]# ./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
编译成功如下显示:
6.安装
[root@server1 php-5.6.20]# make && make install
7.文件的配置:刚才编译使我们指定路径/usr/local/lnmp/,来看看有没有东西
有新装的php,应该没问题了,我们继续往下走
#7.1新建个nginx用户
useradd nginx
#7.2进入到/usr/local/lnmp/php/etc
复制php-fpm.conf.default 为php-fpm.conf
复制刚才解压的目录/root/php-5.6.20/下的php.ini-production(开发配置文件)到当前目录(/usr/local/lnmp/php/etc)下的php.ini
cd /usr/local/lnmp/php/etc
cp -p php-fpm.conf.default php-fpm.conf
cp /root/php-5.6.20/php.ini-production /usr/local/lnmp/php/etc/php.ini
#7.3修改时区
vim php.ini (/usr/local/lnmp/php/etc)
------->>date.timezone =Asia/Shanghai
#7.4配置启动脚本
复制刚解压的目录下的sapi/fpm/init.d.php-fpm到 /etc/init.d/php-fpm,给x权限(看清楚,别复制错了)
cp -p /root/php-5.6.20/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
/etc/init.d/php-fpm start
三.nginx安装
1.获得解压nginx-1.10.1.tar.gz和nginx-sticky-module-ng.tar.gz(模块)
2.解压两个包
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz
3.nginx优化
取消bug测试
vim /root/nginx-1.10.1/auto/cc/gcc
取消版本号(安全考虑)
vim /root/nginx-1.10.1/src/core/nginx.h
4.编译(注意依赖)
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-sticky-module-ng
如果有依赖性,人家缺什么,给装什么就OK啦~
5.安装
[root@server1 nginx-1.10.1]# make && make install
安装完成如下显示:
6.刚才指定编译路径/usr/local/lnmp/进去看看
编写其新的发布页面内容:
cd /usr/local/lnmp/nginx/html/
vim index.php
<?php
phpinfo()
?>
7.配置nginx文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
---->>
2 user nginx;
3 worker_processes auto;
12 events {
13 worker_connections 65535;
14 }
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 }
注意点:nginx配置文件第13行1024标示nginx缓存最大文件数,再/etc/security/limits.conf 修改
vim /etc/security/limits.conf
-- nginx - nofile 65535
保存退出,查看是否有问题,没有问题启动nginx
/usr/local/lnmp/nginx/sbin/nginx -t //检验语法
/usr/local/lnmp/nginx/sbin/nginx //启动nginx
8. 浏览器查看nginx的默认发布目录/usr/local/lnmp/nginx/html
四、论坛为例对数据库进行说明
1.获得论坛模块解压
yum install unzip
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/ ##解压到nginx默认发布目录
[root@server1 ~]# unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
2.进入到nginx默认发布目录
这里新建了一个目录bbs,把upload下的所有东西移到了bbs目录下
浏览器前端论坛访问
点击我同意,好多x得解决问题
//加权限注意主目录在哪,这样第归加权限更方便
cd /usr/local/lnmp/nginx/html/bbs/
chmod 777config/ -R
chmod 777 data/ -R
chmod 777 uc_client/ -R
chmod 777 uc_server/ -R
刷新下网页就可以进行下一步了
填写数据库密码,管理员密码等信息,点击下一步
报错,数据库链接错误
3.数据库配置
#3.1配置/usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini
--->
1001 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1150 mysql.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
1209 mysqli.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
#3.2配置/usr/local/lnmp/mysql/date
chmod 755 /usr/local/lnmp/mysql/data/
#3.3重新加载php服务开启数据库
/etc/init.d/php-fpm reload
刷新网页,ok
数据库查看下
可见论坛的信息已经在数据库中进行了记载。
lnmp架构完结