Linux LAMP 企业架构

Linux+Apache+Php+Mysql

 

yum  install httpd  httpd-devel  mysql mysql-server mysql-devel  php php-devel -y

 

 

1.1.安装apache

 

l  安装方式2:源码安装LAMP之Apache

yum install apr-devel apr-util-devel gcc*–y;      安装依赖包

cd  /tmp/ ; wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.bz2 ; tar xvf  httpd-2.2.31.tar.bz2 ; cd httpd-2.2.31 ; ./configure--prefix=/usr/local/apache --enable-so --enable-rewrite  &&make&&make install

 

1.2.安装mysql

 

  • 安装方式1:yuminstall –y mysql-server  mysql-devel mysql

  • 安装方式2:源码安装LAMP之MySQL

cd  /tmp/ ;wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz ; tar xzf mysql-5.1.63.tar.gz ; cdmysql-5.1.63 ; ./configure --prefix=/usr/local/mysql --enable-assembler &&make&&make install

后面配置步骤与mysql7章相同……………..

 

yum install ncurses-devel  -y

wget  http://ftp.gnu.org/gnu/ncurses/ncurses-4.2.tar.gz

进入mysql数据库创建及授权命令如下:

create database discuz charset=utf8;

grant all on discuz.* to root@'localhost' identified by"123456";

 

 

 

 

1.3.安装php

  • 安装方式1:yum php php-devel libxml2 libxml2-devel -y

  • 安装方式2:源码安装LAMP之PHP

 yuminstall libxml2 libxml2-devel –y  安装依赖

wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2 ;tar jxf  php-5.3.28.tar.bz2

 ./configure --prefix=/usr/local/php5--with-config-file-path=/usr/local/php5/etc--with-apxs2=/usr/local/apache/bin/apxs--with-mysql=/usr/local/mysql/ &&make &&make install

 

1.4.源码安装Apache+PHP整合

整合apache+php环境,修改httpd.conf配置文件,然后加入如下语句:

LoadModule     php5_modulemodules/libphp5.so (默认已存在)

AddType    application/x-httpd-php  .php

DirectoryIndex   index.phpindex.html (把index.php加入index.html之前)

然后在/usr/local/apache/htdocs目录下创建index.php测试页面,执行如下命令:

Vi /usr/local/apache/htdocs/index.php

phpinfo();

?>

重新启动apache服务,通过IP访问界面如下图,即代表LAMP环境搭建成功。

 

报错:sendos 5.5 安装 PHP 5.4.3 configureerror xml2-config not found. please check your libxml2 installation 错误

 

检查是否安装了libxm

[root@rh-linux software]# rpm -qa |grep  libxml2
libxml2-2.6.26-2.1.12
libxml2-python-2.6.26-2.1.12

 

重新安装libxml2libxml2-devel, yum安装的时候发现新版本会提示更新,需要更新的可以更新,不要跳过就行了。

[root@rh-linux /]# yum install libxml2

[root@rh-linux /]# yum install libxml2-devel -y

 

安装完之后查找xml2-config文件是否存在

[root@rh-linux /] # find / -name"xml2-config"
/usr/bin/xml2-config

 

如果存在的话重新安装php

[root@rh-linux  php-5.4.3]# ./configure

[root@rh-linux  php-5.4.3]# make

[root@rh-linux  php-5.4.3]# make install

安装好php后别忘了配置下php.ini 文件

 

 

 

 

具体参数含义可以用./configure --help来查看。

列表如下(部分参数未得到解释):

--prefix=/usr/local/php      # 指定 php 安装目录

--with-config-file-path=/usr/local/php/etc    # 指定php.ini位置

--with-mysql=/usr/local/mysql     # mysql安装目录,对mysql的支持

mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。

--with-mysqli=/usr/local/mysql/bin/mysql_config  

整合 apacheapxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块

--with-apxs2=/usr/local/apache/bin/apxs 

# 选项指令 --with-iconv-dir 用于 PHP 编译时指定 iconv 在系统里的路径,否则会扫描默认路径。

--with-iconv-dir=/usr/local 

 

--with-freetype-dir   打开对freetype字体库的支持 

--with-jpeg-dir   打开对jpeg图片的支持 

--with-png-dir   打开对png图片的支持 

--with-zlib-dir   打开zlib库的支持,用于http压缩传输

--with-libxml-dir   打开libxml2库的支持

--disable-rpath    关闭额外的运行库文件 

--enable-bcmath    打开图片大小调整,用到zabbix监控的时候用到了这个模块

