Linux CentOS yum php mcrypt 扩展安装问题

uname  相关信息
Linux  2.6.32-71.el6.x86_64  2011 x86_64   GNU/Linux

yum groupinstall “PHP Support” 后  CentOS6 默认安装的是php5.3.2
yum install php-devel 使phpize 可编译安装扩展
默认的 redhat repos php中是没有 mcrypt 扩展的
根据红帽的官方消息(https://bugzilla.redhat.com/show_bug.cgi?id=621268)RHEL 不打算添加PHP的mcrypt 的支持
Joe Orton 2010-08-05 04:47:17 EDT

Thanks for the report.

We are not planning to ship mcrypt support for PHP.

所以使用 yum install php-mcrypt 时会提示没有安装包
Setting up Install Process
No package php-mcrypt available.
Error: Nothing to do
从php 官网下载新的php 5.3 源码包后,解压到本地目录
进入解压目录下的 ext 目录后会发现有 mcrypt ,
进入 mcrypt 目录
phpize
./configure
make
make install
Installing shared extensions:     /usr/lib64/php/modules/
我们先测试查看 phpinfo 当前已有的扩展(注意修改httpd配置文件 启动httpd 并开启防火墙的 80  等端口)
没有 mcrypt
vi /etc/php.d/mcrypt.ini
cat /etc/php.d/mcrypt.ini
; Enable mcrypt extension module
extension=mcrypt.so
httpd -k restart
再次查看 phpinfo  可以发现 mcrypt 扩展已安装成功

记此以备忘:-)

[转]http://bailkai.blog.163.com/blog/static/820117362011730230466/

CentOS下搭建独立SVN服务器

