运维开发网

源码编译搭建LAMP架构

运维开发网 https://www.qedev.com 2021-04-07 17:09 出处:51CTO 作者:riuhazen
源码编译搭建LAMP架构LAMP=Linux + Apache + MySQL + PHP源码安装和rpm安装对比rpm:安装、部署、管理比较方便,运行稳定;版本较低,功能和性能较差源码:安装、部署、管理比较麻烦,运行相对不稳定;版本较新,功能和性能较高Apache官网http://httpd.apache.org/需要源码编译安装的软件包httpd-2.4.28.tar.gz       #Ap

源码编译搭建LAMP架构

LAMP=Linux + Apache + MySQL + PHP

源码安装和rpm安装对比

rpm:安装、部署、管理比较方便,运行稳定;版本较低,功能和性能较差

源码:安装、部署、管理比较麻烦,运行相对不稳定;版本较新,功能和性能较高

Apache官网

http://httpd.apache.org/

需要源码编译安装的软件包

httpd-2.4.28.tar.gz       #Apache主程序包

apr-1.5.2.tar.gz          #Apache依赖包

apr-util-1.5.4.tar.gz      #Apache依赖包

pcre-8.41.tar.gz          #Apache依赖包

下载源码安装包

http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.28.tar.gz http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz

http://archive.apache.org/dist/apr/apr-util-1.5.0.tar.gz

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz

首先下载最新的源码包

安装之前请先安装make、gcc、openssl等编译工具和开发包

[root@xuegod71 ~]# yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel

编译安装依赖包apr-1.5.2.tar.gz

[root@xuegod71 ~]# tar zxvf apr-1.5.2.tar.gz

[root@xuegod71 ~]# cd apr-1.5.2

[root@xuegod71 apr-1.5.2]# ./configure --prefix=/usr/local/apr

[root@xuegod71 apr-1.5.2]# make && make install

编译安装依赖包apr-util-1.5.4.tar.gz

[root@xuegod71 ~]# tar zxvf apr-util-1.5.4.tar.gz

[root@xuegod71 ~]# cd apr-util-1.5.4