--enable-shmop --enable-sysvsem  这样就使得你的PHP系统可以处理相关的IPC函数了。

--enable-inline-optimization  优化线程

--with-curl    打开curl浏览工具的支持 

--with-curlwrappers    运用curl工具打开url 

--enable-mbregex

--enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序

--enable-mbstring    多字节,字符串的支持 

--with-mcrypt                   mcrypt算法扩展

--with-mhash                    mhash算法扩展

--with-gd    打开gd库的支持 

--enable-gd-native-ttf   支持TrueType字符串函数库

--with-openssl      openssl的支持,加密传输https时用到的

--enable-pcntl   freeTDS需要用到的,可能是链接mssql 才用到

--enable-sockets     打开 sockets 支持

--with-xmlrpc    打开xml-rpcc语言 

--enable-zip   打开对zip的支持 

--enable-ftp   打开ftp的支持 

 

--with-bz2    打开对bz2文件的支持        

--without-iconv   关闭iconv函数,字符集间的转换 

--with-ttf     打开freetype1.*的支持,可以不加了 

--with-xsl     打开XSLT 文件支持,扩展了libXML2,需要libxslt软件 

--with-gettext     打开gnu gettext 支持,编码库用到 

--with-pear    打开pear命令的支持,PHP扩展用的 

--enable-calendar    打开日历扩展功能

--enable-exif    图片的元数据支持 

--enable-magic-quotes    魔术引用的支持 

 

--disable-debug    关闭调试模式 

--with-mime-magic=/usr/share/file/magic.mime     魔术头文件位置

CGI方式安装才用的参数

 

--enable-fastCGI           支持fastcgi方式启动PHP

--enable-force-CGI-redirect        重定向方式启动PHP

--with-ncurses         支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库

--with-gmp  应该是支持一种规范

--enable-dbase                    建立DBA 作为共享模块

--with-pcre-dir=/usr/local/bin/pcre-config     perl的正则库案安装位置

--disable-dmalloc

--with-gdbm                    dbagdbm支持

--enable-sigchild

--enable-sysvshm

--enable-zend-multibyte         支持zend的多字节

--enable-wddx

--enable-soap

 

 

 

 

 

1.5.源码安装DISCUZ论坛

下载discuz源码包文件,然后解压:

wget http://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_SC_UTF8.zip

解压discuz程序包:unzipDiscuz_X3.1_SC_UTF8.zip -d /usr/local/apache/htdocs/

