lamp架构编译安装

实验环境:RHEL 7.5 ip:192.168.10.205

LAMP: Linux+Apache+Maridb(Mysql)+PHP,常用来搭建动态网站或者服务器的开源软件。习惯上,apache一般是指httpd,当然Apache还有很多的其他软件。

apache(httpd)、mariadb、php可以安装在同一台机子,也可以安装在不同的机子。这里演示的是在一台机子上部署lamp。

如果想分别安装在不同的机子,请参考我的另一博文: https://www.logmm.com/lamp-distributed/

一、安装相关依赖包

[root@node5 ~]#yum  install  expat-devel  pcre-devel  libxml2-devel  openssl-devel  gcc  -y
[root@node5 ~]# yum install -y libcurl-devel gd-devel bzip2-devel

二、编译安装httpd.2.4.33

httpd2.4开始要依赖apr、apr-util包,所以编译安装httpd之前先编译安装apr、apr-util。

1、编译安装apr

下载apr-1.6.3包

[root@node5 ~]#curl -O  http://mirrors.hust.edu.cn/apache/apr/apr-1.6.3.tar.gz   
[root@node5 ~]#tar xf apr-1.6.3.tar.gz   
[root@node5 ~]#cd apr-1.6.3   
[root@node5 apr-1.6.3]#  ./configure  --prefix=/usr/local/apr   
[root@node5 apr-1.6.3]#  make  &&  make  install

2、编译安装apr-util

[root@node5 ~]#curl -O  http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz 
[root@node5 ~]#tar xf  apr-util-1.6.1.tar.gz
[root@node5 ~]#cd apr-util-1.6.1 
[root@node5 apr-util-1.6.1]# ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr/
[root@node5 apr-util-1.6.1]#  make  &&  make  install

3、编译安装httpd

[root@node5 ~]#curl  -O  http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.33.tar.gz
[root@node5 ~]#tar  xf   httpd-2.4.33.tar.gz
[root@node5 ~]#cd  httpd-2.4.33  
[root@node5 httpd-2.4.33]#./configure --prefix=/usr/local/apache\
   --sysconfdir=/etc/httpd24\
   --enable-so\
   --enable-ssl\
   --enable-cgi\
   --enable-rewrite\
   --with-zlib\
   --with-pcre\
   --with-apr=/usr/local/apr\   
   --with-apr-util=/usr/local/apr-util/\
   --enable-modules=most\
   --enable-mpms-shared=all\
   --with-mpm=prefork  
[root@node5 httpd-2.4.33]#  make  &&  make  install 

参数解析:

--prefix=/usr/local/apache 指定安装目录

--sysconfdir=/etc/httpd24 指定配置文件路径

--enable-so 启动模块动态装卸载

--enable-ssl 编译ssl模块

--enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)

--enable-rewrite 支持url重写

--with-zlib 支持数据包压缩

--with-pcre 支持正则表达式

--with-apr=/usr/local/apr 指明依赖的apr所在目录

--with-apr-util=/usr/local/apr-util/ 指明依赖的apr-util所在的目录

--enable-modules=most 启用的模块

--enable-mpms-shared=all 以共享方式编译的模块

--with-mpm=prefork 指明httpd的工作方式为prefork,工作模式有:prefork、event、worker等

httpd常见3种工作模式:

prefork:多进程模型,每个进程响应一个请求。一个主进程负责生产n个子进程(称为工作进程),每个子进程处理一个用户请求;即便没有用户请求,也会预先生产多个空闲进程(最多不超过1024个)。

worker:多线程模型,一个进程生产多个线程,一个线程响应一个请求。

event:事件驱动模型,一个线程响应多个请求。

4、设置环境变量

可以不用设置环境变量,因为后面配置httpd服务脚本了

[root@node5 ~]#vim  /etc/profile.d/httpd.sh
  export  PATH=/usr/local/apache/bin:$PATH
[root@node5 ~]#source /etc/profile.d/httpd.sh

5、配置服务脚本

httpd源码包解压后build/rpm目录下httpd.init文件就是服务脚本

[root@node5 ~]# cp httpd-2.4.33/build/rpm/httpd.init /etc/rc.d/init.d/httpd    
[root@node5 ~]#vim /etc/rc.d/init.d/httpd

