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
后面配置步骤与mysql第7章相同……………..
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
重新安装libxml2和libxml2-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
整合 apache,apxs功能是使用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-rpc的c语言
--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 dba的gdbm支持
--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",一般设置为64或128
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整个实施环境(nginx、php、mysql、tomcat、jdk、服务器多域名配置)
请参考我的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 |