重命名程序文件:cd /usr/local/apache/htdocs/ ;mvupload/* .

赋予discuz目录完全访问权限: Chmod777 -R data/ uc_server/ config/ uc_client/

 

 

1.6.LAMP多主机部署

 

1.6.1. 安装apache php5 A台主机

# httpd安装

yum installhttpd httpd-devel php-devel php php-mysql

# php安装

./configure --prefix=/usr/local/php5--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

--with-apxs2=/usr/local/apache/bin/apxs;make -j8;make -j8 install

1.6.2.  安装mysql到第B主机

 cd  /tmp/ ;wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz ; tar xzf mysql-5.1.63.tar.gz ; cdmysql-5.1.63 ; ./configure --prefix=/usr/local/mysql --enable-assembler &&make&&make install

 

 

后面配置与单台配置相同,此处省略…………..

 

 

 

1.7.PHP优化参数

 

1)   优化PHP服务器

eAccelerator、APC、Xcache、ZEND属于一个免费的开源php加速、优化、编译和动态缓存项目,原理和apc类似,都是通过缓存php编译后的opcode代码来提高php脚本的执行性能。

目前最新的版本下载地址:

https://codeload.github.com/eaccelerator/eaccelerator/legacy.tar.gz/master

tar -xzf master ;cd

eaccelerator-eaccelerator-42067ac/;phpize;

./configure --enable-eaccelerator=shared--with-php-config=/usr/bin/php-config

make && makeinstall

然后在/etc/php.ini末尾加入如下代码:

extension="/usr/lib64/php/modules/eaccelerator.so"

 

eaccelerator.shm_size="64"

#   指定 eAccelerator 能够使用的共享内存数量,单位:MB

#   "0" 代表操作系统默认,默认值为 "0",一般设置为64128

 

eaccelerator.cache_dir="/data/eaccelerator"

用户磁盘缓存的目录。eAccelerator 在该目录中存储预编译代码、session 数据、内容等。相同

的数据也可以存储于共享内存中(以获得更快的存取速度)。默认值为 "/tmp/eaccelerator"

 

eaccelerator.enable="1"

开启或关闭 eAccelerator"1" 为开启,"0" 为关闭。默认值为 "1"

 

eaccelerator.optimizer="1"

开启或关闭内部优化器,可以提升代码执行速度。"1" 为开启,"0" 为关闭。默认值为 "1"

 

eaccelerator.check_mtime="1"

开启或关闭 PHP 文件改动检查。"1" 为开启,"0" 为关闭。如果您想要在修改后重新编译

#  PHP程序则需要设置为 "1"。默认值为 "1"

 

eaccelerator.debug="0"

开启或关闭调试日志记录。"1" 为开启,"0" 为关闭。默认值为 "0"

 

eaccelerator.filter=""

# 判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型(如 "*.php *.phtml"等),如果参数以 "!" 开头,则匹配这些参数的文件被忽略缓存。默认值为 "",即,所有 PHP 文件都将被缓存。

 

eaccelerator.shm_max="0"

# 当使用 " eaccelerator_put() " 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值,单位:字节 (10240, 10K, 1M)"0" 为不限制。默认值为 "0"

 

eaccelerator.shm_ttl="0"

# eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除所有在最后 "shm_ttl" 秒内无法存取的脚本缓存。默认值为 "0",即:不从共享内春中删除任何缓存文件。

 

eaccelerator.shm_only="0"

# 允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 "0",即:使用磁盘和共享内存进行缓存。

 

eaccelerator.compress="1"

# 允许或禁止压缩内容缓存。默认值为 "1",即:允许压缩。

 

eaccelerator.compress_level="9"

# 指定内容缓存的压缩等级。默认值为 "9",为最高等级

 

 

 

1.8.LAMP故障排错

1.8.1.PHP空白

short_open_tag = On

除此之外,还有可能是php版本兼容性导致的问题哦。

 

1.8.2.mysql-binlog数据恢复:

查看binlog日志的命令:mysqlbinlog   mysql-bin.000001|more

备份:cp   mysql-bin.000001  /data/back/20150411/

恢复1:mysqlbinlog --start-position=215  --stop-position=336  mysql-bin.000001|mysql -uroot -p

336--776 插入了4条记录。

恢复2:mysqlbinlog--start-position=336 --stop-position=776 mysql-bin.000001 |mysql -uroot -p

mysqldump -uroot-p123456  jfedu  > /data/backup/jfedu.sql

1.8.3.Mysql慢查询

查看慢查询日志是否开启:

show variables like"%slow%";

查询一条语句花费的时间超过规定的时间,然后将该条语句记录到慢查询日志里面。

select * from t1 limit1; 超过10s

如何去优化,这条语句的功能是获取用户名,优化后的语句:

select name from t1limit 1;

如何去开启慢查询功能:

在mysql里面执行:setglobal slow_query_log=on;

在/etc/my.cnf配置如下:

log-slow-queries =/var/run/mysqld/slow.log

long_query_time = 5

log-queries-not-using-indexes

然后重启mysql服务即可。

 

查找libmysqlclient,发现是在/usr/lib64/mysql/目录内的libmysqlclient.so.15.0.0做的软连接,PHP默认是去的/usr/lib/搜索,所以没有找到.
解决办法就是:
cp /usr/lib64/mysql/* /usr/lib/mysql/
然后进行./configure即可,如果服务器没有/usr/lib/mysql/ 目录,则在/usr/lib/目录下创建mysql目录即可

1.8.3.1. 环境说明

如果你需要搭建Linux整个实施环境(nginxphpmysqltomcatjdk、服务器多域名配置)
请参考我的Linux项目实施系列教程:
CenterOS 6.3 64
位搭建nginx1.3+php5.4.3+mysql5.5.25+tomcat7+jdk7安装

 

 

1.8.4.主服务器故障,切换至从服务在

Vim /var/www/html/config/config_global.php

// ----------------------------  CONFIG DB ----------------------------- //

$_config['db']['1']['dbhost'] ='192.168.1.132';

$_config['db']['1']['dbuser'] = 'root';

$_config['db']['1']['dbpw'] = '123456';

$_config['db']['1']['dbcharset'] = 'utf8';

$_config['db']['1']['pconnect'] = '0';

$_config['db']['1']['dbname'] = 'bbs';

$_config['db']['1']['tablepre'] = 'pre_';

$_config['db']['slave'] = '';

$_config['db']['common']['slave_except_table']= '';

 

在从服务器上,添加授权

.grant all on *.* to ‘root’@’%’ identifiedby ‘123456’;

 

mysqli_connect()

不支持

advice_mysqli_connect