使用linux下的计划任务做进程守护是比较靠谱的一件事情,因为至少系统的计划任务是不会随便崩掉的。


编写   check.sh (下面的脚本是用于守护某一个docker是否正常运行的,当进程没有守护的时候,使用/opt/ddmysql/start.sh即可以启动)

```

name="ddmysql_web_1"

path="/opt/ddmysql/start.sh"

cd /opt/ddmysql/

server=`docker ps | grep ${name} | grep -v grep`

if [ ! "$server" ]

then

echo "start ${name}...."

t=`date`

echo "${t} ${name}" >> restart_${name}.log

sudo nohup ${path} >/dev/null 2>&1 &

else

echo "runing ${name}..."

fi

```

非docker程序使用 ps aux | grep 关键词 | grep -v grep  检测

start.sh 代码如下 (这个为docker-compose的启动方法,不同的程序有不同的启动方法)

```

docker-compose up -d

```

一般linux下的程序启动使用   

./start.sh

/soft/a/bin 

启动

然后将start.sh 加入到 计划任务中

vi /etc/crontab

```

*/1 * * * * root cd /home/aboc && sh start.sh

```

重新加载计划任务

```

/etc/init.d/cron reload

```

以上脚本只能通过每分钟一次的频率进行检测,如果需要做到不间断的进行检测,我们可以调整一下check.sh这个脚本

```

for a in {0..59};do

server=`docker ps | grep ${name} | grep -v grep`

if [ ! "$server" ]

then

echo "start ${name}...."

t=`date`

echo "${t} ${name}" >> restart_${name}.log

sudo nohup ${path} >/dev/null 2>&1 &

else

echo "runing ${name}..."

fi

sleep 1

done

```

2014-6-20 16:14 Friday  
2013-6-16 12:22 Sunday  

1. sl 命令

你会看到一辆火车从屏幕右边开往左边。。。。。。

安装  $ sudo apt-get install sl 
运行  $ sl

命令有 -alFe几个选项,

-a An accident seems to happen. You'll feel pity for people who cry for help.
-l shows littl...

阅读全文>>

2013-6-8 15:40 Saturday  

#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT  

#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT&nbs...

阅读全文>>

2013-4-9 8:50 Tuesday  

.htacess代码

RewriteEngine on
RewriteCond %{HTTP_HOST} ^old.phpec.org$
RewriteRule ^(.*)$ http://www.phpec.org/$1 [R=301,L]

阅读全文>>

通过RewriteRule ^news-([0-9]+)\.html(.*)$ newsDetail.php?id=$1$2 [QSA]或者RewriteRule ^news-([0-9]+)\.html?(.*)$ newsDetail.php?id=$1$2 [QSA]

就能将 news-123.html?a=1b=1伪到newsDetail.php?id=123&a=1&b...

阅读全文>>

