lamp即 apache + mysql + php,是互联网常用架构。
要注意的是php依赖apache和mysql,所以要最后安装。系统环境为CentOS6.5
安装mysql
这里选择免编译安装,可以在官网找到。在mysql5.5之后的版本不在开源了,但还可以选择mariadb的分支版本作为这个架构的代替。接下来就可以开始mysql的安装了。
下载mysql
1
|
wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz
|
这个版本有点低,可以自己选择合适版本
解压
1
|
tar -zxvf tar -zxvf mysql-5.1.73-linux-i686-glibc23.tar.gz
|
移动到指定目录
1
|
mv mysql-5.1.73-linux-i686-glibc23 /usr/local/mysql
|
创建mysql用户,但不允许登录,不创建家目录
1
|
useradd -s /sbin/nologin -M mysql
|
-s
表示指定bash,这里出于安全性考虑设置不允许登录,-M
不创建家目录
创建数据库目录,并改为mysql属主
1
2
|
mkdir /data/mysql -pv
chown -R mysql:mysql /data/mysql
|
初始化mysql
1
2
|
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
|
--user=*
是指定用户mysql,--datadir=*
是指定数据库目录。可以使用echo $?
验证命令执行结果是否正确,0为正确。
mysql配置文件
1
2
3
4
5
6
7
|
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
vim /etc/my.cnf
......
port = 3306 #监听端口
socket = /tmp/mysql.sock #socket
.....
log-bin=mysql-bin #修改mysql数据库时,记录日志
|
mysql启动脚本
1
2
3
4
5
|
cp /usr/local/mysql/mysql.server /etc/init.d/mysqld
vim /etc/init.d/mysqld
basedir=/usr/local/mysql #指定安装目录
datadir=/data/mysql #指定数据库目录
|
设置开机启动
1
|
chkconfig --add mysqld;chkconfig mysqld on 开机启动
|
编译安装mysql时编译参数记录在cat /usr/local/mysql/bin/mysqlbug |grep -i configure
安装httpd
使用apache的httpd提供网络web服务
下载httpd
1
|
wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz
|
解压
1
|
tar -zxvf httpd-2.2.31.tar.gz
|
编译安装
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 编译
./configure --prefix=/usr/local/apache \
>-with-include-apr --enable-so \
>--enable-deflate=shared \
>--enable-rewrite=shared \
>--enable-expires=shared \
>-with-pcre \
>-with-mpm=prefork
make
# 安装
make install
|
编译选项记录在/usr/local/apache/build/config.nice
中
启动httpd
1
|
/usr/local/apache/bin/apachectl start
|
- /usr/local/apache/bin/apachectl -M :查看各种库
- 静态库(编译时直接放入下列文件)
/usr/local/apache/bin/httpd
- 动态库(用到时加载)
/usr/local/apache/modules/
- /usr/local/apache/bin/apachectl -l :查看静态库以及apache工作模式
- /usr/local/apache/bin/apachectl -t :查看配置文件有无语法错误
- 配置文件 /usr/local/apache/conf/httpd.conf
- /usr/local/apache/bin/apachectl graceful 加载配置文件
启动httpd时的警告:
1
2
|
httpd: apr_sockaddr_info_get() failed for 【linux】
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
|
解决方法(问题在于主机名不匹配)
警告1 :在/etc/hosts中的127.0.0.1行后添加linux
警告2 :在httpd的配置文件/usr/local/apache/conf/httpd.conf中的ServerName行中改为 ServerName linux:80
开机启动
修改启动脚本
1
2
3
4
5
6
7
|
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd
在#!/bin/bash下加入
#chkconfig:345 61 61
#description:Apache httpd
|
设置开机启动
1
2
|
chkconfig --add httpd
chkconfig --level 345 httpd on
|
安装php
下载php
1
|
wget http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror
|
解压
1
2
|
mv mirror php-5.4.45.tar.bz2
tar -jxvf php-5.4.45.tar.bz2
|
编译安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
cd php-5.4.45
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6
#出现错误:
configure: error: jpeglib.h not found.
# 解决方法:
yum install -y libjpeg-devel
#出现错误:
configure: error: mcrypt.h not found.
#解决方法:
wget http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm #CentOS的yum扩展源
rpm -ivh epel-release-6-8_32.noarch.rpm
yum install -y libmcrypt-devel
make
make install
|
- /usr/local/php/bin/php -m :查看静态模块
- /usr/local/php/bin/php -i :查看相关配置
修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
cp /usr/src/php-5.4.45/php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/apache/conf/httpd.conf
在
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
两行下加入
AddType application/x-httpd-php .php
将
DirectoryIndex index.html
后添加 1.php
DirectoryIndex index.html 1.php
|
测试
在Apache的安装文件中添加php文件
/usr/local/apache/htdocs/目录下创建
vim 1.php
1
2
3
|
<?php
echo "Welcome to 1.php" ;
?>
|