centos7编译apache2.4+php5.6+mysql5.7
May 14, 2017
先说点对本地开发环境新得. 对于开发环境, 我个人还是偏喜欢在本地环境搭建, 如果本地环境是window, 最需要的是
文件名大小写敏感问题. 不知不觉踩了好几次坑了. 也曾想过跑个虚拟机跑开发环境, 代码通过共享解决(virtualbox, vagrant…), 本地环境和
线上环境一致的问题. 但真实用起来还是不爽. 前几天有个网友让班忙做个镜像, 本着助人为乐的态度就弄了.
准备环境 (CentOS7 minimal IOS)
切换阿里云镜像源
1
2
3# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum makecache如果没有安装
wget
也可使用curl /etc/yum.repos.d/CentOS-Base.repo.backup -o /etc/yum.repos.d/CentOS-Base.repo
安装必要的编译工具
1
# yum groupinstall "Development Tools"
编译apache2.4
-
1
2# cd /opt/softs
# tar -jxvf httpd-2.4.25.tar.bz2
下载apr 拷贝到
path/to/apache2.4/srclib/apr
1
2
3
4# cd /opt/softs
# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz
# tar -zxvf apr-1.5.2.tar.gz
# mv apr-1.5.2 /opt/softs/httpd-2.4.25/srclib/apr下载apr-util 拷贝到
/opt/apache2.4/srclib/apr-util
1
2
3
4# cd /opt/softs
# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
# tar -zxvf apr-util-1.5.4.tar.gz
# mv apr-util-1.5.4 /opt/softs/httpd-2.4.25/srclib/apr-util下载pcre 编译安装
1
2
3
4
5
6# cd /opt/softs
# wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.bz2
# tar -jxvf pcre-8.00.tar.bz2
# cd pcre-8.00
# ./configure --enable-utf8 --enable-unicode-properties
# make && make install编译apache2.4
1
2
3# cd /opt/softs/httpd-2.4.25
# ./configure --prefix=/opt/apache2.4 --prefix=/opt/apache2.4 --with-inlucde-apr
# make && make install编写systemd启动脚本. SysV不适用, CentOS7默认启用了systemd管理服务. 可以使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14# vi /etc/systemd/system/httpd.service
[Unit]
Description = apache2.4 service
After = network.target
[Service]
Type = forking
ExecStart = /opt/apache2.4/bin/apachectl -k start
[Install]
WantedBy = multi-user.taget
# systemctl start http检查是否服务启动
1
2# curl http://localhost
<html><body><h1> It works! </h1></body></html>注意: 如果不是本机访问不了, 查看是否是iptables关系. CentOS7-minimal IOS默认有防火墙策略
- 清空所有防火墙策略
iptables -F
(开发环境推荐) - 或添加一条规则
iptables -t filter -I INPUT 1 -p tcp --dport=80 -j ACCEPT
. 所有到目标端口80的tcp协议全部放行.
- 清空所有防火墙策略
安装mysql5.7
完全编译mysql5.7是个大工程, 我这篇幅写不完, 偷个懒
下载官方编译好的MySQL5.7二进制包解压即可.
1
2
3
4# cd /opt/softs/
# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
# tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.7.18-linux-glibc2.5-x86_64 /opt/mysql5.7初始化mysql
1
2
3
4# cd /opt/mysql5.7
# useradd mysql -s /sbin/nologin
# mkdir data && chown mysql:mysql data -R
# bin/mysqld --initialize-insecure配置
/etc/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# vi /etc/my.cnf
[client]
socket=/tm/mysql.socket
port=3306
[mysqld]
basedir=/opt/mysql5.7
datadir=/opt/mysql5.7/data
socket=/tmp/mysql.socket
pid-file=/tmp/mysql.pid
server-id=1
user=mysql
character-set-server=utf8
collection_server=utf8_general_ci
log_error=/opt/mysql5.7/data/error.log
log_bin=/opt/mysql5.7/data/log-bin.log编写systemd启动脚本. SysV不适用, CentOS7默认启用了systemd管理服务. 可以使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14# vi /etc/systemd/system/mysql.service
[Unit]
Description = MySQL service
After = network.target
[Service]
Type = forking
ExecStart = /opt/mysql5.7/bin/mysqld --daemonize
[Install]
WantedBy = multi-user.taget
# systemctl start mysql测试是否启动
1
# /opt/mysql5.7/bin/mysql -uroot -p
编译php5.6
下载php5.6
1
2
3
4
5
6# cd /opt/softs/
# wget http://hk1.php.net/get/php-5.6.30.tar.bz2/from/this/mirror
# tar -jxvf php-5.6.30.tar.gz2
# cd php-5.6.30
# ./configure --prefix=/opt/php5.6 \
安装必要的依赖
1
2
3
4
5
6
7
8
9
10# yum install libxml2-devel freetype-devel libpng-devel openssl-devel
# cd /opt/softs/php-5.6.30
# ./configure --prefix=/opt/php5.6 --with-apxs2=/opt/apache2.4/bin/apxs \
--with-zlib=/usr \
--enable-bcmath \
--enable-calendar \
--enable-mbstring \
--enable-mbregex \
--with-mysql=mysqlnd
# make && make install添加mine类型到apache
1
2
3
4# vi /opt/apache2/conf/httpd.conf
AddType text/html .php .phtml
AddType application/x-httpd-php .php .phtml测试是否ok
1
2# echo "<?php phpinfo(); " > /opt/apache2.4/htdocs/start.php
# curl http://localhost/start.php
重启启动服务
- 启动mysql
systemctl start mysql
- 启动apache
sysmtectl start httpd