在Centos下编译安装前Nginx,处理小型程序。大程序交给Apache。
===================
第一步:Apache安装(已更新到2.2.24)
===================
英文文档:http://httpd.apache.org/docs/2.2/
中文文档: http://www.php100.com/manual/apache2/index.html
-------------------------------------------------
Apache下载地址:http://httpd.apache.org/download.cgi
[root@meeli02 yaoleisoft]#wget http://apache.dataguru.cn//httpd/httpd-2.2.24.tar.gz
[root@meeli02 yaoleisoft]# tar zxvf httpd-2.2.24.tar.gz
[root@meeli02 yaoleisoft]# cd ./httpd-2.2.24
[root@meeli02 httpd-2.2.24]# ./configure --prefix=/usr/local/webserver/apache2/ --enable-proxy --enable-ssl --enable-cgi --enable-rewrite --enable-so --enable-module=so
[root@meeli02 httpd-2.2.24]#make
[root@meeli02 httpd-2.2.24]#make install
-------------------------------------------------
启动
[root@meeli02 webserver]# /usr/local/webserver/apache2/bin/apachectl start
[root@meeli02 webserver]# vim /usr/local/webserver/apache2/conf/httpd.conf
重启
[root@meeli02 webserver]# /usr/local/webserver/apache2/bin/apachectl restart
如果报错说:
Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
需要修改/usr/local/apache2/conf/httpd.conf在
#serverName www.example.com:80
这个位置修改为:
serverName localhost:80
------------------------------------------------
防火墙设置
[root@meeli02 home]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@meeli02 home]# /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
[root@meeli02 home]# /etc/rc.d/init.d/iptables save
查看防火墙状态:
[root@meeli02 home]# service iptables status
停止防火墙:
[root@localhost ~]# service iptables stop
启动防火墙:
[root@localhost ~]# service iptables start
重启防火墙:
[root@localhost ~]# service iptables restart
永久关闭防火墙:
[root@localhost ~]# chkconfig iptables off
永久关闭后启用:
[root@localhost ~]# chkconfig iptables on
80端口被其他程序占用, fuser -k -n tcp 80 再重新启动。 ----------------------------------------------
卸载apache
如果是源码安装
#rm -rf 你的apache安装路径
同样作用于其他
YUM方式安装的,这样卸载:
#yum remove httpd
否则要用
#rpm -qa|grep httpd
一个个删除
# rpm -e ......
===================
第二步 Mysql安装MySQL 5.5.3-m3
===================
[root@meeli02 home]# /usr/sbin/groupadd mysql [root@meeli02 home]# /usr/sbin/useradd -g mysql mysql [root@meeli02 home]# tar zxvf mysql-5.5.3-m3.tar.gz
[root@meeli02 home]# cd mysql-5.5.3-m3/
[root@meeli02 mysql-5.5.3-m3]# make && make install [root@meeli02 mysql-5.5.3-m3]# chmod +w /usr/local/webserver/mysql [root@meeli02 mysql-5.5.3-m3]# chown -R mysql:mysql /usr/local/webserver/mysql [root@meeli02 mysql-5.5.3-m3]# cd ../
mkdir -p /home/mysql/3306/data/
mkdir -p /home/mysql/3306/binlog/
mkdir -p /home/mysql/3306/relaylog/
chown -R mysql:mysql /home/mysql/
以mysql用户帐号的身份建立数据表:
[root@meeli02 mysql]# /usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/home/mysql/3306/data --user=mysql
创建my.cnf配置文件:vi /data0/mysql/3306/my.cnf
创建管理MySQL数据库的shell脚本:vi /data0/mysql/3306/mysql
赋予shell脚本可执行权限:
chmod +x /home/mysql/3306/mysql
启动MySQL:
[root@meeli02 3306]# /home/mysql/3306/mysql start
通过命令行登录管理MySQL服务器(提示输入密码时直接回车):
/usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY 'zxcv123';
停止MySQL:
===================
第三步 PHP安装(已更新到5.4.16版)
===================
jpegsrc.v7.tar.gz
libpng-1.2.39.tar.gz
zlib-1.2.3.tar.gz
freetype-2.3.9.tar.gz
包安装介绍:http://blog.163.com/yuang_yu_ping/blog/static/469328762011532516810/
[root@meeli02 php-5.4.8]# make ZEND_EXTRA_LIBS='-liconv' && make install
5.5为php-fpm提供Sysv init脚本,并将其添加至服务列表 切换到编译包
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
5.6为php-fpm提供配置文件
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
如果失败 可能原因有各种各样
-------------------------------
如果提示:Cannot find MySQL header files under /date/mysql.
这个是缺少了 mysql-devel 安装包,用
yum -y install mysql-devel 即可解决!
#yum -y install mysql-devel
-------------------------------
如果提示:xml2-config not found. Please check your libxml2 installation.
需要安装libxml2
#yum install libxml2-devel
-------------------------------
如果提示:Try adding --with-zlib-dir=<DIR>试着添加一下 zlib的路径,如下
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql-dir=/usr/local/mysql --with-zlib-dir=/usr/local/zlib
------------------------------
完全成功才可以编译安装
#make
#make install
------------------------------------------------------
安装失败如果提示:Cannot load /usr/local/apache2/modules/libphp5.so into server:
原因:是Linux有一个SELinux保护模式引起的。
解决办法:
1关闭SELINUX的方法:
vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启
这个方法可能会对服务器带来风险。
2不关闭SELINUX的方法:
# setenforce 0
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
# service httpd restart
# setenforce 1
--------------------------------------
复制php.ini配置文件
参考此文http://blog.csdn.net/21aspnet/article/details/7001344
注意php新版本此文件名有变更
#cp php.ini-production /usr/local/php/lib/php.ini
------------------------------
修改apache的配置文件httpd.conf
增加
AddType application/x-httpd-php .php
修改www的默认文件地址DocumentRoot
注意还要修改Directoty的路径和上面的一样
重启httpd
测试php文件
phpinfo()
---------------------------------
执行php文件
#/usr/local/php/bin/php xx.php
php 时区设置 :http://www.cnblogs.com/kakaxi/archive/2011/08/05/2128442.html
加速器:
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块,可以使用phpize,通过以下几步工作。
二、如何使用phpize?
当php编译完成后,php的bin目录下会有phpize这个脚本文件。在编译你要添加的扩展模块之前,执行以下phpize就可以了;
比如现在想在php中加入memcache扩展模块:我们要做的只是如下几步
————————————————————————
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
————————————————————————
注意./configure 后面可以指定的是php-config文件的路径
这样编译就完成了,还需要做的是在php.ini文件中加入extension值
extension = “memcache.so”
---------------------------------------------------------
注意:Cannot find config.m4.
这个错误是一个很傻的错误,解压以后需要cd到文件夹,不然phpize就会报错
动态编译PHP的memcache扩展库,在执行/usr/localphp/bin/phpize时出现了错误,
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.
很明显缺少文件,需要安装。网上找了下资料。
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# cd ../
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
# tar -zvxf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure && make && make install
然后执行以下命令进行安装
#/usr/local/php/bin/phpize
#./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/libevent –with-php-config=/usr/local/php/bin/php-config
#make && make install
===================
第四步 Memcached安装
===================
可以参考http://timke.blog.163.com/blog/static/1015873062009111094715315/
说明必须先安装libevent
官网 http://libevent.org/ 找最新的版本
#wget https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz
#tar xzvf libevent-2.0.16-stable.tar.gz
#cd libevent-2.0.16-stable
#./configure --prefix=/usr
#make
#make install
--------------------------------------------
第二步 安装memcached
# wget http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz
#tar xzvf memcached-1.4.9.tar.gz
#cd memcached-1.4.9
#./configure --prefix=/usr/local/memcached --with-libevent=/usr
注意这里选择libevent的位置即可 例如你的是在–with-libevent=/usr/local/libevent/
#make
#make install
启动
[root@meeli02 memcached-1.4.15]# /usr/local/webserver/memcached/bin/memcached -d -m 100 -uroot -l 0.0.0.0 -p 11211 -c 512 -P /usr/local/webserver/memcached/memcached.pid
/usr/local/webserver/memcached/bin/memcached -d -m 100 -u root -l 127.0.0.1 -p 11211 -c 512 -P /usr/local/webserver/memcached/memcached.pid
#/usr/local/memcached/bin/memcached -d -m 100 -uroot -l 0.0.0.0 -p 11211 -c 512 -P /usr/local/memcached/memcached.pid
查看详情
#ps aux|grep mem
输出pid
#cat /usr/local/memcached/memcached.pid
查看内存使用
#top -n 1 |grep Mem
-------------------------------------------
第三步 安装memcached的php扩展memcache
#wget http://pecl.php.net/get/memcache-2.2.6.tgz
#tar vxzf memcache-2.2.6.tgz
#cd memcache-2.2.6
#/usr/local/webserver/php/bin/phpize
此处出错可以参考 http://blog.csdn.net/21aspnet/article/details/7001182
#./configure --enable-memcache --with-php-config=/usr/local/webserver/php/bin/php-config --with-zlib-dir
或者
#./configure --enable-memcache --with-php-config=/usr/local/webserver/php/bin/php-config --with-zlib-dir=/usr
#make
#make install
# vim /usr/local/webserver/php/etc/php.ini
php.ini添加
extension=memcache.so
<完>
-------------------
重启
# /usr/local/apache2/bin/apachectl restart
---------------
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
CentOS真是太好用了。尤其是那个yum命令,装东西真是太简单了,自己连配置都不用。所以这篇文章没什么技术含量,主要是来记录我安装过程中遇到的一些问题。和大家分享一下。
DiscuzX 1.0开始对一些常见的缓存和内存优化系统进行了支持,比如Memcached、Eaccelerator、Xcache。但是对Eaccelerator的支持貌似有一些莫名其妙的问题。比如版本太高了不行,而且不能用yum等方式安装,安装的时候要加特定的参数–enable-shared-memory,所以我虽然装好了,在phpinfo里面也能看到,但是在DX后台里面就是看不到。我想算了,那就装一个memcached用一用吧。于是,在网上搜了一些安装方法,发现大多数都是wget然后自己去配置安装的。我不是很喜欢这样,所以决定尝试yum方式安装。
先yum search一下。发现有这个包。于是yum install memcached。顺利安装好。此时,可以编辑/etc/sysconfig/memcached这个文件配置一下memcached。
1 |
PORT="11211" #配置memcached使用的端口 |
2 |
USER="nobody" #配置它启动使用的用户 |
3 |
MAXCONN="2048" #最大并发连接 |
4 |
CACHESIZE="64" #最大使用内存,这里是指64M |
5 |
OPTIONS="" #其它的配置参数 |
配置好之后,我们再安装memcached对php的扩展module。
yum search memcache的时候,还找到了如下几个包:
php-pecl-memcache x86_64 #这个是网上一般常用的包。
php-memcache x86_64 #这个是我找到的一个包。
我按照网上的教程,使用php-pecl-memcache这个包的话,安装完之后,运行php -v发现有问题。提示module在编译的时候参数不对,有一个api不匹配。具体的错误信息找不到了,无法贴出来了,大体就这个意思。没办法,我猜是因为php版本过新,而php-pecl-memcache这个包稍微旧了一些的缘故。因为php我是用另外一个源更新到了5.2.6,而且刚才yum搜到的php-memcache也正是这个源提供的,于是我尝试安装了一下这个包php-memcache,一切正常,而且phpinfo里面也显示了!
这时候还没完。要启动memcached服务器才行。运行下面的命令即可。
1 |
memcached -d -u root -m 64 -c 1024 |
Memcached参数说明:
- -d选项是启动一个守护进程
- -m分配给Memcache使用的内存数量,单位是MB
- -u运行Memcache的用户
- -l监听的服务器IP地址
- -p设置Memcache监听的端口,最好是1024以上的端口
- -c最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
- -P设置保存Memcache的pid文件
接下来我们设置让memcached自动启动,防止系统重启后memcached失效。
1 |
chkconfig --add memcached |
然后检查一下是否设置成功。
1 |
chkconfig --list memcached |
如果2~5写的是on的话说明设置成功。但是在一些CentOS版本中,–add命令无法成功,可以用下面的语句代替:
1 |
chkconfig memcached on |
然后再次检查一下,一般不会有问题了,只要2~5设置为on,那么memcached就已经会随着系统自动启动了。
至此,memcached即可使用,在DiscuzX的后台管理面板中也可以看到并且使用了。
» 版权所有:YaoLei's Blog » Centos+Nginx+Apache+Mysql+Php
» 本文链接:https://www.yaolei.info/archives/320