选择源码编译安装软件有以下几个原因:
- 满足不同的运行平台。linux发行版众多,但是每个版本采用的软件或者内核版本都不一样,而而二进制包所依赖的环境不一定能够正常运行,所以大部分软件直接提供源码。
- 方便定制所需的模块,满足不同的需求。大多数二进制代码都是一键装完所有,自由度并不高;而源码编译需要安装哪个模块都是可以自由定制的。
- 方便运维人员和开发人员的维护。我们的源码是可以打包二进制的,但是对于这个软件的打包都会有一 份代价不小的额外工作,包括维护,所以如果是源码的话,软件产商会直接维护,但是如果是二进制的话, 一般都是Linux 发行商提供!
安装和配置apache
准备环境:
yum -y install make gcc gcc-c++ openssl openssl-devel
分别编译安装一下依赖包
注:httpd2.4版本以后要求apr的版本为1.5以上
apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz 、 pcre-8.41.tar.gz
[root@localhost ~]# tar xf apr-1.6.2.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-1.6.2/
[root@localhost apr-1.6.2]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.6.2]# make && make install
[root@localhost ~]# tar xf apr-util-1.6.0.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-util-1.6.0/
[root@localhost apr-util-1.6.0]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
[root@localhost apr-util-1.6.0]# make -j 8 && make install
报错解决:xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
yum install -y expat
[root@localhost ~]# tar xf pcre-8.41.tar.gz -C /usr/local/src/
[root@localhost ~]#cd /usr/local/src/pcre-8.41/
[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/pcre [root@localhost pcre-8.41]# make && make install
编译安装apache
[root@localhost ~]# tar zxvf httpd-2.4.37.tar.gz -C /usr/local/src/ [root@localhost ~]# cd /usr/local/src/httpd-2.4.37/
[root@localhost httpd-2.4.37]#./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 \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=event
make && make install
报错:make[1]: Leaving directory `/root/httpd-2.4.41/support’
解决
把你下载的apr、apr-util复制到/root/httpd-2.4.41/srclib/apr(apr-util)在重新./configure make make install
生成启动脚本
[root@localhost httpd-2.4.37]# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
chomod +x /etc/init.d/httpd
写个httpd系统服务启动脚本,以754的权限保存此文件
cat >/etc/systemd/system/httpd.service<<EOF
[Unit]
Description=httpd
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/httpd start
ExecReload=/etc/init.d/httpd restart
ExecStop=/etc/init.d/httpd stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
单独创建一个用户来运行服务
useradd -M -s /sbin/nologin www
修改vim /usr/local/apache/conf/httpd.conf的166行的User为www
编译安装mysql
注:mysql从5.7版本后boost是必须的,建议把系统自带的boost卸载掉,其中cmake的版本不低于2.8
安装依赖包
yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel
添加用户和组
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -M -s /sbin/nologin -r -g mysql mysql
解压源码包
[root@localhost ~]# tar xf mysql-boost-5.7.28.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/mysql-5.7.28
创建数据目录和安装目录
[root@localhost ~]# mkdir -p /var/lib/mysql/data
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
编译安装MySQL
[root@localhost ~]# 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=utf8mb4 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/mysql-5.7.28/boost/boost_1_59_0/
[root@localhost ~]# make
[root@localhost ~]# make install
编辑配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld] port=3306
user=mysql basedir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/tmp/mysql.sock
character-set-server=utf8
log-error=/var/log/mysqld.log
[mysql] socket=/tmp/mysql.sock
配置环境变量
[root@localhost ~]# vim /etc/profile.d/mysql.sh
PATH=/var/lib/mysql/bin:$PATH
[root@localhost ~]# source /etc/profile.d/mysql.sh
生成服务启动脚本
[root@localhost ~]# cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# chmod +x /etc/init.d/mysqld
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
初始化数据库
[root@localhost ~]# mysqld --defaults-file=/etc/my.cnf --initialize
编译安装php
安装epel源
[root@localhost ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
安装所需依赖
[root@localhost ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype freetype-devel gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel libjpeg-devel freetype-devel libmcrypt-devel
解压文件
[root@localhost ~]# tar xf php-7.1.24.tar.gz -C /usr/local/src
[root@localhost ~]# cd /usr/local/src/php-7.1.24/
[root@localhost ~]# ./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=/etc/ \
–with-mysqli=mysqlnd \
–with-mysql-sock=/tmp/mysql.sock \
–enable-maintainer-zts
[root@localhost ~]# make && make install
生成配置文件
cp /php.ini.production /etc/php.ini
编辑apache的配置文件以支持php的文件
vim /usr/local/apache/conf/httpd.conf
在393行后添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
测试是否可以连接mysql
<?php
$mysqli = new mysqli("localhost", "root", "123456"); if(!$mysqli) {echo"database error";
}
else{echo"php连接mysql successful";
}
$mysqli->close();
phpinfo();
?>