Centos 6.4 搭建lamp环境(系列1)
大部分软件我们都是编译安装的,编译安装的是可以自行调整编译参数,自己可以调整需要的结果,也比较安全。
网上yum安装的博客比较多,编译安装的也不少,废话不多说。
环境版本:
系统环境:Centos 6.4 64位
apache版本:apache 2.29
php版本:php 5.3.27
mysql版本:5.1.72
一、mysql编译安装:
扯两句,mysql服务器我们一般是单独的一台服务器,如果是集群环境这里就简单安装一下就行,如果是单机提供lamp服务的话,就连库都生成吧。
mkdir /tools
cd /tools/
yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* mysql-devel #yum这些库后面安装就不会报莫名的错误说缺这缺那了
wget downloads.mysql.com/archives/get/file/mysql-5.1.72.tar.gz #官网下载地址,软件包尽量官网下载,不容易下载带木马的软件包到服务器
useradd mysql -s /sbin/nologin -M #创建mysql用户
tar zxf mysql-5.1.72.tar.gz
cd mysql-5.1.72
./configure –prefix=/application/mysql5.1.72 \
–with-unix-socket-path=/tmp/mysql.sock \
–localstatedir=/mysqldata –enable-assembler \
–enable-thread-safe-client \
–with-mysqld-user=mysql \
–with-big-tables –without-debug –with-pthread \
–with-extra-charsets=complex –with-readline \
–with-ssl –with-embedded-server \
–enable-local-infile –with-plugins=partition,innobase \
–with-mysqld-ldflags=-all-static \
–with-client-ldflags=-all-static
make && make install
#–prefix=/application/mysql5.1.72 指定软件位置,一般我们都是带软件版本创建目录方便管理
#–with-unix-socket-path=/tmp/mysql.sock 指定sock套接字的位置,就安装到/tmp下面就好,好多软件都是默认是/tmp下面是找mysql.sock,你变了位置到时候还要创建软连接
#–localstatedir=/mysqldata 指定数据库所在的目录,一般是指定到我们的一个比较大的挂载分区
#–enable-assembler 使用汇编模式,可以提高性能
#–enable-thread-safe-client 使用编译客户端(让客户端支持线程的意思)
#–with-mysqld-user=mysql 指定mysqld守护进程的用户
#–with-big-tables 启用32位平台对4G大表的支持
#–without-debug 编译为产品版,放弃debugging代码
#–with-pthread 强制使用pthread类库
#–with-extra-charsets=complex 安装所有的扩展字符集,这句话很有用的,我们安装mysql一般会指定字符集是utf8之类的,等后面有些字符数据库不支持你还要重新编译,这样就避免那种情况了。
#–with-readline 使用行编辑库
#–with-ssl 启用SSL的支持
#–with-embedded-server 编译embedded-server,构建嵌入式MySQL库
#–enable-local-infile 允许从本地导入数据
#–with-plugins=partition,innobase MySQL服务器端支持的存储引擎组件(默认为空)
#–with-mysqld-ldflags=-all-static 静态编译MySQL服务器端(静态链接提高13%性能)
#–with-client-ldflags=-all-static 静态编译MySQL客户端(静态链接提高13%性能)
注意:根据自己的实际需求来选择编译参数。
ln -s /application/mysql5.1.72 /application/mysql #做个软连接方便管理
cp support-files/my-small.cnf /etc/my.cnf #mysql的配置文件
cp support-files/mysql.server /etc/init.d/mysqld #mysql的启动文件
chmod 755 /etc/init.d/mysqld
chown mysql:root /etc/my.cnf
mkdir /mysqldata #创建数据库文件
chown mysql:root /mysqldata #给数据库目录授权不然容易报错
/application/mysql/bin/mysql_install_db –defaults-file=/etc/my.cnf –basedir=/application/mysql5.1.72/ –datadir=/mysqldata –user=mysql #初始化数据库,提示信息出现两个OK为成功
vi /etc/my.cnf #更改配置文件,先简单修改几个地方
[client]
default-character-set=utf8 #前面编译没有指定默认字符集这里设置一下,连接以utf8字符集连接
[mysqld]
default-character-set=utf8 #数据库默认的字符集是utf8,不然是latin1
datadir=/mysqldata #这里不指定一下数据库的位置的话会报错
[mysql]
default-character-set=utf8 #客户端也是默认utf8字符集
vi /etc/profile #修改环境变量
PATH=$PATH:/application/mysql/bin #加载mysql的环境变量
export PATH
. /etc/profile #使生效
至此mysql的编译和配置文件修改完毕。
/etc/init.d/mysqld start #启动mysql
Starting MySQL. SUCCESS! #这提示启动成功
/application/mysql/bin/mysqladmin password 123456 #mysql默认是空密码,这里设置新密码为123456,生产环境mysql的密码要设置的尽量复杂
下面是看下结果,我们mysql登录啊版本啊,默认字符集啊:
二、apache的编译安装
cd /tools/
wget wget apache.fayea.com//httpd/httpd-2.2.29.tar.gz
tar zxf httpd-2.2.29.tar.gz
cd httpd-2.2.29
./configure –prefix=/application/apache2.2.29 –enable-deflate –enable-expires –enable-headers –enable-modules=most –enable-ssl –enable-so –with-mpm=worker –enable-rewrite
#–prefix=/application/apache2.2.29 指定安装目录
#–enable-deflate 支持网页压缩
#–enable-expires 支持网页缓存
#–enable-headers 提供允许对HTTP请求头的控制
#–enable-modules=most 支持大多数模块
#–enable-ssl 基于ssl加密传输
#–enable-so 启用动态模块加载
#–with-mpm=worker 让apache以worker(线程级)方式运行,2.2默认是prefork(进程式)工作模式
#–enable-rewrite 允许URL重写
插一嘴,这样安装大部分模块都是静态加载。因为有–enable-modules=most这句话,它加载了大部分的模块。如果用–enable-mods-shared=all换掉就是动态加载。动态加载就是需要这个模块的时候apache会去调用,不是预启动的形式,而且还要去apache配置文件里面制定加载哪个模块。如果只想指定某些模块为静态加载,就要指定模块后面加=static,静态加载呢就是这些模块就已经预启动了等待你apache的指示,没有什么准备时间,你命令一到我就执行,响应很快但是有点耗资源。
make && make install
ln -s /application/apache2.2.29 /application/apache
下面两张图,第一张图是动态加载的效果,第二章图是静态加载的效果
三、编译安装php
cd /tools/
yum install -y zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-dev freetype-devel libpng-devel gd-devel curl-devel libxslt-devel libxml2 libxml2-devel
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure –prefix=/usr/local/libiconv
make && make install
cd /tools
wget cn2.php.net/get/php-5.3.27.tar.gz/from/this/mirror
tar zxf php-5.3.27.tar.gz
cd php-5.3.27
./configure \
–prefix=/application/php5.3.27 \
–with-apxs2=/application/apache/bin/apxs \
–with-mysql=/application/mysql \
–with-ttf \
–with-xmlrpc \
–with-openssl \
–with-zlib \
–with-freetype-dir \
–with-gd \
–with-jpeg-dir \
–with-png-dir \
–with-iconv=/usr/local/libiconv \
–enable-short-tags \
–enable-sockets \
–enable-zend-multibyte \
–enable-soap \
–enable-mbstring \
–enable-static \
–enable-gd-native-ttf \
–with-curl \
–enable-memcache \
–with-xsl \
–enable-ftp \
–with-libxml-dir
make&&make install
ln -s /application/php5.3.27 /application/php
cp php.ini-production /application/php5.3.27/lib/php.ini
#–prefix=/application/php5.3.27 指定php的安装位置
#–with-apxs2=/application/apache/bin/apxs 整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块,这样apche就能加载php了
#–with-mysql=/application/mysql 指定mysql安装目录,对mysql的支持
#–with-ttf 打开freetype1.*的支持
#–with-xmlrpc 打开xml-rpc的c语言
#–with-openssl openssl的支持,加密传输https时用到的
#–with-zlib 打开对zip的支持
#–with-freetype-dir 打开对freetype字体库的支持
#–with-gd 打开gd库的支持
#–with-jpeg-dir 打开对jpeg图片的支持
#–with-png-dir 打开对png图片的支持
#–with-iconv=/usr/local/libiconv 选项指令 –with-iconv-dir 用于 PHP 编译时指定 iconv 在系统里的路径,否则会扫描默认路径
#–enable-short-tags 让php支持短标签
#–enable-sockets 打开 sockets 支持
#–enable-zend-multibyte 支持zend的多字节
#–enable-soap soap扩展主要用来处理RPC形式的Web services
#–enable-mbstring 多字节,字符串的支持
#–enable-static 生成静态链接库
#–enable-gd-native-ttf 支持TrueType字符串函数库
#–with-curl 打开curl浏览工具的支持
#–enable-memcache 为PHP扩展安装memcache模块
#–with-xsl 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
#–enable-ftp 打开ftp的支持
#–with-libxml-dir 打开libxml2库的支持
四、修改apache配置文件使之能够加载php文件
vi /application/apache/conf/httpd.conf +100
serverName 192.168.1.204:80 #这里应该是域名的但是指定域名咱们还要指定本地hosts文件,麻烦,这里就指定了你自己的本地IP加80端口了
vi /application/apache/conf/httpd.conf +311
AddType application/x-httpd-php .php .phtml #加上这两句话
AddType application/x-httpd-php-source .phps
vi /application/apache/conf/httpd.conf +168
DirectoryIndex index.php index.html #index.php是后加的,是默认先优先调用index.php文件
/application/apache/bin/apachectl start #启动apache
lsof -i :80 #查看端口是否启动
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 5866 root 4u IPv6 387783 0t0 TCP *:http (LISTEN)
httpd 5869 daemon 4u IPv6 387783 0t0 TCP *:http (LISTEN)
httpd 5870 daemon 4u IPv6 387783 0t0 TCP *:http (LISTEN)
httpd 5871 daemon 4u IPv6 387783 0t0 TCP *:http (LISTEN)
vi /application/apache/htdocs/index.php #编写一个调用php的测试脚本
<?php
phpinfo();
vi /application/apache2.2.29/htdocs/testmysql.php #编写一个调用mysql的测试脚本
<?php
$link=MySQL_connect(‘localhost’,’root’,’123456′);
if(!$link) echo “Error !”;
else echo “Ok!”;
MySQL_close();
下面我们用两幅截图来查看一下效果:
至此我们简单的一个lamp环境搭建完毕,接下来系列2是围绕优化方面写!