ftp服务器连接失败,错误提示:
500 OOPS: cannot change directory:/home/*******
500 OOPS: child died


解决方法:

1 在终端输入命令:
setsebool ftpd_disable_trans 1
service vsftpd restart

就OK了!但是下次重启了还会这样··

2 在终端输入命令:

setsebool -P ftpd...

阅读全文>>

ubuntu 10.04 上 php 版本是 5.3 不能用  zend Optimizer 只能改用 5.2 了
第一步:
sed s/lucid/karmic/g /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/karmic.list
第二步:
/etc/apt/preferences.d 中新建一個文件 php 內容如下:
Package: php5
Pin: release a=karmic
Pin-Priority: 991

Package: php5-gd
Pin: release a=karmic
Pin-Priority: 991

Package: php5-common
Pin: release a=karmic
Pin-Priority: 991

Package: php5-curl
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mysql
Pin: release a=karmic
Pin-Priority: 991


Package: php5-pear
Pin: release a=karmic
Pin-Priority: 991

Package: php5-xsl
Pin: release a=karmic
Pin-Priority: 991


Package: php-pear
Pin: release a=karmic
Pin-Priority: 991

Package: php5-cli
Pin: release a=karmic
Pin-Priority: 991

Package: php5-memcache
Pin: release a=karmic
Pin-Priority: 991

Package: php5-pgsql
Pin: release a=karmic
Pin-Priority: 991

Package: libapache2-mod-php5
Pin: release a=karmic
Pin-Priority: 991
第三步:
sudo apt-get update
sudo apt-get remove php5 libapache2-mod-php5 php5-xsl php5-gd php-pear php5-mysql php5-curl php5-memcache
sudo apt-get install php5 libapache2-mod-php5 php5-xsl php5-gd php-pear php5-mysql php5-curl php5-memcache
補充: 如果沒有安裝  apache2 和 mysql 執行
sudo apt-get install apache2 mysql-server php5 libapache2-mod-php5 php5-xsl php5-gd php-pear libapache2-mod-auth-mysql php5-mysql php5-curl php5-memcache
apt-get install  libapache2-mod-php5 php5 php5-gd  php5-cli
cd /etc/apache2/mods-enabled/
sudo ln -s ../mods-available/php5.load php5.load

sudo ln -s ../mods-available/php5.conf php5.conf

 

来源 百度知道

2012-1-30 18:27 Monday  

yum install vsftpd

2.启动/重启/关闭vsftpd服务器
[root@localhost ftp]# /sbin/service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
OK表示重启成功了.
启动和关闭分别把restart改为start/stop即可.
如果是源码安装的,到安装文件夹下找到start.sh和shutdown.sh文件,执行它们就可以了.

3.与vsftpd服务器有关的文件和文件夹
vsftpd服务器的配置文件的是: /etc/vsftpd/vsftpd.conf

vsftpd服务器的根目录,即FTP服务器的主目录:
在/var/ftp处pub处
如果你想修改服务器目录的路径,那么你只要修改/var/ftp到别处就行了

4.添加FTP本地用户
有的FTP服务器需要用户名和密码才能登录,就是因为设置了FTP用户和权限.
FTP用户一般是不能登录系统的,只能进入FTP服务器自己的目录中,这是为了安全.这样的用户就叫做虚拟用户了.实际上并不是真正的虚拟用户,只是不能登录SHELL了而已,没能力登录系统.

/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin test
这个命令的意思是:
使用命令(adduser)添加test用户,不能登录系统(-s /sbin/nologin),自己的文件夹在(-d /opt/test_ftp)),属于组ftp(-g ftp)
然后你需要为它设置密码 passwd test
这样就添加了一个FTP用户了.下面的示例可以帮助你进入FTP服务器了.

[root@localhost ftp]# ftp
ftp> open 192.168.0.33
Connected to 192.168.0.33 (192.168.0.33).
220 (vsFTPd 2.0.5)
Name (192.168.0.33:gxl): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

在windows中,只要在浏览器中输入 ftp://192.168.0.33 进入FTP服务器,然后 右键 登录,输入用户名和密码就可以登录自己的目录了.
当然你要保证自己能读写自己的目录,就要在配置文件vsftpd.conf里设置一下就可以读写了.
local_enable=yes
write_enable=yes
local_umask=022

5.匿名上传下载
修改配置文件即可vsftpd.conf,确定有以下几行,没有自己添加进去就可以了.
anonymous_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_umask=022

然后你可以新建一个文件夹,修改它的权限为完全开放,任何用户就可以登录这个文件夹,并上传下载文件:
mkdir /var/ftp/guest
chmod 777 /var/ftp/guest

6.定制进入FTP服务器的欢迎信息
在vsftpd.conf文件中设置:
dirmessage_enable=yes
然后进入用户目录建立一个.message文件,输入欢迎信息即可(我这里写入的是Welcome to gxlinux's FTP!):
[root@localhost test_ftp]# ftp 192.168.0.33
Connected to 192.168.0.33 (192.168.0.33).
220 (vsFTPd 2.0.5)
Name (192.168.0.33:gxl): test
331 Please specify the password.
Password:
230-Welcome to gxlinux's FTP!
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

7.实现虚拟路径
将某个目录挂载到FTP服务器下供用户使用,这就叫做虚拟路径.
比如将gxl用户的目录挂载到FTP服务器中,供FTP服务器的用户使用,使用如下命令即可:
[root@localhost opt]# mount --bind /home/gxl /var/ftp/pub #使用挂载命令
[root@localhost opt]# ls /var/ftp/pub
LumaQQ Screenshot.png 桌面

开机自动挂载可用

这样子的方式

 

8.打开vsFTPd的日志功能
添加下面一行到vsftpd.conf文件中,一般情况下该文件中有这一行,只要把前面的注释符号#去掉即可,没有的话就添加,或者修改:
xferlog_file=/var/log/vsftpd.log

9.限制链接数,以及每个IP最大的链接数
修改配置文件中,例如vsftp最大支持链接数100个,每个IP能支持5个链接:
max_client=100
max_per=5

10.限制传输速度
修改配置文件中,例如让匿名用户和vsftd上的用户(即虚拟用户)都以80KB=1024*80=81920的速度下载
anon_max_rate=81920
local_max_rate=81920

11.将用户(一般指虚拟用户)限制在自家目录
修改配置文件中,这样用户就只能访问自己家的目录了:
chroot_local_user=yes
如果只想某些用户仅能访问自己的目录,其它用户不做这个限制,那么就需要在chroot_list文件(此文件一般是在/etc/vsftpd/中)中添加此用户.
编辑此文件,比如将test用户添加到此文件中,那么将其写入即可.一般的话,一个用户占一行.
[root@localhost vsftpd]# cat chroot_list
test

12.绑定某个IP到vsFTPd
有时候要限制某些IP访问服务器,只允许某些IP访问,例如只允许192.168.0.33访问这个FTP,同样修改配置文件:
listen_address=192.168.0.33


配置vsftpd.conf
                   anonymous_enable=NO            #禁止匿名
                   local_enable=YES                       #允许本地登录
                   write_enable=YES                       #允许写,如需上传,则必须
                   local_umask=027                        #将上传文件的权限设置为:777-local_umask
                   anon_upload_enable=YES          #允许虚拟用户和匿名用户上传
                   anon_other_write_enable=YES #允许虚拟用户和匿名用户修改文件名和删除文件
                   dirmessage_enable=YES          
                   xferlog_enable=YES                      #打开日志记录
                   connect_from_port_20=YES
                   xferlog_file=/var/log/vsftpd.log     #日志存放位置
                   xferlog_std_format=YES              #标准日志格式
                   idle_session_timeout=600        #空闲连接超时
                   data_connection_timeout=120
                   ftpd_banner=Welcome to ChinaRise FTP service       #欢迎信息
                   guest_enable=yes                       #允许虚拟用户
                   guest_username=vsftpdguest #虚拟用户使用的系统账号
                   virtual_use_local_privs=YES     #虚拟用户拥有本地系统权限

                   chroot_local_user=NO             
                   chroot_list_enable=YES
                     #以上两行将虚拟用户限制在其目录下,不能访问其他目录,或者直接用                           
                   chroot_local_user=YES                               

                   listen=yes                #监听/被动模式
                   listen_port=21        #监听端口

                   chroot_list_file=/etc/vsftpd/vsftpd.chroot_list       #虚拟用户名单保存在文件/etc/vsftpd/vsftpd.chroot_list 中
                   user_config_dir=/etc/vsftpd/vsftpd_user_conf   #每个虚拟用户名的更加详细的培植保存在/etc/vsftpd/vsftpd_user_conf 中

虚拟用户其他设置

      在/etc/vsftpd/vsftpd.chroot_list 文件中写入允许登陆的虚拟用户名称,每行一个
      在/etc/vsftpd/vsftpd_user_conf 文件夹中创建一个以虚拟用户用户名命名的文件,
      写入:local_root = /var/FTP/子目录名
      然后在/var/FTP下创建一个对应的目录即可

 

当虚拟用户权限出现不能创建目录,上传时,是因为selinux搞的鬼,可以采用以下方法解决

1
yum remove selinux* -y

当然你也可以

 

2
vi /etc/selinux/config

修改为:SELINUX=disabled

3.setsebool -P ftpd_disable_trans 1

把他禁止掉,看你自己喜欢了。

重试,问题解决!

 

编辑/etc/vsftpd/vsftpd.conf,注意在等号前的部分大小写是敏感的,一定要全部小写,最后所有产生效用

的设置调如下。
anonymous_enable=NO   不允许匿名登录(默认为YES,需要修改)
local_enable=YES   允许本地用户登录(默认)
write_enable=YES   开放本地用户登录后的修改权限(默认)
local_umask=022   上传文件默认权限为755(777-022)(默认)
dirmessage_enable=YES   欢迎信息(默认)
xferlog_enable=YES   记录log(默认)
connect_from_port_20=YES   (默认)
xferlog_std_format=YES   log格式(默认)
listen=YES   (默认)
chroot_local_user=YES   限制用户登陆后只能在自身目录(新添加)
pam_service_name=vsftpd   (默认)
tcp_wrappers=YES   (默认)
最后删除一条默认的userlist_enable=YES
保存退出后

接下来建立一个不能在本地登录而只能使用ftp的用户,假设用户名为ftpuser,个人所属的文件夹

为/var/ftp/ftpuser

重要一,

命令如下
useradd -g ftp -d /var/ftp/ftpuser -s /sbin/nologin ftpuser
建立完成后使用passwd ftpuser命令设置密码

重要二,

cd /etc/vsftpd/

touch chroot_list

vi chroot_list 添加 ftpuser

重启vsftpd

附带:如果上传时出现以下报错(man man ftpd_selinux得到帮助):

vsftp " 553 Could not create file"

解决方法:

1. 执行

setsebool -P ftpd_disable_trans 1
2.

service vsftpd restart

 

 

虚拟用户登录530错误。。

解决方法:

cp Path/RedHat/vsftpd.pam /etc/pam.d/ftp

path为vsftp解压缩源文件目录

这是因为我们RHEL启用了PAM,所在用到vsftp时需要用到 /etc/pam.d/ftp这个文件(默认源码安装的不会有这个文件),因此除了匿名用户外本地用户无法登录。

结果我这么一做,匿名用户也登不上了

 

 

vsftp 上传 失败 错误 200 227 553


An error occurred copying a file to the FTP server.Make sure you have permission to put file on the server.

Details:

200 Switching to Binary mode.

227 Entering Passive Mode(192,168,130,102,66,128)

553 Could not create file.

 

附: FTP 数字代码的意义
110 重新启动标记应答。
120 服务在多久时间内ready。
125 数据链路埠开启,准备传送。
150 文件状态正常,开启数据连接端口。
200 命令执行成功。
202 命令执行失败。
211 系统状态或是系统求助响应。
212 目录的状态。
213 文件的状态。
214 求助的讯息。
215 名称系统类型。
220 新的联机服务ready。
221 服务的控制连接埠关闭,可以注销。
225 数据连结开启,但无传输动作。
226 关闭数据连接端口,请求的文件操作成功。
227 进入passive mode。
230 使用者登入。
250 请求的文件操作完成。
257 显示目前的路径名称。
331 用户名称正确,需要密码。
332 登入时需要账号信息。
350 请求的操作需要进一部的命令。
421 无法提供服务,关闭控制连结。
425 无法开启数据链路。
426 关闭联机,终止传输。
450 请求的操作未执行。
451 命令终止:有本地的错误。
452 未执行命令:磁盘空间不足。
500 格式错误,无法识别命令。
501 参数语法错误。
502 命令执行失败。
503 命令顺序错误。
504 命令所接的参数不正确。
530 未登入。
532 储存文件需要账户登入。
550 未执行请求的操作。
551 请求的命令终止,类型未知。
552 请求的文件终止,储存位溢出。
553 未执行请求的的命令,名称不正确。

 

今天遇到这个错误

解决方法

关闭selinux

修改/etc/vsftpd.conf

write_enable=YES

假设要上传这个目录是/home/ftp 

他的权限应该是770,owner是用户名,group是user

chmod 770 /home/ftp    实事证明 弄成770是不行的,要弄成755 ,要不然web不能访问

chown 用户名:用户组 /home/ftp

 

OK~搞定

AMP环境是用yum安装,CentOS系统,telnet memcached正常。PHP的memcache模块及socket都正常

分析后发现系统SeLinux开启,httpd只能访问443,80端口。

找到原因后就好办了,关闭SElinux就可以了。

修改/etc/selinux/config

SELINUX=disabled

重启系统或执行:

setenforce 0

搞定,泡茶或继续干活。

==========

以下介绍一下SELinux相关的工具

/usr/bin/setenforce 修改SELinux的实时运行模式
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
如果要彻底禁用SELinux 需要在/etc/sysconfig/selinux中设置参数selinux=0 ,或者在/etc/grub.conf中添加这个参数
/usr/bin/setstatus -v
察看系统的状态
以下是运行输出,请参考
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Policy version: 18

以上转自http://www.82cs.com/201001/07/php_fsockopen_connect_memcached_permission-denied/

2012-1-30 18:21 Monday  

一、源码包准备

服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-v1.4.4 。
下载:http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,

libevent的最新版本是libevent-1.4.13-stable。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/
下载:http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz

准备Memcached的PHP扩展的源码安装包:
官网:http://pecl.php.net/get/memcache-2.2.5.tgz

Linux指令下载:

wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
wget http://pecl.php.net/get/memcache-2.2.5.tgz

二、安装与配置

1、先安装libevent

tar zxvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure –prefix=/usr
make
make install

2、测试libevent是否安装成功

ls -al /usr/lib | grep libevent
libevent-1.1a.so.1
libevent-1.1a.so.1.0.2
libevent-1.4.so.2
libevent-1.4.so.2.1.3
libevent.a
libevent_core-1.4.so.2
libevent_core-1.4.so.2.1.3
libevent_core.a
libevent_core.la
libevent_core.so
libevent_extra-1.4.so.2
libevent_extra-1.4.so.2.1.3
libevent_extra.a
libevent_extra.la
libevent_extra.so
libevent.la
libevent.so

版本不同,可能文件列表不同。

3、安装memcached,同时需要安装中指定libevent的安装位置

tar zxvf memcached-1.4.4.tar.gz
cd memcached-1.4.4
./configure –with-libevent=/usr
make && make install

安装完成后会把memcached 自动放到 /usr/local/bin/memcached

4、测试是否成功安装memcached

ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 201869 12-14 21:44 /usr/local/bin/memcached

5、安装Memcache的PHP扩展

①安装PHP的memcache扩展

tar vxzf memcache-2.2.5.tgz
cd memcache-2.2.5
/usr/local/webserver/php/bin/phpize
./configure –enable-memcache –with-php-config=/usr/local/webserver/php/bin/php-config –with-zlib-dir
make
make install

②上述安装完后会有类似这样的提示:

Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/

③把php.ini中的extension_dir = “./”修改为

extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”

④添加一行来载入memcache扩展:extension=memcache.so

三、memcached的基本设置

1.启动Memcache的服务器端:

memcached -d -m 10 -u root -l 202.207.177.177 -p 11211 -c 256 -P /tmp/memcached.pid

参数说明:

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址202.207.177.177,
-p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

2.如果要结束Memcache进程,执行:

kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复。

3.检查Memcached是否启动

netstat -ant
tcp        0      0 202.207.177.177:11211       0.0.0.0:*                   LIST

11211端口已经打开,说明Memcached已正常启动。

4.重启CentOS

reboot

四、Memcache环境测试

运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始你的Memcache的征途吧!

1
2
3
4
5
6
7
8
9
<?php
 
$mem= newMemcache;
$mem->connect("202.207.177.177", 11211);
$mem->set('key', 'This is a test!', 0, 60);
$val= $mem->get('key');
echo$val;
 
?>


五、参考资料

对Memcached有疑问的朋友可以参考下列文章:
Linux下的Memcache安装:http://www.ccvita.com/257.html
Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器: http://blog.s135.com/nginx_php_v5/

转 http://blog.lixiphp.com/centos-linux-memcache-nginx-php-install/

 

 

 

------------------------------------------------------------------------------------

直接能通过YUM安装MEMCACHE

1、安装 EPEL Repo

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm


2、安装 Memcache
yum -y install memcached


安装过程中可能会出现如下问题:
--> Missing Dependency: perl(Net::SSLeay) >= 1.33 is needed by package perl-AnyEvent-5.240-1.el5.rf.noarch (rpmforge)
Error: Missing Dependency: perl(Net::SSLeay) >= 1.33 is needed by package perl-AnyEvent-5.240-1.el5.rf.noarch (rpmforge)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

这个问题是因为CentOS的 yum没有memcached需要的最新的 perl-Net-SSLeay 和 perl-IO-Socket-SSL包.
解决办法也很简单,删除旧的包,安装新的包。

查看旧版本的包
rpm -qa | grep perl-Net-SSLeay
rpm -qa | grep perl-IO-Socket-SSL

移除并安装新包
rpm-e perl-Net-SSLeay-1.30-4.fc6
rpm -e perl-IO-Socket-SSL-1.01-1.fc6
wget
http://packages.sw.be/perl-Net-SSLeay/perl-Net-SSLeay-1.36-1.el5.rfx.i386.rpm
wget http://packages.sw.be/perl-Net-SSLeay/perl-Net-SSLeay-1.36-1.el5.rfx.x86_64.rpm
wget http://packages.sw.be/perl-IO-Socket-SSL/perl-IO-Socket-SSL-1.34-1.el5.rfx.noarch.rpm
rpm -i perl-Net-SSLeay-1.36-1.el5.rfx.x86_64.rpm
rpm -i perl-Net-SSLeay-1.36-1.el5.rfx.i386.rpm
rpm -i perl-IO-Socket-SSL-1.34-1.el5.rfx.noarch.rpm

然后再执行安装命令
yum -y install memcached

即可安装成功

3、设置为开机启动
chkconfig --level 2345 memcached on


4、启动和停止
/etc/init.d/memcached start|stop

 

 

客户端,直接将 php_memcache.so放到php的module中,然后在php.ini中载入即可

 

为安全起见,最好是修改一下memcache的端口,不要保留为默认的11211

可以用下面的方式改

memcached -d -m 10 -u root -l 202.207.177.177 -p 11211 -c 256 -P /tmp/memcached.pid

也可以

vi /etc/sysconfig/memcached 修改那里的端口即可

在对ubuntu系统进行相关设置后,就可以进行各种环境的搭建,这里介绍apache+mysql+php环境的搭建:
1、安装Mysql
aptitude install mysql-server mysql-client  安装过程中,要输入MySQL的root用户密码,
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
数据文件放在: /var/lib/mysql下
2、安装Apache
代码:aptitude install apache2
安装完后,在浏览器中访问 http://192.168.0.100 看到如下图所示的页面,就说话安装成功了:
Ubuntu系统中Apache的默认文档根目录为 /var/www,配置文件位于/etc/apache2/apache2.conf。其他的一些额外配置文件存放在/etc/apache2的子目录 里,如 /etc/apache2/mods-enabled (Apache模块配置文件),/etc/apache2/sites-enabled (虚拟主机配置文件),还有 /etc/apache2/conf.d
3、安装Php5
aptitude install php5 libapache2-mod-php5
安装完成后,重新启动apache2服务:
代码: /etc/init.d/apache2 restart
由于默认Web站点的根目录位于 /var/www,我们就在该根目录新建一名为 info.php 的php程序文件,并从浏览器里访问它,以测试PHP5是否成功安装。该测试php文件中使用 phpinfo() 函数获得服务器中安装的PHP软件包详情,比如PHP的版本、所支持的组件等等。
代码: vi /var/www/info.php
<?php  phpinfo();  ?>
文件编辑好后,保存退出,在浏览器里浏览该文件(文中使用http://192.168.0.100/info.php
4、为PHP5安装MySQL支持
为了让PHP支持MySQL,我们必须安装php5-mysql软件包。同时,还可以为php安装一些可选的支持模块,如mcrypt, memcache, gd, pear, imagick等等。使用下面的命令可以搜索一下php5相关的模块:
aptitude search php5
选择你想安装的模块,并安装它们,本文列出了一些常用的php5软件包并安装,执行下面的命令: 
aptitude install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json
安装完成后,重启apache2服务: /etc/init.d/apache2 restart
这时候,刷新浏览器或者重新打开 http://192.168.0.100/info.php 就可以看到刚刚安装的php功能了,注意看看mysql和mysqli相关的信息
这样就完成了搭建。。。

by Aboc  

如果没有aptitude 则可以用apt-get

2012-1-30 18:17 Monday  

如果默认编码是gb2312的话,会出现乱码.经百度告知原来是http.conf强制使用了utf-8,我们只要把它改为关闭就可以了

  AddDefaultCharset UTF-8 改为 AddDefaultCharset OFF

另外:有另外一种方法,但是我感觉好像没有奏效:http://hi.baidu.com/qrpeng/blog/item/e76164085e2b9e9e0a7b82fd.html

以下是引用他的

修改http.conf中的AddDefaultCharset为AddDefaultCharset off,关闭apache默认编码,这样php的应用和tomcat下的应用都分别采用各自的编码,apache不会强行修改这些应用返回的 response的http头中的charset。如此一来就ok了。

 

json的install。

Google到一些文档都是下载后进行编译的,显得比较费事。还好有大牛写出了比较简单的方法,我转载一下

yum update "*php*"

pecl install json

cd /etc/php.d/

echo “extension=json.so” >> json.ini

service httpd restart

2012-1-30 18:16 Monday  
用yum安装Apache,Mysql,PHP. 
2.1安装Apache 
yum install httpd httpd-devel 
安装完成后,用/etc/init.d/httpd start 启动apache 
设为开机启动:chkconfig httpd on 
2.2 安装mysql 
2.2.1 yum install mysql mysql-server mysql-devel 
同样,完成后,用/etc/init.d/mysqld start 启动mysql 
2.2.2 设置mysql密码 

启动mysql控制台:  mysql

mysql>; USE mysql; 
mysql>; UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root'; 
mysql>; FLUSH PRIVILEGES; 
2.2.3 允许远程登录 
mysql -u root -p 
Enter Password: <your new password> 
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 
完成后就能用mysql-front远程管理mysql了。 
2.2.4 设为开机启动 
chkconfig mysqld on 
3. 安装php 
yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml 
/etc/init.d/httpd start



/升级默认的php5.1到5.2

vi gedit /etc/yum.repos.d/utterramblings.repo
在打开的文件中加入以下内容:
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
保存
 yum update php

 

安装ZendOptimizer

1、下载文件:

http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz  (32位)

http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz  (64位)

2、解压

解压后把ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp目录下的ZendOptimizer.so拷贝到某一个目录,比如/usr/local/Zend/lib/

Zend optimizer 3.3.9有一些新的改动,不需要安装了,直接在php.ini文件里面引用.so文件即可:

3、修改/etc/php.ini文件

找到:zend.ze1_compatibility_mode = Off

修改为:zend.ze1_compatibility_mode = On

在末尾加上以下文字:

[Zend Optimizer]
zend_optimizer.optimization_level=1
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"

4、重启httpd服务,通过php -v 可以看效果。

 

安装eaccelerator

直接yum install php-eaccelerator

如果找不到,线 yum search eaccelerator

 

 

虚拟主机安装时注意,如果出现多个域名都指向同一个目录的情况

NameVirtualHost 127.0.0.1:80    #这句一定要和 <VirtualHost 127.0.0.1:80>配合才可以。
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName t.dagongz.com
<Directory "/var/www/html">
allow from all
Options +Indexes
</Directory>
</VirtualHost>

<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html/test/
ServerName test.dagongz.com
<Directory "/var/www/html/test/">
allow from all
Options +Indexes
</Directory>
</VirtualHost>

 

开启缓存Expires模块要有

ExpiresActive   on
ExpiresDefault   "access plus 86400 second"

 

卸载Mysql
 


[root@localhost ~]# rpm -qa|grep mysql
 
mod_auth_mysql-2.6.1-2.2
 
php-mysql-4.3.9-3.15
 
mysql-devel-4.1.20-1.RHEL4.1
 
mysql-4.1.20-1.RHEL4.1
 
mysqlclient10-3.23.58-4.RHEL4.1
 
libdbi-dbd-mysql-0.6.5-10.RHEL4.1
 
 
说明:rpm –qa | grep mysql 命令是为了把mysql相关的包都列出来,我上面的例子是Linux AS4默认安装mysql的rpm软件包列表,

如果是别的Linux版本列出来的列表有可能会不一样,不过不用担心,不管是什么,卸载都从最下面的一个包开始,直到卸载掉第一个为止。 
 
说明:rpm –e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mysqlclient10-3.23.58-4.RHEL4.1包

方法如下:
 
rpm –e mysqlclient
 
 
卸载Apache

 
[root@localhost ~]# rpm -qa|grep httpd
 
httpd-manual-2.0.52-25.ent
 
system-config-httpd-1.3.1-1
 
httpd-2.0.52-25.ent
 
httpd-suexec-2.0.52-25.ent
 
 
说明:方法跟卸载Mysql一样,不用说了吧
 
 
卸载PHP

 
[root@localhost ~]# rpm -qa|grep php
 
php-odbc-4.3.9-3.15
 
php-4.3.9-3.15
 
php-mysql-4.3.9-3.15
 
php-pear-4.3.9-3.15
 
php-ldap-4.3.9-3.15
 
php-pgsql-4.3.9-3.15
 
 
说明:方法跟卸载Mysql一样
 
 
注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。
 
 
如果实在实在有卸载不掉的包,可以加—nodeps这个参数来卸载,比如我们卸载php-4.3.9-3.15,实在卸不掉了。
 
 
就用:
 
[root@localhost ~]# rpm -e php-4.3.9-3.15 --nodeps