安装次序
httpd, MariaDB, php
安装apache2.4
[root@root ~]# yum groupinstall "Development Tools" "Server Platform Develoment " –y #安装开发环境 [root@root ~]# yum install pcre-devel –y #安装pcre [root@root ~]# wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.2.tar.gz #下载apr [root@root ~]# wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.4.tar.gz #下载apr-util [root@root ~]# ls anaconda-ks.cfg apr-util-1.5.4.tar.gz install.log.syslog apr-1.5.2.tar.gz install.log [root@root ~]# tar -xf apr-1.5.2.tar.gz #安装apr [root@root ~]# cd apr-1.5.2 [root@root apr-1.5.2]# ./configure --prefix=/usr/local/apr #为避免覆盖1.3.9版本的apr,我们选择新的路径进行安装 [root@root ~]# tar -xf apr-util-1.5.4.tar.gz #安装apr-util [root@root ~]# cd apr-util-1.5.4 [root@root apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr =/usr/local/apr #针对于apr做编译 [root@root apr-util-1.5.4]# make && make install [root@root ~]# groupadd -r apache [root@root ~]# useradd -r -g apache apache #添加系统用户和系统组apache [root@root ~]# yum install pcre-devel–y #在编译httpd2.4前需要安装pcre [root@root ~]# wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.20.tar.g z #下载httpd2.4 [root@root ~]# tar -xvf httpd-2.4.20.tar.gz [root@root ~]# cd httpd-2.4.20 [root@root httpd-2.4.20]# ./configure --prefix=/usr/local/apache --sysconf=/etc /httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --w ith-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enabl e-modules=most --enable-mpms-shared=all --with-mpm=prefork
涉及到以下参数
--prefix=/usr/local/apache2.4.9 #应用程序安装路径 --sysconfdir=/etc/httpd #配置文件的安装路径 --enable-so #支持DSO动态装载模块 --enable-ssl #要编译启用ssl模块(前提是需要安装openssl-devel) --enable-cgi #启用CGI模块(默认就启用) --enable-rewrite #URL重写(把用户访问的URL由服务器自动的改成另外一个URL, #这是一个非常有用的机制) --with-zlib #这是一个压缩库(专用于网络传输) --with-pcre #使用增强的perl正则表达式分析工具(使用这项需要安 #装pcre-devel,pcre:正则表达式分析器) --with-apr=/usr/local/apr #指明apr的目录(若apr在特殊路径下) --with-apr-util=/usr/local/apr-util/ #指明apr-util路径(若apr-util在特殊路径下 ) --enable-mpms-shared=all #把所有的mpm模块都编译进来而且是共享模块 --with-mpm=prefork #默认使用的mpm模块 --enable-modules=most(all) #还有很多其他模块,其他的动态可装载模块需要 #编译哪些 #(all:所有都编译,most:编译一些常用的模块) [root@root httpd-2.4.20]#make && make install [root@root ~]# /usr/local/apache/bin/apachectl -t #检查apache主配置文件语法是否有错误 Syntax OK
查看httpd-2.4.20安装目录的内容
[root@Centos ~]# tree -d /usr/local/apache/ /usr/local/apache/ ├── bin #存放启动或关闭httpd的脚本文件 ├── build ├── cgi-bin #cgi程序文件的存放目录 ├── error #发生服务器端错误时返回给客户端的错误页面 │ └── include ├── htdocs #Web页面所在的目录 ├── icons #存放httpd的图标文件 │ └── small ├── include #存放头文件 ├── logs #httpd的日志文件 ├── man #帮助手册 │ ├── man1 │ └── man8 ├── manual #httpd的配置手册 │ ├── developer │ ├── faq │ ├── howto │ ├── images │ ├── misc │ ├── mod │ ├── platform │ ├── programs │ ├── rewrite │ ├── ssl │ ├── style │ │ ├── css │ │ ├── lang │ │ ├── latex │ │ ├── scripts │ │ └── xsl │ │ └── util │ └── vhosts └── modules #存放httpd的模块
编译安装后的基本配置:
1.修改httpd的主配置文件,设置其Pid文件的路径:
vim /etc/httpd24/httpd.conf ServerRoot "/usr/local/apache" PidFile "/var/run/httpd.pid" 修改PAT H环境变量,让/usr/local/apache/bin目录下的命令都可以执行: [root@root ~]# vim /etc/profile.d/httpd.sh #必须要以.sh结尾,并且放在这里可以单独管理,不要的时候可以直接删除,添加如下内容 export PATH=/usr/local/apache/bin:$PATH [root@root ~]# . /etc/profile.d/httpd.sh #source一下 [root@root ~]# httpd -t #检查是相关命令是否可用了 Syntax OK
2.导出头文件:
[root@root ~]# ln -sv /usr/local/apache/include/ /usr/local/include/httpd `/usr/local/include/httpd' -> `/usr/local/apache/include/'
3.导出man手册(用vim编辑/etc/man.config):
MANPATH /usr/man MANPATH /usr/share/man MANPATH /usr/local/man MANPATH /usr/local/share/man MANPATH /usr/X11R6/man 加上下面这一行 MANPATH /usr/local/apache/man
4.编写服务脚本(因是编译安装,不会自动生成服务脚本)并给其添加执行权限:(vim
/etc/rc.d/init.d/httpd)
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
"/etc/rc.d/init.d/httpd" 86L, 2314C 31,1 Top
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
"/etc/rc.d/init.d/httpd" 86L, 2314C 31,1 Top
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d 10 $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=$?
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
fi
echo
}
# See how we were called.
case "$1" in
start)
start;;
stop)
stop;;
status)
status -p ${pidfile} $httpd
33,5 61%
status)
status -p ${pidfile} $httpd
RETVAL=$?;;
restart)
stop
start;;
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi;;
reload)
reload;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatu
s
|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
apachectl=/usr/local/apache/bin/apachectl #需要注意这些路径
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
5.启动服务并测试:
[root@root ~]#vi /etc/sysconfig/iptables #iptables添加80端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80-j ACCEPT [root@root ~]# service httpd start
测试