httpd=${HTTPD-/usr/local/apache/bin/httpd}

pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}

CONFFILE=/etc/httpd24/httpd.conf

根据实际情况修改以上三项 添加可执行权限

[root@node5 init.d]# chmod +x httpd

将httpd服务添加到系统服务:

[root@node5 init.d]# chkconfig –add httpd

6、修改httpd配置文件的ServerName,以及pidfile

[root@node5 ~]# vim /etc/httpd24/httpd.conf

ServerName localhost:80

PidFile /var/run/httpd.pid

7、启动httpd服务

[root@node0 ~]# service httpd start
Starting httpd (via systemctl):                            [  OK  ]
[root@node0 ~]#

8、清空防火墙

[root@node5 ~]#iptables -F

浏览器输入:192.168.10.205

三、编译安装mariadb

在RHEL/Centos 7.x版本开始,默认的yum源是mariadb数据库。mriadb数据库是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL。

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。

mariadb数据库安装分yum安装、源码包安装、二进制包安装。源码安装十分耗时,特别是编译过程,如果电脑配置低,基本上编译要1小时以上。本文后面会演示mysql5.7源码包安装。

在这里,使用mariadb-10.2.14-linux-x86_64.tar.gz演示二进制包安装。

1、下载mariadb二进制安装包

[root@node5 ~]# curl -O https://mirrors.shu.edu.cn/mariadb//mariadb-10.2.14/bintar-linux-x86_64/mariadb-10.2.14-linux-x86_64.tar.gz

2、创建系统mysql用户和组

[root@node5 ~]# groupadd -r -g 306 mysql
[root@node5 ~]# useradd -r -g 306 -s /sbin/nologin mysql

3、创建数据库数据存放目录

数据库数据存放目录是:/mydata/mariadb

[root@node5 ~]# mkdir /mydata/mariadb -pv
mkdir: created directory ‘/mydata’
mkdir: created directory ‘/mydata/mariadb’
[root@node5 ~]#chown -R mysql.mysql /mydata/ 

4、解压数据二进制包

把mariadb-10.2.14-linux-x86_64.tar.gz解压到/usr/local目录中

[root@node5 ~]# tar xf mariadb-10.2.14-linux-x86_64.tar.gz -C /usr/local/

进入/usr/local目录中,创建mariadb-10.2.14-linux-x86_64/软连接为mysql,并且设置属主属组为mysql

[root@node5 ~]# cd /usr/local/
[root@node5 local]# ln -sv mariadb-10.2.14-linux-x86_64/  mysql
‘mysql’ -> ‘mariadb-10.2.14-linux-x86_64/’
[root@node5 local]# 
[root@node5 local]# chown -R mysql.mysql mysql

5、数据库初始化安装

进入/usr/local/mysql/目录中,然后初始化数据安装

