1. 安装mysql
cd /usr/local/src/ 
wget  http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.47-linux2.6-x86_64.tar.gz

tar zxvf  mysql-5.5.47-linux2.6-x86_64.tar.gz

useradd -s /sbin/nologin -M mysql (创建mysql账户,-s不让mysql登录,-M不创建家目录)

mv mysql-5.5.47-linux2.6-x86_64 /usr/local/mysql  (移动再重命名)
cd /usr/local/mysql 
mkdir -p /data/mysql (数据存放)
chown -R mysql:mysql /data/mysql (权限更改)
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql (初始化数据库,指定用户和存放数据的路劲)

用echo $?可以查看是否安装成功,返回值0,或者有两个OK也说明安装成功了
cp support-files/my-large.cnf /etc/my.cnf (my.cnf是装系统时候提供的,这个是没用的,现在拷贝过去)

vim /etc/my.cnf(注释掉了三个,不去记录binlog)

LAMP架构搭建与优化(1.1-1.5)_mysql

prot跟socket这两个是可以通信的
cp support-files/mysql.server /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld 
vim /etc/init.d/mysqld   #修改datadir

LAMP架构搭建与优化(1.1-1.5)_数据库_02

chkconfig --add mysqld (把mysqld加入到服务列表中)
chkconfig mysqld on 
service mysqld start 
ps aux|grep mysql

netstat -lnp|grep mysql

遇到问题要安装yum install -y libaio



重新安装编译时,要删除/etc/my.cnf和/usr/local/mysql才行。



2.  Apache编译安装

wget  http://archive.apache.org/dist/httpd/httpd-2.2.27.tar.bz2
tar jvxf httpd-2.2.27.tar.bz2  
cd httpd-2.2.27

vim INSTALL(可以参考安装文档)

./configure \
--prefix=/usr/local/apache2 \   (指定安装Apache安装在哪里)
--with-included-apr \            (apr是httpd安装的一个依赖包,它可以跨平台去运作)
--enable-so \
--enable-deflate=shared \        (三个shared是以动态共享的模式来安装)
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre                      (正则相关的一个库)

make && make install 
/usr/local/apache2/bin/apachectl start (启动Apache,restart重启,stop停止,graceful重新加载配置文件,restart是把进程杀掉,再启动,而graceful是把配置文件重新加载)

ps aux|grep httpd

/usr/local/apache2/bin/apachectl -M (把模块列出来,有静态,动态加载的模块)

ls /usr/local/apache2/modules/ (以.so结尾就是动态共享模块的名字,用到动态模块才去加载)

ls /usr/local/apache2/bin/httpd  (静态模块直接塞到httpd这个文件里面,动态模块没有在里面)

du -sh /usr/local/apache2/bin/httpd

/usr/local/apache2/bin/apachectl -l (只是把静态的模块列出来)

./configure --help|less (可以查看Apache的工作模式,搜索/--with-mpm,常用的有worker和prefork这两个模式,2.4版本默认的是event,2.2版本默认的是prefork)

/usr/local/apache2/bin/apachectl -t (是用来检测配置文件是不是有语法错误)

ls /usr/local/apache2/conf/httpd.conf (配置文件)


遇到问题要安装yum isntall -y gcc  yum isntall -y zlib-devel


3.Apache的mpm工作模式

/usr/local/apache2/bin/apachectl -l    可以看到是在哪个模式下运行

prefork(其实是子进程,Ss主进程派生出很多的S子进程)

worker[进程跟线程同时存在](每个子进程下面还有线程,进程跟线程主要的区别在于线程是进程下面的派生出来的更小单位的方式,那么线程下,一个进程的内存会共享给其他线程去使用,一旦进程崩溃,下面的线程都会受到牵连,好处就是可以共享一段内存,在高并发情况下,而prefork:每个子进程都有一个单独的内存,如果一个进程发生了故障,那么它不会影响其他的进程,但是在高并发情况下,会比worker工作模式占内存大得)

event(是worker的升级版,也是线程的形式)

./configure --help| grep -A3 'with-mpm' 

想换工作模式时,在编译时加上这个参数--with-mpm=worker|event|perfork


4.  安装php
wget http://cn2.php.net/distributions/php-5.6.18.tar.gz

tar zxf php-5.6.18.tar.gz

cd php-5.6.18

./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \(它是一个自动的,帮助我们去安装扩展模块的,安装动态可能就需要这个工具)
--with-config-file-path=/usr/local/php/etc  \
--with-mysql=/usr/local/mysql \   (php也是依赖于mysql,所以先要安装mysql和Apache,再安装php)
--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
make && make install 
rpm -ivh 'http://www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_64.noarch.rpm '(安装扩展源)

yum list |grep -i mcrypt

ls /usr/local/apache2/modules/ (会多出一个libphp.so的动态模块文件,就是因为apxs)

/usr/local/php/bin/php -m (可以查看到它的模块,这些都是静态加载的模块,也有动态加载的模块)

/usr/local/php/bin/php -i (可以看一些相关的配置)



安装过程遇到的问题:yum install -y libxml2-devel  yum install -y openssl-devel  yum install -y bzip2-devel  yum install -y libjpeg-devel  yum install -y libpng-devel  yum install -y freetype-devel


5. 测试php解析

/usr/local/apache2/bin/apachectl -M (可以看到加载了php5_modole模块)

/usr/local/apache2/bin/apachectl restart

cd /usr/local/apache2/htdocs  (访问网页放在这个目录下)

vim 1.php

<?php
    echo "php解析正常";
?>
保存后,继续测试:

curl localhost/1.php


vim info.php

<?php

phpinfo();

?>

在浏览器输入网址192.168.0.188/info.php跟在/usr/local/php/bin/php -i|less效果是一样的,可以看到编译php的参数

cat /usr/local/apache2/build/config.nice  (可以查看到编译Apache的参数)

cat /usr/local/mysql/bin/mysqlbug|grep configure (可以查看到编译mysql的参数)


Linux下查看Nginx、Napache、MySQL、PHP的编译参数的命令如下:

1、nginx编译参数:
#/usr/local/nginx/sbin/nginx -V
2、apache编译参数:
# cat /usr/local/apache/build/config.nice
3、php编译参数:
# /usr/local/php/bin/php -i |grep configure
4、mysql编译参数:
# cat /usr/local/mysql/bin/mysqlbug|grep configure


vim /usr/local/apache2/conf/httpd.conf

配置apache结合php

找到:
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
改为:
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>


找到:
AddType application/x-gzip .gz .tgz
在该行下面添加:

AddType application/x-httpd-php .php
找到:
<IfModule dir_module>
    DirectoryIndex index.html (索引页)
</IfModule>
将该行改为:
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>
找到:
#ServerName www.example.com:80
修改为:
ServerName localhost:80

cp /usr/local/src/php-5.6.18/php.ini-production  /usr/local/php/etc/php.ini(拷贝php.ini的配置文件)
/usr/local/apache2/bin/apachectl graceful

在浏览器输入192.168.0.188/info.php就可以看到加载到的php.ini的配置文件

curl 192.168.0.188/info.php