6.设置开机启动:
[root@root ~]# chkconfig httpd on [root@root ~]# chkconfig –list | grep httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
安装mariadb
[root@root ~]# groupadd -r mysql [root@root ~]# useradd -r mysql -g mysql [root@root ~]# id mysql uid=496(mysql) gid=494(mysql) groups=494(mysql) [root@root~]#wget https://downloads.mariadb.org/interstitial/mariadb-5.5.36/kvm -bintar-centos5-amd64/mariadb-5.5.36-linux-x86_64.tar.gz/from/http%3A//archive. mariadb.org/ [root@root]# tar -zxvf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local [root@root ~]# cd /usr/local [root@root local]# ls bin games include lib64 mariadb-5.5.36-linux-x86_64 share etc gnupg lib libexec sbin src [root@root local]# ln -sv mariadb-5.5.36-linux-x86_64 mysql [root@root local]# ll drwxr-xr-x. 13 root root 4096 May 13 06:53 mariadb-5.5.36-linux-x86_64 [root@root local]# cd mysql/ [root@root mysql]# chown -R root:mysql ./* [root@root mysql]# ls scripts/ mysql_install_db [root@root ~]# scripts/mysql_install_db --help --basedir=path #mysql安装目录 --datadir=path #数据存放位置 --user=user_name #以哪个用户的身份安装 [root@root mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/mysq l-data/
初始化mysql
[root@root mysql]# ls support-files/ #查看服务脚本mysql.serve binary-configure magic my-medium.cnf mysql.server config.huge.ini my-huge.cnf my-small.cnf ndb-config-2-no de.ini config.medium.ini my-innodb-heavy-4G.cnf mysqld_multi.server SELinux config.small.ini my-large.cnf mysql-log-rotate solaris [root@root mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld root@root mysql]# chkconfig --add mysqld [root@root mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off root@root mysql]# mkdir /etc/mysql [root@root mysql]# pwd /usr/local/mysql [root@root mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf [root@root mysql]# vim /etc/mysql/my.cnf
thread_concurrency = 8 #并行线程数,cpu*2 datadir=/mydata/mysql-data/ #修改data路径 innodb_file_per_table #暂不解释 skip_name_resolve = on #跳过名称反解,直接识别ip
[root@root mysql]# service mysqld start Starting MySQL.. SUCCESS! [root@root mysql]# ss -tnl 0 50 *:3306 *:* #3306端口处于监听状态
安装php
[root@root ~]# wget http://cn2.php.net/distributions/php-5.6.23.tar.gz [root@root ~]# tar -zxvf php-5.6.23.tar.gz -C /usr/local/ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #配置epel源 [root@root ~]# yum install bzip2-devel libmcrypt-devel libxml2-devel –y [root@root ~]# cd /usr/local/php-5.6.23/
[root@root ~]#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openss l --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-free type-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --en able-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcryp t --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-b z2 --enable-maintainer-zts
--enable-mbstring #多字节字符串支持 --with-freetype-dir #支持freetype字体格式 --with-jpeg-dir #支持jpeg图片格式 --with-png-dir #支持png图片格式 --enable-sockets #支持与sockets通信 --with-apxs2=/usr/local/apache/bin/apxs #把php编译成apache的模块 --with-mcrypt #支持加密解密库 --enable-maintainer-zts #编译成zts模块,event,worker模式使用
[root@root php-5.6.23]#make -j 4 && make install
[root@root php-5.6.23]# cp php.ini-production /etc/php.ini #为php提供配置文件
[root@root php-5.6.23]# cd /etc/httpd24/
[root@root httpd24]# cp httpd.conf {,.bak}
[root@root httpd24]# vim httpd.conf #编辑apache配置文件httpd.conf,使apache支持p
hp
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php #添加
AddType application/x-httpd-php-source .phps #添加
DirectoryIndex index.php index.html #定位至DirectoryIndex index.html修改
[root@root httpd24]# service httpd restart
[root@root httpd24]# cd /usr/local/apache/
[root@root apache]# ls
bin build cgi-bin error htdocs icons include logs man manual modules
[root@root apache]# cd htdocs/
[root@root htdocs]# mv index.html index.php
[root@root htdocs]# vim index.php

测试

[root@root htdocs]# service mysqld stop

原创文章,作者:Net17_得得,如若转载,请注明出处:http://www.178linux.com/20830