[root@node5 ~]# cd /usr/local/mysql/
[root@node5 mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/local/mysql//bin/mysqladmin' -u root password 'new-password'
'/usr/local/mysql//bin/mysqladmin' -u root -h node5 password 'new-password'

Alternatively you can run:
'/usr/local/mysql//bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:
cd '/usr/local/mysql/' ; /usr/local/mysql//bin/mysqld_safe --datadir='/mydata/mariadb/'

You can test the MariaDB daemon with mysql-test-run.pl
cd '/usr/local/mysql//mysql-test' ; perl mysql-test-run.pl

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

[root@node5 mysql]# 

参数解释:

--user: 数据库用户,这里使用mysql用户

--basedir: 数据库安装目录,因为二进制包直接解压就可以安装了,所以解压之后的目录就是数据库安装目录,我们解压在/usr/local/中,并且设置了软连接为mysql,所以,--basedir=/user/local/mysql

--datadir: 数据库文件的存放目录,这里设置为/mydata/mariadb

6、配置数据服务文件

mariadb解压后的目录中的support-files/目录里面有一个mysql.server文件,这个文件就是mariadb数据库的服务文件,将此文件复制到/etc/rc.d/init.d/目录中,重命名为mariadb,再添加可执行权限:

[root@node5 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mariadb
[root@node5 mysql]# chmod +x /etc/rc.d/init.d/mariadb
[root@node5 mysql]# 

将mariadb添加到系统服务:

[root@node5 mysql]# chkconfig --add mariadb

7、配置数据配置文件

在系统的/etc/目录中有一个默认的数据库配置文件:my.cnf。可以直接编辑这个默认的配置文件,此处为了方便,所以复制解压包中的配置文件到/etc/目录中。

备份系统默认的配置文件(my.cnf),如果系统中此文件没有就不用备份:

[root@node5 mysql]# cp /etc/my.cnf /etc/my.cnf.bak

mariadb解压后的目录中support-files有多个配置文件。这里使用my-large.cnf,将此文件复制/etc/目录,重命名为my.cnf

[root@node5 mysql]# cp support-files/my-large.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@node5 mysql]# 

配置/etc/my.cnf,在[mysqld]段中添加:datadir=/mydata/mariadb:

[root@node5 mysql]# vim /etc/my.cnf
[mysqld]
...
datadir=/mydata/mariadb
...

8、设置环境变量

[root@node5 mysql]# echo 'export PATH=/usr/local/mysql/bin:$PATH'>/etc/profile.d/mysql.sh
[root@node5 mysql]# chmod +x /etc/profile.d/mysql.sh
[root@node5 mysql]# source /etc/profile.d/mysql.sh
[root@node5 mysql]# 

9、启动mariadb服务

[root@node5 mysql]# systemctl start mariadb

查看一下端口:

[root@node5 mysql]# ss -tnl
State  Recv-Q Send-Q Local Address:PortPeer Address:Port  
LISTEN 0  128*:22 *:*  
LISTEN 0  100127.0.0.1:25 *:*  
LISTEN 0  80:::3306  :::*  
LISTEN 0  128   :::22:::*  
LISTEN 0  100  ::1:25:::*  
[root@node5 mysql]# 

运行mysql命令,可以直接进入数据库:

[root@node5 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.2.14-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database   |
+--------------------+
| information_schema |
| mysql  |
| performance_schema |
| test   |
+--------------------+
4 rows in set (0.01 sec)

MariaDB [(none)]> 

OK,mariadb二进制包安装成功。

四、编译安装php

这里使用最新版的php演示(php7.2.6)

1、下载php-7.2.6安装包

[root@node5 ~]# curl -O http://cn2.php.net/distributions/php-7.2.6.tar.gz   

2、编译安装libmcrypt

libmcrypt是用于加密算法的扩展库程序

[root@node5 ~]# curl -O https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz
[root@node5 ~]# tar xf libmcrypt-2.5.8.tar.gz 
[root@node5 ~]# cd libmcrypt-2.5.8
[root@node5 libmcrypt-2.5.8]# ./configure && make && make install

3、创建www用户

创建一个用于运行php-fpm服务的用户,假设用户名为www。

[root@node5 ~]# groupadd -r www
[root@node5 ~]# useradd -r -g www -s /sbin/nologin www
[root@node5 ~]# id www
uid=997(www) gid=305(www) groups=305(www)
[root@node5 ~]# 

4、解压、编译、安装php

php与httpd的整合有两种方式,一种是编译成httpd的一个模块,另一种是作为独立的服务(fpm)。这里先示范fpm模式。

4.1 php-fpm模式编译

此模式httpd2.4之后的版本才支持。编译时使用--enable-fpm选项即可。

[root@node5 ~]# tar xf php-7.2.6.tar.gz 
[root@node5 ~]# cd php-7.2.6
[root@node5 php-7.2.6]# ./configure  --prefix=/usr/local/php7\ 
 --with-config-file-path=/etc/php7\ 
 --with-config-file-scan-dir=/etc/php7.d\ 
 --with-mysqli=mysqlnd\ 
 --with-pdo-mysql=mysqlnd\  
 --with-mysql-sock=/tmp/mysql.sock\ 
 --with-iconv-dir\ 
 --with-freetype-dir\ 
 --with-jpeg-dir\ 
 --with-png-dir\ 
 --with-zlib\
 --with-bz2\ 
 --with-libxml-dir\ 
 --with-curl\ 
 --with-gd\ 
 --with-openssl\ 
 --with-mhash\
 --with-mcrypt\
 --with-xmlrpc\ 
 --with-pdo-mysql\ 
 --with-libmbfl\ 
 --with-onig\ 
 --with-pear\ 
 --enable-xml\ 
 --enable-bcmath\ 
 --enable-shmop\ 
 --enable-sysvsem\ 
 --enable-inline-optimization\ 
 --enable-mbregex\ 
 --enable-fpm\ 
 --enable-mbstring\ 
 --enable-pcntl\ 
 --enable-sockets\ 
 --enable-zip\ 
 --enable-soap\ 
 --enable-opcache\ 
 --enable-pdo\ 
 --enable-mysqlnd-compression-support\ 
 --enable-maintainer-zts\  
 --enable-session\ 
 --with-fpm-user=www\ 
 --with-fpm-group=www
[root@node5 php-7.2.6]# make && make install

4.1.1 配置php-fpm服务文件和php配置文件

上面编译php的时候指定配置文件存放目录为/etc/php7、/etc/php7.d,所以要创建这两个目录。

[root@node5 ~]# mkdir /etc/php7{,.d} -v
mkdir: created directory ‘/etc/php7’
mkdir: created directory ‘/etc/php7.d’
[root@node5 ~]# 

php的配置文件:

复制php解压目录中的php.ini-production(此文件就是php的配置文件)到/etc/php7/目录中,并重命名为php.ini

[root@node5 ~]# cd php-7.2.6
[root@node5 php-7.2.6]# cp php.ini-production /etc/php7/php.ini

php-fpm的服务文件:

php-fpm的服务文件在php解压目录中的sapi/fpm/目录里面,名字为:init.d.php-fpm,将此文件复制到/etc/rc.d/init.d/目录中,并且重命名为:php-fpm,并且添加可执行权限:

[root@node5 php-7.2.6]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@node5 php-7.2.6]# chmod +x /etc/rc.d/init.d/php-fpm

将php-fpm添加到系统服务:

[root@node5 php-7.2.6]# chkconfig --add php-fpm

4.1.2 配置php-fpm的配置文件

php-fpm的配置文件在php安装目录中的/etc/目录里面。编译安装的时候指定了安装目录是/usr/local/php7/,所以php-fpm的配置文件在/usr/local/php7/etc目录中。查看一下这个目录有哪些文件。

[root@node5 php-7.2.6]# cd /usr/local/php7
[root@node5 php7]# ls etc
php-fpm.conf.default  php-fpm.d
[root@node5 php7]# 

etc目录中的php-fpm.conf.default文件就是php-fpm的配置文件,将此文件复制一份,并重命名为php-fpm.conf即可:

[root@node5 php7]# cp etc/php-fpm.conf.default etc/php-fpm.conf

此外,etc/php-fpm.d/目录中有一个www.conf.default文件,将此文件复制一份,并且重命名为www.conf:

[root@node5 php7]# ls etc/php-fpm.d/
www.conf.default
[root@node5 php7]# cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
[root@node5 php7]# 

至此,php编译安装并且配置完成。

4.1.3 整合php与httpd

修改httpd配置文件:vim /etc/httpd24/httpd.conf

(1)开启反向代理模块(mod_proxy.so、mod_proxy_fcgi.so)。

在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载:

即把HTTP的配置文件中的#LoadModule proxy_module modules/mod_proxy.so、#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 这两项前面的#号去掉。如下所示:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

(2)在IfModule dir_module段中添加index.php,如下所示

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

(3)添加对php页面的支持。

在适当位置添加: AddType application/x-httpd-php .php、AddType application/x-httpd-php-source .phps,如下所示:

AddType application/x-httpd-php   .php
AddType application/x-httpd-php-source   .phps

(4)在适当位置比如在文件末尾添加:Include /etc/httpd24/extra/ceshi.conf

Include  /etc/httpd24/extra/ceshi.conf

/etc/httpd24/extra/ceshi.conf此文件用于后面做测试,也就是创建一个虚拟主机解析php,此文件在后面创建。

4.1.4 创建测试页

在httpd的默认网站目录(/usr/local/apache/htdocs/)创建php测试页:

[root@node5 ~]# vim /usr/local/apache/htdocs/index.php
<?php
    $link=new mysqli('127.0.0.1','root','');
    if($link)
       echo "connect mariadb Success";
    else
       echo "connect mariadb Failure";
    mysqli_close($link);

    phpinfo();
?>

把默认的index.html重命名:

[root@node5 ~]# mv /usr/local/apache/htdocs/index.html /usr/local/apache/htdocs/index.html.bak

4.1.5 创建虚拟主机

[root@node5 ~]# vim /etc/httpd24/extra/ceshi.conf
  <VirtualHost *:80>
        DocumentRoot "/usr/local/apache/htdocs"
        ServerName haha
        ProxyRequests Off
        ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1
    <Directory "/usr/local/apache/htdocs">
        AllowOVerride None
        Require all granted
    </Directory>
 </VirtualHost>

4.1.6 清空防火墙规则,设置SELinux

清空防火墙:

[root@node5 ~]# iptables -F

设置SELinux: 如果没有开启SELinux,则不需要执行下面的命令:

[root@node5 ~]# setsebool -P httpd_can_network_connect 1

4.1.7 重启httpd、mariadb、php-fpm服务

[root@node5 ~]# systemctl restart httpd mariadb php-fpm
[root@node5 ~]# 

4.1.8 打开浏览器测试

在浏览器输入192.168.10.205,如下图所示: 显示正常,并且连接数据库也成功了。

至此lamp编译安装部署成功,此处的php作为一个单独的服务去解析动态请求。。。

下面演示php作为httpd的一个模块(而不是单独的服务了)去解析动态请求。。。

4.2 php作为httpd的一个模块编译

4.2.1 编译php

因为前面已经下载了php并且已经解压了,所以不需要再下载解压了。直接编译即可。

php编译成httpd的一个模块来解析动态请求,编译时需要设置--with-apxs2选项。

为了跟前面4.1实验有所的区别,这次编译安装的目录设置为:/usr/local/php7.1,配置文件目录为:/etc/php7.1/、/etc/php7.1.d/

编译如下:

./configure  --prefix=/usr/local/php7.1\
 --with-config-file-path=/etc/php7.1\
 --with-config-file-scan-dir=/etc/php7.1.d\
 --with-mysqli=mysqlnd\
 --with-pdo-mysql=mysqlnd\
 --with-mysql-sock=/tmp/mysql.sock\
 --with-apxs2=/usr/local/apache/bin/apxs\
 --with-iconv-dir\
 --with-freetype-dir\
 --with-jpeg-dir\
 --with-png-dir\
 --with-zlib\
 --with-bz2\
 --with-libxml-dir\
 --with-curl\
 --with-gd\
  --with-openssl\
 --with-mhash\
 --with-xmlrpc\
 --with-pdo-mysql\
 --with-libmbfl\
 --with-onig\
 --with-pear\
 --enable-xml\
 --enable-bcmath\
 --enable-shmop\
 --enable-sysvsem\
 --enable-inline-optimization\
 --enable-mbregex\
 --enable-mbstring\
 --enable-pcntl\
 --enable-sockets\
 --enable-zip\
 --enable-soap\
 --enable-pdo\
 --enable-mysqlnd-compression-support\
 --enable-maintainer-zts\
 --enable-session
[root@node5 php-7.2.6]# make && make install

4.2.2 配置php配置文件

复制php解压目录中的php.ini-production(此文件就是php的配置文件)到/etc/php7.1/目录中,并重命名为php.ini:

[root@node5 php-7.2.6]# mkdir /etc/php7.1{,.d} -v
mkdir: created directory ‘/etc/php7.1’
mkdir: created directory ‘/etc/php7.1.d’
[root@node5 php-7.2.6]# cp php.ini-production /etc/php7.1/php.ini
[root@node5 php-7.2.6]# 

在4.1的实验中已经配置好httpd可以支持php了,为了不冲突,注释掉4.1实验中httpd配置文件所设置的“Include /etc/httpd24/extra/ceshi.conf”,如下:

#Include  /etc/httpd24/extra/ceshi.conf

前面已经创建了测试页。在此不需要再次设置。重启httpd、mariadb服务:

[root@node5 ~]# systemctl restart httpd mariadb

可以直接打开浏览器输入:192.168.10.205,如下图所示:

OK,成功。。。

附1: Apache运行PHP常见的两种方式

1、PHP handlers: PHP以模块的方式运行在Apache中时,PHP解释器被“内嵌”在Apache的进程里。Apache不会调用任何外部的PHP进程,因此这种方式使Apache与PHP能更好的通信。

优点:

1.易于安装和更新

2.容易配置

缺点:

1.仅能与Apache一起工作

2.增加了Apache子进程内存开销

3.当更改php.ini文件后,需要重启Apache

2、FPM/FastCGI: PHP-FPM是Web服务器使用PHP的一种最新方式,也是PHP FastCGI的另外一种实现。

优点:

1.兼容多数Web服务器

2.比mod_php占内存小

3.更多的配置项,包括多版本PHP和suexec

缺点

1.配置复杂

2.不被大家所熟知

附2:mysql5.7源码包安装

系统版本:rhel7.3 内核版本:3.10.0-514.el7.x86_64 内存2G以上

RHEL(红帽企业版)要使用yum,要么挂载本地光盘,要么使用centos的yum源,要么花钱用官方的yum源。

1、安装cmake,可以yum安装。或者源码包编译安装

[root@node2 ~]#yum  install cmake gcc ncurses-devel -y

2、创建mysql的系统用户和组

[root@node2 ~]#useradd -r mysql

3、创建一个mysql安装目录

mysql数据库安装目录是/usr/local/mysql。数据库数据存放目录是/usr/local/mysql/var

修改目录用户和组:

[root@node2 ~]# chown -Rf mysql.mysql /usr/local/mysql/

4、下载boost

假设解压在/root目录下。无需编译安装此包。

下载地址:http://www.boost.org/users/download/ https://zh.osdn.net/projects/sfnet_boost/downloads/boost/1.59.0/boost_1_59_0.tar.bz2/

5、mysql5.7 编译安装要使用boost

下载地址: https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21.tar.gz

解压mysql-5.7.21.tar.gz,并编译

[root@node2 ~]# cd mysql-5.7.21/
[root@node2 mysql-5.7.21]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc  -DWITH_BOOST=/root/boost_1_59_0

再执行make && make install命令即可。编译需要漫长的时间。

6、配置mysql服务脚本文件

复制安装目录下的服务脚本到/etc/rc.d/init.d/目录下,其名字为mysqld

将/usr/local/mysql/support-files/mysql.server复制到 /etc/rc.d/init.d/mysqld

[root@node2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node2 mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@node2 mysql]# chkconfig --add mysqld

7、mysql配置文件

复制源码包中的配置文件(my.cnf)到/etc/目录下,其名字为my.cnf 源码包中packaging/rpm-common/my.cnf

[root@node2 mysql-5.7.21]# cp packaging/rpm-common/my.cnf /etc/my.cnf

修改/etc/my.cnf

datadir=/usr/local/mysql/var

8、初始化安装

[root@node2 mysql]# ./bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/var --basedir=/usr/local/mysql

初始化安装命令:在mysql安装目录下的bin目录中

5.6版本是:mysql_install_db

5.7版本是:mysqld --initialize

如果报错,提示/var/log/mysqld.log不存在

[root@node2 ~]#touch  /var/log/mysqld.log
[root@node2 ~]#chown  mysql.mysql  /var/log/mysqld.log

然后重新运行初始化安装命令。

9、启动mysqld服务

[root@node2 ~]#systemctl start mysqld

报错。日志里提示:/var/run/mysqld不存在

创建/var/run/mysqld目录,属主、属组都是mysql

[root@node2 mysql]# mkdir /var/run/mysqld [root@node2 mysql]# chown mysql.mysql /var/run/mysqld

这样就可以启动mysqld服务

10、设置环境变量、登录

[root@node2 mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
[root@node2 mysql]# source /etc/profile
[root@node2 mysql]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@node2 mysql]#

直接空密码登录会报错。所以需设密码。

修改my.cnf文件

在这个[mysqld]字段添加:

skip-grant-tables

重启mysqld服务,再运行mysql命令,修改root密码

[root@node2 mysql]# bin/mysql
mysql> use mysql;
mysql> UPDATE user SET authentication_string=PASSWORD('123456') WHERE User='root';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit

重启mysqld服务,就可以root登录了

最后,删掉/etc/my.cnf中的skip-grant-tables,保存退出,然后重启mysqld服务。

附3:编译安装php5.6

1、编译安装libmcrypt

[root@node0 ~]#curl -O https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz
[root@node0 ~]#tar xf libmcrypt-2.5.8.tar.gz
[root@node0 ~]#cd libmcrypt-2.5.8
[root@node0 libmcrypt-2.5.8]# ./configure && make && make install

2、下载php5.6.33

[root@node0 ~]curl -O  http://mirrors.sohu.com/php/php-5.6.33.tar.gz

3、解压、编译安装php5.6.33

[root@node0 ~]# tar xf php-5.6.33.tar.gz 
[root@node0 ~]# cd php-5.6.33
[root@node0 php-5.6.33]#./configure --prefix=/usr/local/php5\
   --with-mysql=mysqlnd\
   --with-pdo-mysql=mysqlnd\
   --with-mysqli=mysqlnd\
   --with-openssl\
   --enable-mbstring\
   --with-freetype-dir\
   --with-jpeg-dir\
   --with-png-dir\
   --with-zlib\
   --with-libxml-dir=/usr\
   --enable-xml\
   --enable-sockets\
   --enable-fpm\
   --with-mcrypt\
   --with-config-file-path=/etc/php5/\
   --with-config-file-scan-dir=/etc/php5.d\
   --with-fpm-user=www\
   --with-fpm-group=www\
   --with-bz2
   make  && make install

4、配置php-fpm服务文件

[root@node0 php-5.6.33]#mkdir /etc/php5{,.d}
[root@node0 php-5.6.33]#cp php.ini-production /etc/php5/php.ini
[root@node0 php-5.6.33]#cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
[root@node0 php-5.6.33]#chmod +x /etc/rc.d/init.d/php-fpm

5、将php-fpm添加到系统服务

[root@node0 php-5.6.33]#chkconfig --add php-fpm

6、php-fpm配置文件

[root@node0 php-5.6.33]#cd /usr/local/php5/etc/
[root@node0 php-5.6.33]#cp php-fpm.conf.default php-fpm.conf

附4:查看已编译的参数

1、查看httpd已编译的参数

httpd安装编译的参数保存在编译安装目录下的build/config.nice文件中。例如:

[root@node0 ~]# cat /usr/local/apache/build/config.nice 
#! /bin/sh
#
# Created by configure

"./configure" \
"--prefix=/usr/local/apache" \
"--sysconfdir=/etc/httpd24" \
"--enable-so" \
"--enable-ssl" \
"--enable-cgi" \
"--enable-rewrite" \
"--with-zlib" \
"--with-pcre" \
"--with-apr=/usr/local/apr" \
"--with-apr-util=/usr/local/apr-util/" \
"--enable-modules=most" \
"--enable-mpms-shared=all" \
"--with-mpm=prefork" \
"$@"
[root@node0 ~]# 

2、查看php已编译的参数

查看php编译的参数

方法1: 使用php的探针函数phpinfo()可以查看。请看前面的php编译安装测试页。

方法2: 使用php -i命令

[root@node0 ~]# /usr/local/php5/bin/php -i | grep configure
Configure Command =>  './configure'  '--prefix=/usr/local/php5' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-openssl' '--enable-mbstring' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--enable-sockets' '--enable-fpm' '--with-mcrypt' '--with-config-file-path=/etc/php5/' '--with-config-file-scan-dir=/etc/php5.d' '--with-fpm-user=www' '--with-fpm-group=www' '--with-bz2'
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0
[root@node0 ~]# 

3、查看mysql编译参数

[root@node0 ~]# cat /usr/local/mysql/bin/mysqlbug  | grep configure

源码包编译安装

4、查看nginx编译参数

[root@localhost ~]#/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.1.0h  27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/openssl-1.1.0h --with-pcre --http-log-path=/mydata/logs/nginx/access.log --error-log-path=/mydata/logs/nginx/error.log --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_image_filter_module --with-http_stub_status_module
[root@localhost ~]#

转载于:https://my.oschina.net/logmm/blog/1824885

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值