svn服务器有2种运行方式:
1. 独立服务器 (例如:svn://xxx.com/xxx)
2. 借助apache。(例如:http://svn.xxx.com/xxx)
由于我装的是nginx, 所以选择了第一种方式-独立的svn服务器。
svn存储版本数据也有2种方式:
1. bdb
2. fsfs。
因为bdb方式在服务器中断时,有可能锁住数据,所以还是fsfs方式更安全一点,我也选择这种方式。
我的环境:
1. svn服务器安装操作系统: centOS

安装步骤:
获取svn安装包:
# wget “http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz”
# wget “http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz”
编译svn以root用户登录:
# tar xfvz subversion-1.6.6.tar.gz
# tar xfvz subversion-deps-1.6.6.tar.gz
# cd subversion-1.6.6
# ./configure –prefix=/opt/svn –without-berkeley-db
(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
# make && make install
在/etc/profile最后加入 svn path 以方便操作:
# vi /etc/profile
path=$path:/opt/svn/bin
export path
测试是否安装成功:
# svnserve –-version

# /opt/svn/bin/svnserve –version
[root@hexu softs]# svnserve –version
假如显示如下,svn安装成功:
svnserve, version 1.6.6 (r40053)
compiled dec 2 2009, 22:37:15
copyright (c) 2000-2009 collabnet.
subversion is open source software, see http://subversion.tigris.org/
this product includes software developed by collabnet (http://www.collab.net/).
the following repository back-end (fs) modules are available:
* fs_fs : module for working with a plain file (fsfs) repository.
cyrus sasl authentication is available.
2. svn配置建立svn版本库目录可建多个:
新建文件夹:
# mkdir -p /opt/svndata/repos
建立svn版本库:
# svnadmin create /opt/svndata/repos
修改svn版本库配置文件版本库:
# vi /opt/svndata/repos/conf/svnserve.conf
内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/passwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos
注重:对用户配置文件的修改立即生效,不必重启svn。
passwk.conf [users]是必须的,文件格式如下:
[users]
username = password
配置svn用户访问权限:
# vi /opt/svn/conf/authz.conf
注重:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:
[groups]
= ,
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/opt/svndata,[/]就是表示对全部版本库设置权限。
[repos:/] 表示对版本库repos设置权限
[repos2:/abc] 表示对版本库repos2中的abc项目设置权限
[repos2:/abc/aaa] 表示对版本库repos2中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。
权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/abc/aaa]
king = rw
[repos2:/pass]
king =
svn配置完毕。
3. 启动svn建立启动svn的用户
# useradd svn
# passwd svn
根据提示,为用户svn设置密码
允许用户svn访问版本库:
# chown -R svn:svn /opt/svndata
启动svn
# su – svn -c “svnserve -d -r /opt/svndata”
其中:
su – svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
-r /opt/svndata指定根目录是/opt/svndata

[转]http://hupuzhao.com/centos下搭建独立svn服务器

LNMP 搭建

1. Nginx

http://nginx.org/en/download.html

The package contains the yum configuration file and the public PGP key necessary to authenticate signed RPMs. Download and install it, then run the command:

yum install nginx

Alternatively, a repository configuration can be added manually without installing the nginx-release package. Create the file named /etc/yum.repos.d/nginx.repo with the following contents:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

Replace “OS” with “rhel” or “centos”, depending on the distribution used, and “OSRELEASE” with “5” or “6”, for 5.x or 6.x versions, respectively.

For Debian 6 append the following to the end of the /etc/apt/sources.list file:

deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx

Then run the commands:

apt-get update
apt-get install nginx

 

For Ubuntu 10.04 append the following to the end of the /etc/apt/sources.list file:

deb http://nginx.org/packages/ubuntu/ lucid nginx
deb-src http://nginx.org/packages/ubuntu/ lucid nginx

Then run the commands:

apt-get update
apt-get install nginx

2.PHP PHP-FPM

 

Php-Fpm 专门为高负载网站设计,与 nginx 搭配,效果最佳。php-fpm 需要对 php 源码打补丁重编译,整个过程比较复杂且慢。个人比较喜欢使用现成的包方式安装,通过 centos.alt.ru 这个源,可以得到相当新的 php-fpm 包。 当然,这个源还有许多其它包。

1. 添加 rusia-repo 源,将以下内容保存到 /etc/yum.repos.d/rusia-repo.repo :

[rusia-repo]
name=CentOS-$releasever  rusia packages for $basearch
baseurl=http://centos.alt.ru/pub/repository/centos/5/i386/
enabled=1
gpgcheck=0
protect=1

然后开始安装 php-fpm 和必要的 php extension

yum install php-mysql php-mcrypt php-mbstring php-gd php-fpm

添加 php-fpm 自启动

chkconfig --level 345 php-fpm on

 

3.mysql

sudo yum install mysql

 

4.配置

 

 

参考文章:

http://kleshwong.com/blog/2010/06/centos-nginx-php-fpm

Php-Fpm

Php-Fpm 专门为高负载网站设计,与 nginx 搭配,效果最佳。php-fpm 需要对 php 源码打补丁重编译,整个过程比较复杂且慢。个人比较喜欢使用现成的包方式安装,通过 centos.alt.ru 这个源,可以得到相当新的 php-fpm 包。 当然,这个源还有许多其它包。

1. 添加 rusia-repo 源,将以下内容保存到 /etc/yum.repos.d/rusia-repo.repo :

[rusia-repo]
name=CentOS-$releasever  rusia packages for $basearch
baseurl=http://centos.alt.ru/pub/repository/centos/5/i386/
enabled=1
gpgcheck=0
protect=1

然后开始安装 php-fpm 和必要的 php extension

yum install php-mysql php-mcrypt php-mbstring php-gd php-fpm

添加 php-fpm 自启动

chkconfig --level 345 php-fpm on

Nginx

1. nginx 源码不大,编译安装简单,推荐直接从官网下载源码自行编译安装:

wget http://nginx.org/download/nginx-0.7.67.tar.gz
tar zxvf nginx-0.7.67.tar.gzcd nginx-0.7.67./configure
make
make install

2. 制作 nginx 启动脚本 vim /etc/init.d/nginx

#!/bin/bash
# v.0.0.1
# create by jackbillow at 2007.10.15
# nginx - This shell script takes care of start ing and stopping nginx.
#
# chkconfig: - 60 50
# description: nginx [engine x] is light http web/proxy server
# that answers incoming ftp service requests.
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
nginx_path="/usr/local/nginx"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginx_path/sbin/nginx ] || exit 0
RETVAL=0
prog="nginx"
start() {
# Start daemons.
if [ -e $nginx_pid -a ! -z $nginx_pid ];then
echo "nginx already running...."
exit 1
fi

if [ -e /usr/local/nginx/conf/nginx.conf ];then
 echo -n $"Starting $prog: "
 $nginx_path/sbin/nginx -c /usr/local/nginx/conf/nginx.conf &
 RETVAL=$?
[ $RETVAL -eq 0 ] && {
touch /var/lock/subsys/$prog
success $"$prog"
}
echo
else
RETVAL=1
fi
return $RETVAL
}
# Stop daemons.
stop() {
 echo -n $"Stopping $prog: "
 killproc -d 10 $nigx_path/sbin/nginx
 RETVAL=$?
 echo
 [ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog
}
# See how we were called.
case "$1" in
start)
 start
 ;;
stop)
 stop
 ;;
reload)
 kill -HUP `cat $nginx_pid`
 ;;
