实验准备:
此次搭建使用rhel6.5版本的镜像
注意:创建的快照至少20G
172.25.58.1 Lnmp服务器
172.25.58.250 客户端
安装包已经在官网上下载好
mysql源码编译时要求虚拟机的硬盘大小不能小于20G,否则后边的编译过程可能会出问题
而且会很漫长,为了提升速度我们增加CPU核数和内存大小。
一、mysql的源码安装
尽行安装:
1、解压安装mysql
tar zxf mysql-boost-5.7.17.tar.gz
2、安装cmake(相当于configure),用来编译mysql比较简洁
yum install -y cmake-2.8.12.2-2.el7.x86_64.rpm
创建安装目录:
mkdir /usr/local/lnmp
3、用cmake来编译和安装必备的东西(mysql5.5之后就可以用cmake来编译)
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/
4、此时解析错误:
不用慌张,按照提示来就行
根据编译的结果提示解决依赖性问题
需要安装包:
yum install -y gcc gcc-c++ ncurses-devel
6、下载好这些,需要进行重新编译解析,要进行:清除缓存和删除 产生的.txt文件
make clean
rm -fr CmakeCache.txt
目的:要清楚原来的对象文件和缓存信息。
7、此时编译还会报错,缺少 -DWITH_BOOST=<directory> 参数
-DWITH_BOOST=boost/boost_1_59_0/
8、所以目前完整的编译参数是:
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/
9、但此时编译还会有一个问题:
后面编译会有一个warning:
CMake Warning at cmake/bison.cmake:20 (MESSAGE):
Bison executable not found in PATH
Call Stack (most recent call first):
sql/CMakeLists.txt:514 (INCLUDE)
解决: yum install bison -y 即可
10、make && make install (过程较长) 如果make还有问题,删除原来的目录,重新解压编译
注意:需要查看自己的虚拟机的内存大小,一般我们定为20G,如果你的内存过于小的话,在安装mysql时会出现问题。
11、检测是否安装成功:
cd /usr/local/lnmp 即安装路径下查看是否由mysql软件
安装完毕的后续操作:
1、复制启动脚本
cp /root/lnmp/mysql_5.7.l7/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld 赋予脚本执行权限
2、将之前的备份
cp my.cnf my.cnf.bak
/root/lnmp/mysql_5.7.l7/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf 然后修改配置:
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
3、添加用户和组:
groupadd -g 27 mysql
useradd -u 27 -g 27 mysql (id=27是因为rpm默认安装时mysql用户的id为27,并非强制)
chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目录的权限,使其对mysql用户可写)
4、将mysql命令添加到环境变量
vim ~/.bash_profile
添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
生效:source ~/.bash_profile
5、初始化mysql:
mysqld --user=mysql --initialize
以mysql用户进行初始化,此时会生成一个密码,在出现字符的最下方,用户登录mysql
6、安全起见,将mysql目录的所有者改为root
chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R ##数据目录所有者必须是mysql,不然mysql用户不能写
7、此时,启动mysqld /etc/init.d/mysqld start
8、mysql -uroot -pYyz234..
此时使用刚才生成的临时密码,但是此时查看不了数据库,原因就是要修改密码,然后才能登陆。
9、mysql_secure_installation 进行密码初始化,然后进行修改密码
注意:密码应该为字母大小写的组合
10、此时进行登陆,可以查看数据库mysql -uroot -p
二、PHP的源码安装
tar jxf php-5.6.35.tar.bz2 解压
cd php-5.6.35
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --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
进行解析
此时解析完会出现以下错误:
checking libxml2 install dir... yes
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.
根据提示来即可,即缺少libxm12,那就:
yum install -y libxml2-devel
然后继续编译,接下来遇到什么报错,继续按照步骤来就行,缺什么yum whatprovides */名字 来寻找安装包的完整名字以及型号。
然后进行安装即可~~~
yum 源里有的,大概就得下这些:
yum install -y openssl-devel
yum install -y libcurl-devel
yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64
yum install -y libpng-devel-1.2.49-1.el6_2.x86_64
yum install freetype-devel-2.3.11-14.el6_3.1.x86_64 -y
yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
yum install -y net-snmp-devel-5.5-49.el6.x86_64
yum源里没有的就得自己在官网上下载:
注意:rhel7可以向下兼容rhel6.x的包:
yum install -y
libmcrypt-2.5.8-9.el6.x86_64.rpm
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
如下图,则编译成功~~~
make && make install 进行安装
安装完毕后,进行后期配置
编译时添加了
--with-fpm-user=nginx --with-fpm-group=nginx 参数
所以添加 nginx 用户
useradd nginx
cp /usr/local/lnmp/php/etc/php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
查看配置文件中以下几项是否开启:
149 user = nginx
149 group = nginx
25 pid = run/php-fpm.pid
拷贝更改php主配置文件
cd /root/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini
936 date.timezone = Asia/Shanghai
拷贝php启动脚本至/etc/init.d/
cd /root/lnmp/php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
添加执行权限:
chmod +x /etc/init.d/php-fpm
启动php
/etc/init.d/php-fpm start
useradd nginx
id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)
[root@server1 fpm]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@server1 fpm]# netstat -antuple | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 0 186164 12437/php-fpm
三、Nginx的源码安装
官网上下载好安装包~
1、解压nginx:tar zxf nginx-1.14.0.tar.gz
2、进入nginx解压包,注释掉版本号()
vim src/core/nginx.h
14 #define NGINX_VER "nginx/"
修改gcc文件,关闭debug模式
vim auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g" (将这2行注释调,关闭debug)
3、编译安装nginx:
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx
根据提示解决依赖性 ##此处应该还需要安装pcre-devel
yum install pcre-devel -y
4、make && make install
判断是否安装好了,进安装路径下找,看是否存在nginx软件。
5、修改nginx配置文件,开启php模块
vim /usr/local/lnmp/nginx/conf/nginx.conf
43 location / {
44 root html;
45 index index.php index.html index.htm; (添加php页面)
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 }
6、将nginx启动脚本链接到/usr/local/sbin/
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server1 ~]# nginx -t ##检测语法
[root@server1 ~]# nginx ##开启nginx
7、尝试访问:http://172.25.58.1 ##是nginx默认页面
在nginx默认发布目录添加 index.php
vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>
#可以看到php的默认页面
8、启动nginx并访问:http://172.25.58.1
nginx安装配置完成
Lnmp架构搭配完成。
刚才在Nginx的配置文件中,将php和Nginx关联起来,那么如何将mysql和php结合起来,使其可以访问到数据库呢?
刚才没有进行说明。
vim test_mysql.php (放在站点目录下面/html/www)
<?php
//$link_id=mysql_connect('主机名','用户','密码');
//mysql -u用户 -p密码 -h 主机
$link_id=mysql_connect('localhost','root','123456') or mysql_error();
if($link_id){
echo "mysql successful by oldboy !\n";
}else{
echo mysql_error();
}
?>