[root@xuegod71 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ \

--with-apr=/usr/local/apr/bin/apr-1-config

[root@xuegod71 apr-util-1.5.4]# make && make install

编译安装依赖包pcre-8.41.tar.gz

[root@xuegod71 ~]# tar zxf pcre-8.41.tar.gz

[root@xuegod71 ~]# cd pcre-8.41

[root@xuegod71 pcre-8.41]# ./configure --prefix=/usr/local/pcre

[root@xuegod71 pcre-8.41]# make –j 4 && make install

编译安装Apache

[root@xuegod71 httpd-2.4.28]# tar zxvf httpd-2.4.28.tar.gz -C /usr/local/src/

[root@xuegod71 httpd-2.4.28]# cd /usr/local/src/httpd-2.4.28/

[root@xuegod71 httpd-2.4.28]# ./configure --prefix=/usr/local/apache \

--enable-so \

--enable-rewrite \

--enable-ssl \

--with-apr=/usr/local/apr \

--with-apr-util=/usr/local/apr-util/ \

--with-pcre=/usr/local/pcre/

[root@xuegod71 httpd-2.4.28]# make && make install

注:

--enable-so                                                #支持动态加载模块

--enable-rewrite                                        #支持网站地址重写

--enable-ssl                                                #支持ssl加密

--with-apr=/usr/local/apr                        #关联apr

--with-apr-util=/usr/local/apr-util         #关联apr-util

--with-pcre=/usr/local/pcre                        #关联pcre

--libdir=/usr/lib64                   #关联库文件

配置文件

[root@xuegod71 ~]# ls /usr/local/apache/conf/httpd.conf

/usr/local/apache2/conf/httpd.conf

网站根目录

[root@xuegod71 ~]# ls /usr/local/apache/htdocs/

index.html

生成启动脚本

[root@xuegod71 ~]# cp /usr/local/apache/bin/apachectl /etc/init.d/

[root@xuegod71 ~]# chmod +x /etc/init.d/apachectl

写个apache系统服务脚本, 以754的权限保存此文件/usr/lib/systemd/system/apache.service

[Unit]

Description=apache

After=network.target

[Service]

Type=forking

ExecStart=/etc/init.d/apachectl start

ExecReload=/etc/init.d/apachectl restart

ExecStop=/etc/init.d/apachectl stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

将服务添加到系统启动服务中

[root@xuegod71 ~]# systemctl enable apache

启动服务

[root@xuegod71 ~]# /etc/init.d/apachectl start 或 systemctl start apache

测试访问

源码编译mysql

下载地址:

http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

http://liquidtelecom.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

MySQL从5.7版本之后,boost是必须的,建议把系统自带的boost库卸载,源码编译安装高版本

[root@xuegod71 ~]# yum -y remove boost-*

卸载系统自带的mysql

[root@xuegod71 ~]# yum -y remove mysql

安装必要的资源包

建议使用网络yum源,RHEL7光盘中自带的软件包版本不够,mysql-5.7.19.tar.gz的编译对软件包的版本要求比较高,其中cmake的版本要不低于2.8

网络yum源配置可以参考http://blog.sina.com.cn/s/blog_14e8c64ca0102vztv.html

安装依赖包

yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel

添加用户和组

[root@xuegod71 ~]# groupadd mysql

[root@xuegod71 ~]# useradd -M -s /sbin/nologin -r -g mysql mysql

创建安装目录和数据存放目录(生产环境一般独立磁盘)

添加一块新的硬盘,创建分区sdb1并分配所有的空间

注:mysql-5.7.19.tar.gz安装时占用空间比较大,建议添加一块硬盘进行安装

解压源码包

[root@xuegod71 ]# tar zxf mysql-5.7.19.tar.gz

[root@xuegod71 ~]# cd mysql-5.7.19

[root@xuegod71 mysql-5.7.19]#cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql \

-DMYSQL_DATADIR=/var/lib/mysql/data \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/root/mysql-5.7.19/boost/boost_1_59_0

这些编译参数的帮助寻找方法:

http://www.mysql.com→→Documentation→→选择对应的版本(5.7)Installation & Upgrades→→Installing MySQL from Source →→MySQL Source-Configuration Options

最终的URL https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html              

DCMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql

DEFAULT_CHARSET:指定服务器默认字符集,默认latin1

DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci

ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF

WITH_COMMENT:指定编译备注信息

WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。

WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎

SYSCONFDIR:初始化参数文件目录

MYSQL_DATADIR:数据文件目录

MYSQL_TCP_PORT:服务端口号,默认3306

MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock

编译

mysql-5.7.19.tar.gz编译时会占用大量的系统资源,建议使用多个核心同时进行编译,否则可能会编译失败

[root@xuegod71 mysql-5.7.19]# make -j 4

make -j 4   #注:-j 用来指定CPU核心数,可加快编译速度。 加 -j 4我用4核心来编译的,可以提高编译速度;当然你要确定CPU多少核心

查看服务器CPU核心数

[root@xuegod71 ~]# grep processor /proc/cpuinfo | wc -l

4

21:45

安装

[root@xuegod71 mysql-5.7.11]# make install

创建数据目录 存放数据文件

[root@xuegod71 ~]#mkdir -p /var/lib/mysql/data/

修改目录权限

[root@xuegod71 ~]# chown -R mysql:mysql /var/lib/mysql

生成配置文件

[root@xuegod71 ~]# mv /etc/my.cnf{,.bak}

自行创建my.cnf配置文件

[root@xuegod71 ~]#vim /etc/my.cnf

[mysqld]

basedir=/var/lib/mysql

datadir=/var/lib/mysql/data

port=3306

socket=/var/lib/mysql/mysql.sock

symbolic-links=0

character-set-server=utf8

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

# 一般配置选项

basedir = /var/lib/mysql

datadir = /var/lib/mysql/data

port = 3306

socket = /server/mysql/mysql.sock

pid-file=/var/run/mysqld/mysqld.pid

character-set-server=utf8

创建相关目录及授权 mkdir -p /var/run/mysqld/ && chow mysql.root /var/run/mysqld/

生成服务启动脚本

[root@xuegod71 ~]#

cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld

[root@xuegod71 ~]# chmod +x /etc/init.d/mysqld

[root@xuegod71 ~]# chkconfig --add mysqld

[root@xuegod71 ~]# chkconfig mysqld on

[root@xuegod71 ~]# chkconfig --list mysqld

mysqld                 0:off        1:off        2:on         3:on          4:on  5:on  6:off

初始化数据库(如果无法初始化先启动mysql)

[root@xuegod71 ~]#/var/lib/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data

启动服务

[root@xuegod71 ~]# /etc/init.d/mysqld start

Starting MySQL.. SUCCESS!

添加path路径: vim /etc/profile 添加下面2行 在文件的结尾

export MYSQL_HOME=/var/lib/mysql

export PATH=$PATH:$MYSQL_HOME/bin

使修改生效

source /etc/profile

[root@xuegod71 ~]# ln -s /var/lib/mysql/bin/* /usr/local/bin/

修改mysql密码:

[root@xuegod71 ~]# mysqladmin -u root password "123456"   

[root@xuegod71 ~]# mysql

mysql> set password for 'root'@'localhost'=password('123456'); #或者登陆再修改密码也可以

源码编译安装php5.6.36

官网地址:http://php.net/

源码包下载地址http://am1.php.net/distributions/php-5.6.36.tar.gz

安装epel扩展yum源

Centos7安装epel源:rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

[root@xuegod71 ~]# yum clean all

[root@xuegod71 ~]# yum list

注:RHEL光盘和CentOS源缺少很多软件包,建议使用扩展源进行安装依赖包

安装所需依赖包

[root@xuegod71 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c

[root@xuegod71 ~]# tar zxf php-5.6.36.tar.gz

[root@xuegod71 ~]# cd php-5.6.36

配置相关参数

[root@xuegod71 php-5.6.36]# ./configure --prefix=/usr/local/php/ \

--with-apxs2=/usr/local/apache/bin/apxs \

--enable-mbstring \

--with-curl \

--with-gd \

--enable-fpm \

--enable-mysqlnd  \

--with-pdo-mysql=mysqlnd \

--with-config-file-path=/usr/local/php/etc/ \

--with-mysqli=mysqlnd \

--with-mysql-sock=/var/lib/mysql/mysql.sock

Php配置选项中文手册http://php.net/manual/zh/configure.about.php

注:

--with-apxs2                                #将php编译为Apache的一个模块进行使用

--enable-mbstring                                                        #多字节字符串的支持

--with-curl                                                                #支持cURL

--with-gd                                 #支持gd库

--enable-fpm                                 #支持构建fpm

--enable-mysqlnd                                  #启用mysqlnd

--with-pdo-mysql                                #支持pdo:MySQL支持

--with-config-file-path                        #设置配置文件路径

--with-mysqli                                #支持MySQLi

--with-mysql-sock                                #关联mysql的socket文件

编译

[root@xuegod71 php-5.6.36]# make -j 4

安装

[root@xuegod71 php-5.6.36]# make install

生成配置文件

[root@xuegod71 php-5.6.36]# cp php.ini-production /usr/local/php/etc/php.ini

添加Apache支持

[root@xuegod71 php-5.6.36]# vim /usr/local/apache/conf/httpd.conf

Addtype application/x-httpd-php .php .phtml

创建测试页面

[root@xuegod71 php-5.6.36]# cd /usr/local/apache/htdocs/

[root@xuegod71 htdocs]# vim index.php

<?php

        phpinfo();

?>

[root@xuegod71 htdocs]# /etc/init.d/apachectl restart  #重启apache

测试http://10.10.10.71/index.php

配置php报错解决

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed

2. apxs was not found. Try to pass the path using –with-apxs2=/path/to/apxs

3. Apache was not built using –enable-so (the apxs usage page is displayed)

The output of /usr/local/apache/bin/apxs follows:

./configure: /usr/local/apache/bin/apxs: not found

configure: error: Aborting

出现以上问题

#vi  /usr/local/apache/bin/apxs

第一行的#!/replace/with/path/to/perl/interpreter -w,找到你perl的安装位置,如果不清楚,可以用which perl找到,一般在/usr/bin/perl ,于是将第一行修改为:#!/usr/bin/perl -w. 再运行php的configure, 一切正常!

0

精彩评论

暂无评论...
验证码 换一张
取 消