reconfigure)
 stop
 start
 ;;
status)
 status $prog
 RETVAL=$?
 ;;
*)
 echo $"Usage: $0 {start|stop|reconfigure|reload|status}"
 exit 1
esac
exit $RETVAL

保存退出,改模式,加启动:

chmod +x nginx

chkconfig –level 2345 nginx on

3. 配置 nginx 虚拟主机:

每个虚拟主机都要配置 php 的话,比较麻烦,可以把这些共通的设置单独保存到一个文件,再在 server 节 include 一下。

virtual_host_share.conf :

index  index.html index.htm index.php;
location ~* ^.+.(jpg|jpeg|png|ico|gif|css|js)$ {
 access_log   off;
 expires      30d;
}
location ~ .php$ {
 fastcgi_pass   127.0.0.1:9000;
 fastcgi_index  index.php;
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 fastcgi_connect_timeout 60;
 fastcgi_send_timeout 180;
 fastcgi_read_timeout 180;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 4 256k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 fastcgi_intercept_errors on;
 include        fastcgi_params;
}

配置虚拟主机例子:

server {
  listen: 80;
  server_name example.com www.example.com;
  root /path/to/your/website/public;
  #access_log /path/to/your/website/log/access.log;
  #error_log /path/to your/website/log/error.log;
  include /path/to/virtual_host_share.conf;
}

好了,启动 nginx 和 php-fpm 测试一下吧。

/etc/init.d/nginx start
/etc/init.d/php-fpm start

 

准备工作:

1.CentOS镜像使用帮助 http://mirrors.163.com/.help/centos.html

收录架构

  • i386
  • x86_64
  • SRPMS

收录版本

  • 4
  • 5
  • 6

更新时间

每5小时更新一次

使用说明

首先备份/etc/yum.repos.d/CentOS-Base.repo

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本repo文件, 放入/etc/yum.repos.d/(操作前请做好相应备份)

运行yum makecache生成缓存

 

centos Apache、php、mysql默认安装路径http://blog.sina.com.cn/s/blog_4b8481f70100ujtp.html

apache:

如果采用RPM包安装,安装路径应在 /etc/httpd目录下

apache配置文件:/etc/httpd/conf/httpd.conf

Apache模块路径:/usr/sbin/apachectl

web目录:/var/www/html

如果采用源代码安装,一般默认安装在/usr/local/apache2目录下

php:

如果采用RPM包安装,安装路径应在 /etc/目录下

php的配置文件:/etc/php.ini

如果采用源代码安装,一般默认安装在/usr/local/lib目录下

php配置文件: /usr/local/lib/php.ini

或/usr/local/php/etc/php.ini

mysql:

如果采用RPM包安装,安装路径应在/usr/share/mysql目录下

mysqldump文件位置:/usr/bin/mysqldump

mysqli配置文件:

/etc/my.cnf或/usr/share/mysql/my.cnf

mysql数据目录在/var/lib/mysql目录下

如果采用源代码安装,一般默认安装在/usr/local/mysql目录下

 

错误问题:

Nginx no input file specified错误解决方案

http://hi.baidu.com/tian%C2%BD%C0%DA/blog/item/8f60ef2b40b08922d52af1f7.html

在配置好spawn-fcgi和nginx的整合后。测试phpinfo(); 不料出现了这样一个错误。
no input file specified
网上找了两处答案。
一、aayy520.blog.163.com/blog/static/23182260200910251919683/

