编译安装apache +php +mysql

来源:互联网 发布:全国凤楼兼职信息源码 编辑:程序博客网 时间:2024/04/30 12:31
之前都是用  yum  install httpd php mysql后来发现出了错误都不知道怎么解决,浪费很多时间。
后面觉得还是自己编译比较靠谱。
过程如下:

安装  配置 apache 
1、下载apache
wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.2.26.tar.gz

2、解压apache
tar -zxvf httpd-2.2.26.tar.gz

3、配置apache安装信息, 配置安装后目录,模块动态配置,允许重写重配置
# ./configure --prefix=/usr/local/apache --enable-modules=so --enable-rewrite
查看配置参数:
./configure --help
make && make install

4、启动apache
cd /usr/local/apache/bin/
./apachectl start
(可能报错,说域名问题)
vim httpd.conf        
找到“#ServerName www.example.com:80”,在下面加上这一行
ServerName localhost:80

5、重启apache
./apachectl stop
./apachectl start

6、配置成服务
因为每次启动都需要到安装目录下。有点麻烦。
所以最好配置成一个服务,配置方法见另一篇:
http://fffo.blog.163.com/blog/static/21191306820121129928227/

查看apache加载的模块
/usr/sbin/apachectl -t -D DUMP_MODULES
安装  配置  mysql

1、下载
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.35-linux2.6-x86_64.tar.gz
2、解压
tar -zxvf mysql-5.5.35-linux2.6-x86_64.tar.gz
3、移动到/usr/local下,(mysql指定目录)
mv  mysql-5.5.35-linux2.6-x86_64 /usr/local/mysql
4、创建一个安装用户
groupadd mysql //创建mysql组  
useradd -r -g mysql mysql  //创建mysql用户并指定其为mysql组  
chown -R mysql:mysql 
/usr/local/mysql
 //改变mysql目录和目录下的所有文件和目录的属组属主为mysql  
5、配置mysql
./scripts/mysql_install_db --user=mysql
6、配置服务
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
7、启动服务
service mysqld start
8、客户端连接
./bin/mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
经过测试发现每次service mysqld start的时候mysql服务器生成了/var/lib/mysql/mysql.sock文件,而客户端连接本地服务器的时候会去/tmp/mysql.sock找,所以找不到(远程连接的时候不会,如mysql -h 127.0.0.1 -u root)。
解决方法1:在/etc/my.cnf中加入红色部分
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
socket=/var/lib/mysql/mysql.sock

解决方法2:创建一个软链接(建议用这个方法,因为很多程序默认用这个路径/tmp/mysql.sock)
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
注意tmp目录下的东西会被定时删除,所以还需要一个操作来保证mysql.lock不会被删除
 vim /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
        -X '/tmp/hsperfdata_*' -X '/tmp/mysql.sock' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
        /usr/sbin/tmpwatch "$flags" -f 30d "$d"
    fi
done

tmp定时清扫参照:http://fffo.blog.163.com/blog/static/21191306820143233379148/

如果没有/etc/my.cnf文件不存在可以从mysql的安装目录中的support-files目下找一个参数文件,照着上面的格式改改就可以了。

安装  配置  php
1、下载apache
wget http://www.php.net/get/php-5.4.23.tar.gz/from/this/mirror
2、解压apache
tar -zxvf php-5.4.23.tar.gz
3、进入解压后的目录
yum install -y libxml2 libxml2-devel openssl openssl-devel openldap-servers openldap-clients php-ldap

cp -frp /usr/lib64/libldap* /usr/lib/

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --with-mysqli --with-freetype-dir --with-zlib --with-libxml-dir --enable-xml --enable-mbregex --enable-mbstring --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-zlib --enable-pdo --with-pdo-mysql --with-gettext
PS:
经过测试发现,第二个参数用于生成让apache2.x支持php的库文件(libphp5.so),并自动放入apache安装目录的modules目录下,同时会在apache的参数文件httpd.conf中追加一句话
LoadModule php5_module        modules/libphp5.so
所以第二个参数的值(/usr/local/apache/bin/apxs),应该是apache的模块配置脚本
configer 参数说明:http://www.qianyunlai.com/blog/438.html
或者
./configer --help
make && make install
4、配置时区
vim /usr/local/php/etc/php.ini
date.timezone = Asia/Shanghai
5、测试
make  test
6、设置debug日志
log_errors = On
error_log = /usr/local/php/log.log

7、最后要让apache识别出php文件,
让apache识别index.php索引文件
 DirectoryIndex index.html index.php index.php5

让apache识别xxx.php索引文件
在httpd.conf中找到 AddType application在其下添加如下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PS:每当客户请求网页的时候,apache先确定是那种类型的网页(动态,静态),因为加了AddType application/x-httpd-php .php这句话,apache已经可以认出php了,确定是php文件后,会调用modles目录中的libphp5.so去解释php程序,然后apache将解释之后的结果返回给客户端

0 0
原创粉丝点击