1、网上大多数的都说的是这个原因:fastcgi_param    SCRIPT_FILENAME    $document_root$fastcgi_script_name;
这句需要加入fcgi.conf文件;(这句一般安装后nginx后都有,在你的nginx安装目录下 /conf/fastcgi.conf

2、第二个原因是我遇到的:对应document_root的权限必须与nginx.conf和fcgi.conf的用户一样,如果不一样,请修改:
[root@www03 ~]# chown -R user:user /data/htdocs/group/group

主要问题可能都不是在这。

二、www.68design.net/Development/PHP/27060-1.html
首先php.ini的配置中

cgi.fix_pathinfo=1
doc_root=

nginx中的配置有些麻烦

fastcgi_pass 127.0.0.1:1234;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;

每个虚机要根据自己不通的虚机设置不能的目录,要保证这个路径正确。
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;不能在fastcgi_pass 127.0.0.1:1234;的前面。

记得修改了php.ini要重启fastcgi服务。

我的的问题是上面这个,没有指定document_root目录。/conf/nginx.conf中的还是原样/script当然也就不能正常了。

ERROR 2002 (HY000):

http://hi.baidu.com/sdusoul/blog/item/120f83daf59af7d0b7fd484d.html/cmtid/e8b44c2fd0d882371e3089c9

rhel5.1安装mysql后在终端运行mysql报错:
[root@localhost ~]# mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

第一次安装mysql,难道是我安装有问题?我是通过源码包编译安装的,于是我又下载最新的rpm包,通过rpm -ivh安装,还是不行。又通过yum进行安装。又直接重装系统,在选包的时候将“mysql服务器”选上,装完还是不行~~我晕~

今天上网一查,一位网友说:
“查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.”

我按照此方法查看了下mysqld的状态。。。果然,是stop:(
[root@localhost ~]# /etc/rc.d/init.d/mysqld status
mysqld is stopped
赶紧启动一下mysqld,
[root@localhost ~]# /etc/rc.d/init.d/mysqld start

 

NGINX PHP No input file specified

http://qlj.sh.cn/linux/20090815/nginx-php-no-input-file-specified/

刚装好

马上加了个 PHPINFO

  1. <?php
  2. phpinfo();
  3. ?>

然后在游览器下运行 结果是

No input file specified.

以下内容为网络收集

FastCGI模式下访问php文件时,出现No input file specified.错误
查看access.log 发现是 404

原因分析:
任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在。PHP文件不存在,没办法返回普通的404错误,它返回一个404,并带上一句”No input file specified”

另外,还可能跟 路径或者 权限有关系,或者SCRIPT_FILENAME 变量没有被正确的设置(这在nginx是最常见的原因)

1)如果html也出现404错误,那么就是document root 设置的有问题
2)检查脚本文件的权限, 可能PHP或者web server不能读取它
3)SCRIPT_FILENAME设置错误

可以使用
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
必须保证 $document_root 在配置文件中,在astcgi_param SCRIPT_FILENAME前面被用到过一次, 后面有解释为什么。

或者
修改/etc/php5/cgi/php.ini中cgi.fix_pathinfo=1
这样也可让php-cgi正常使用SCRIPT_FILENAME这个变量

有人说,这样改也行
fastcgi_param SCRIPT_NAME /home/gavin/nginx/$fastcgi_script_name;

让我们看看PHP对这两个变量是怎么解释的吧
SCRIPT_NAME
SCRIPT_FILENAME
据说,必须指定正确的SCRIPT_FILENAME, PHP-CGI会忽略SCRIPT_NAME(即使它的值设置的是正确的)
或者指定特殊的php.ini, 设置doc_root, discard path, fix pathinfo等等

script_filename 只是被用做一种快捷方式。 如果fix_pathinfo设置打开,init函数将它用来决定真实的路径

因为配置文件会改变 nginx的变量$fastcgi_script_name

fastcgi_param SCRIPT_NAME /home/gavin/nginx/$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME /home/gavin/nginx/$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;

这两种配置都是可以的


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
也是可以的,但必须保证 $document_root 被正确设置过

‘SCRIPT_FILENAME’
当前执行脚本的绝对路径名(pathname)
‘SCRIPT_NAME’
含有当前脚本的路径。当页面需要指向他们自己时,有用. __FILE__ 常量包含路径和文件名

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix it’s paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; cgi.fix_pathinfo=0

主要跟CGI标准的
PATH_INFO
PATH_TRANSLATED
SCRIPT_NAME
有关系
修修改了好多
最终主要修改的

把 NGINX DEFAULT 那个文件中的

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

改成实际的路径

今天我是这种情况

我的是fastcgi_param SCRIPT_NAME /var/www/nginx-default/$fastcgi_script_name;

然后就好了
上面的文章供参考
如果试了还不行 多看看内容再试试

 

bash: chkconfig: command not found

http://yaforest.com/html/Linux/2011/0214/464.html

bash: chkconfig: command not found

 

[root@xuniji ~]# chkconfig
bash: chkconfig: command not found
[root@xuniji ~]# rpm -aq |grep chkconfig
chkconfig-1.3.30.1-2
[root@xuniji ~]# export PATH=/sbin:$PATH
[root@xuniji ~]# chkconfig
chkconfig version 1.3.30.1 – Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage:   chkconfig –list [name]
chkconfig –add <name>
chkconfig –del <name>
chkconfig [–level <levels>] <name> <on|off|reset|resetpriorities>

[root@xuniji ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin
[root@xuniji ~]# PATH=”$PATH”:/sbin
[root@xuniji ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin:/sbin

 

大功告成!!!