windows + linux搭建PHP开发环境

搭建PHP开发环境

本文意在搭建基于Windows和Linux系统的开发环境,分别利用两个系统的优势:在windows上面安装IDE开发环境,在Linux上面安装LAMP测试环境;这样,既保证了开发的便捷性,又最大限度的保证了开发环境和生产环境的一致性。

1. 安装VMware

安装VMware10

准备搭建CentOS + Apache + Mysql + PHP + Memcached环境

2. 安装CentOS

2.1 安装CentOS-6.5

1. 安装

选择bridged(桥接模式)连接宿主机,VMWare虚拟出来的操作系统就像是局域网中的一台独立主机,它可以访问网内任何一台机器。

 

2. 关闭防火墙

# /etc/init.d/iptables status  //查看防火墙信息

# /etc/init.d/iptables stop  //关闭防火墙服务

# chkconfig iptables off  //永久关闭

 

3. 关闭SELinux

/usr/sbin/sestatus -v

# vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

 

重启系统

2.2 设置和同步服务器时间

# cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

# /usr/sbin/ntpdate ntp.api.bz

2.3 设置虚拟机固定IP

1. 修改文件

# vi /etc/sysconfig/network

NETWORKING=yes 

NETWORKING_IPV6=no 

GATEWAY=192.168.1.1 

HOSTNAME=localhost.localdomain

 

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 

#BOOTPROTO=dhcp  #dhcp是动态获取IP

BOOTPROTO=static  #static设置静态IP

IPADDR=192.168.0.114  #需要设置的静态IP

NETMASK=255.255.255.0  #掩码

TYPE=Ethernet 

HWADDR=XX:XX:XX:XX:XX:XX 

ONBOOT=yes

 

# vi /etc/resolv.conf

search localdomain 

nameserver 192.168.1.1  #指定DNS

 

防止v.conf文件被系统修改

# chattr +i /etc/resolv.conf

 

#service network restart

 

2. 测试互通性  

宿主机:ping 192.168.0.114测试。 

虚拟机:ping 192.168.0.102测试。

2.4 centos访问windows下的共享文件夹

在windows机器上创建一个文件夹(share)并将其设置为共享文件夹

在linux机器上创建挂载目录/mnt/windows

# mkdir /mnt/windows

将share目录挂载在/mnt/windows 目录下

# mount -t cifs -o username=Administrator,password=XXXXXX //192.168.1.146/share /mnt/windows

这样share目录就被挂载在/mnt/windows 下,进入/mnt/windows可以看到share里的所有文件

直接在/mnt/windows 目录下便可对windows系统上的共享文件进行拷贝

2.5 windows访问centos下的共享文件夹

1. 安装Samba服务器

# yum install samba samba-client samba-swat  //启动Samba服务器

# /etc/init.d/smb start/stop/restart  //启动、关闭、重启Samba服务

# service smb status  //查看samba的服务启动情况

# chkconfig smb on  //设置开机自启动

# vi /etc/samba/smb.conf  //配置Samba服务

 

2. Windows挂载CentOS

到windows客户端验证,访问\\192.168.0.114,提示输入用户名和密码,在此输入mac验证。

访问成功,可以看到公共的webdata目录。

将共享目录映射成Windows的驱动器

将Samba共享的webdata目录,映射成 Windows 的一个驱动器盘符:

右击“计算机”-->“映射网络驱动器”

 

在文件夹栏输入共享地址及路径,点击“完成”输入用户名和密码

 

映射完毕后,打开资源管理器可以看到映射的共享目录

3. 安装LAMP开发环境

3. 1 获取软件包

httpd-2.4.10.tar.gz

mysql-5.6.20.tar.gz

php-5.4.33.tar.gz

libxml2-2.9.1.tar.gz

libmcrypt-2.5.8.tar.gz

gd-2.1.0.tar.gz

zlib-1.2.8.tar.gz

autoconf-2.69.tar.gz

freetype-2.5.3.tar.gz

libpng-1.5.10.tar.gz

jpegsrc.v8b.tar.gz

所有源码包打包下载:

3.2 检查安装时使用的编译工具是否存在

# gcc -v

3.3 检查并卸载默认的低版本环境

#rpm -qa | grep -i httpd  // 查询系统中已安装的Apache相关软件包                                         

#service httpd stop      //如果 apache已开启,停止运行apache服务器                              #rpm -e httpd-xxx --nodeps  //卸载 apache服务器

php、 mysql卸载方法同上

3.4 搭建LAMP环境

需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装。但是在安装PHP之前,应先安装PHP5需要的最新版本库文件,例如libxml2、libmcrypt,以及GD2库等文件。安装GD2库是为了让PHP5支持 GIF、PNG和JPEG图片格式,所以在安装GD2库之前还要先安装最新的zlib、libpng、freetype和jpegsrc等库文件。而且中间还会穿插安装一些软件。

 

1. 解压tar.gz为后缀的压缩包软件

LAMP环境搭建所需要的每个软件的源代码文件,都是以.tar.gz提供给我们的打包压缩文件,所以我们必须将其解压再解包。可通过命令# tar zxvf tarfile.tar.gz达到目的。

 

2. 在linux系统中源代码包安装过程

进行解压后的目录,LAMP环境搭建所需要的软件都使用C语言开发的,所以安装源代码文件最少需要配置(configure)、编译(make)、安装(make install)三个步骤。

 

3. 安装libxml2最新库文件

step1:进入下载的软件源码包所在目录/usr/local/src/下,解压软件包libxml2-2.9.0.tar.gz到当前目录libxml2-2.9.0下,并进入libxml2-2.9.0目录。命令如下行所示:

# cd /usr/local/src  //进入软件源码包所在目录

# tar zxvf libxml2-2.9.0.tar.gz  //解包解压

# cd libxml2-2.9.0  //进入解包解压后的目录

 

step2:使用configure命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下。

# ./configure --prefix=/usr/local/libxml2  //选项--prefix=/usr/local/libxml2作用,是在安装时将软件安装到/usr/local/libxml2目录下。

 

step3:使用make命令编译源代码文件并生成安装文件。命令行如下示。

# make  //对软件源代码文件进行编译

 

step4:使用make install命令安装编译过的文件。命令行如下。

# make install  //开始安装libxml2库文件

 

如果安装成功以后,在/usr/local/libxml2/目录下将生成bin,include,lib,share四个目录。在后面安装 PHP5源代码的配置时,会通过在configure命令的选项中加上"--with-libxml-dir=/usr/local/libxml2"选 项,用于指定安装libxml2库文件的位置。

 

4. 安装libmcrypt最新库文件

安装方法与上面安装libxml2方法相同,注意configure时的路径/usr/local/libmcrypt

如果安装成功就会在/usr/local/libmcrypt/目录下生成bin,include,lib,man,share五个目录。然后在安 装PHP5源代码包的配置时,就可以通过configure命令加上“--with-mcrypt-dir=/usr/local/libmcrypt” 选项,指定这个libmcrypt库文件的位置。

如./configure时报错:configure: error: C++ compiler cannot create executables 。

解决方案:

运行下面命令,然后重新configure(配置)

# yum install gcc gcc-c++ gcc-g77

 

安装完成libmcrypt库以后,不同的linux系统版本有可能还要安装一下libltdl库。安装方法和前面的步骤相同,可以进入到解压缩的 目录/usr/local/src/libmcrypt-2.5.8下,找到libltdl库源代码所在的目录libltdl,进入这个目录按照下面几个 命令配置、编译、安装就可以了。

# pwd

# /usr/local/src/libmcrypt-2.5.8/libltdl  //进入软件源代码目录

# ./configure --enable-ltdl-install  //配置ltdl库的安装

# make  //编译

# make install  //安装

 

5. 安装zlib最新库文件

安装方法与前面安装libxml2的方法相同,要注意的地方就是路径/usr/local/zlib/。如果安装成功将会在/usr/local /zlib目录下生成include,lib,share三个目录。在安装PHP5配置时,在configure命令的选项中加上“--with- zlib-dir=/usr/local/libmcrypt”选项,用于指定zlib库文件位置。

 

6. 安装libpng最新库文件

安装方法与前面安装libxml2的方法相同,要注意路径/usr/local/libpng/

在./configure --prefix=/usr/local/libpng这步最后会提示:configure: error: ZLib not installed

解决方法如下:

进入zlib的源文件目录,执行命令 make clean,清除zlib

重新配置 ./configure,后面不要接--prefix参数

make && make install

进入libpng目录,执行命令 ./configure --prefix=/usr/local/libpng

make && make install

安装成功

 

7. 安装jpeg8最新库文件

step1:安装GD2库前所需的jpeg8库文件,需要自己手动创建安装需要的目录,它们在安装时不能自动创建。命令行如下。

# mkdir /usr/local/jpeg8  //建立jpeg8软件安装目录

# mkdir /usr/local/jpeg8/bin //建立存放命令的目录

# mkdir /usr/local/jpeg8/lib  //创建jpeg8库文件所在目录

# mkdir /usr/local/jpeg8/include //建立存放头文件目录

# mkdir -p /usr/local/jpeg8/man/man1 //建立存放手册的目录

 

step2:configure有点不一样,如下命令行示:

# ./configure \

--prefix=/usr/local/jpeg8/ \

--enable-share \

--enable-static

警告:configure: WARNING: unrecognized options: --enable-share

 

8. 安装freetype最新库文件

step1:进入软件源码包所在目录/usr/local/src/中,解压软件包freetype-2.5.3.tar.gz到当前目录freetype-2.5.3下,并进入freetype-2.5.3目录。命令行如下:

#cd /usr/local/src/   //进入软件源码包所在目录

#tar zxvf freetype-2.4.10.tar.gz  //解压包到freetype-2.4.10目录

#cd freetype-2.4.10  //进入目录freetype-2.4.10中

 

step2:使用configure命令检查并配置安装需要的系统环境,并生成安装配置文件。命令行如下:

# ./configure --prefix=/usr/local/freetype

# make  //对软件源代码文件进行编译

# make install  //开始安装freetype库文件

 

9. 安装autoconf最新的库文件

 

10. 安装最新的GD库文件

#./configure \

--prefix=/usr/local/gd \

--with-jpeg=/usr/local/jpeg8/ \

--with-png=/usr/local/libpng/ \

--with-freetype=/usr/local/freetype/

如果报错:

make[2]: *** [gd_png.lo] Error 1

make[2]: Leaving directory `/tmp/gd-2.0.35'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/tmp/gd-2.0.35'

make: *** [all] Error 2

解决方案:

vi gd_png.c

找到#include "png.h"改成#include "/usr/local/libpng/include/png.h"

 

11. 安装curl

# ./configure --prefix=/usr/local/curl

# make  //对软件源代码文件进行编译

# make install  //开始安装

 

./configure --prefix=/usr/local/curl --with-ssl=/usr/local/ssl

 

12. 安装新版本的apache服务器

卸载apr、apr-util

# yum remove apr apr-util

下载安装:

http://apr.apache.org/download.cgi

apr-1.4.6.tar.gz

# ./configure --prefix=/usr/local/apr-httpd/ && make && make install

下载安装:

http://apr.apache.org/download.cgi

apr-util-1.5.1.tar.gz

# ./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/ && make && make install

 

下载:http://sourceforge.net/projects/pcre

# unzip -o pcre-8.35.zip

# cd pcre-8.35

# ./configure --prefix=/usr/local/pcre

# make

# make install

 

# ./configure \

--prefix=/usr/local/apache2 \

--enable-mods-shared=all \

--enable-deflate \

--enable-speling \

--enable-cache \

--enable-file-cache \

--enable-disk-cache \

--enable-mem-cache \

--enable-so \

--enable-expires=shared \

--enable-rewrite=shared \

--enable-static-support \

--sysconfdir=/etc/httpd \

--with-z=/usr/local/zlib/ \

--with-apr=/usr/local/apr-httpd/ \

--with-apr-util=/usr/local/apr-util-httpd/ \

--with-pcre=/usr/local/pcre/ \

--disable-userdir

# make && make install

 

安装完成后,进入/usr/local/apache2/目录下:

# vi /etc/httpd/httpd.conf

添加:

ServerName localhost:80

修改:

User mac

Group mac

<Directory />

    AllowOverride none

    Require all granted

</Directory>

 

# /usr/local/apache2/bin/apachectl start

# netstat -tnl|grep 80

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LIST

测试安装结果,打开浏览器,在地址栏中输入URL为:http://192.168.1.200/

如果浏览器中出现It works!则表明Apache服务器可以使用。

 

# echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local

 

13. 安装MySQL

安装cmake(mysql5.5以后是通过cmake来编译的)

# tar -zxv -f cmake-3.0.2.tar.gz

# cd cmake-3.0.2

# ./configure

# make

# make install

 

创建mysql的安装目录及数据库存放目录

# mkdir -p /usr/local/mysql                 //安装mysql

# mkdir -p /usr/local/mysql/data            //存放数据库

创建mysql用户及用户组

# groupadd mysql

# useradd -r -g mysql mysql

 

安装mysql

# tar -zxv -f mysql-5.5.10.tar.gz

# cd mysql-5.5.10

# cmake .  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DENABLED_LOCAL_INFILE=1

 

# make

# make instal

 

参数说明:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql        //安装目录

-DINSTALL_DATADIR=/usr/local/mysql/data         //数据库存放目录

-DDEFAULT_CHARSET=utf8                        //使用utf8字符

-DDEFAULT_COLLATION=utf8_general_ci            //校验字符

-DEXTRA_CHARSETS=all                            //安装所有扩展字符集

-DENABLED_LOCAL_INFILE=1                        //允许从本地导入数据

 

注意事项:

重新编译时,需要清除旧的对象文件和缓存信息。

# make clean

# rm -f CMakeCache.txt

# rm -rf /etc/my.cnf

 

配置

设置目录权限

# cd /usr/local/mysql

# chown -R root:mysql . //把当前目录中所有文件的所有者所有者设为root,所属组为mysql  # chown -R mysql:mysql data

# cp support-files/my-default.cnf /etc/my.cnf //将mysql的启动服务添加到系统服务中

 

创建系统数据库的表

# cd /usr/local/mysql

# scripts/mysql_install_db --user=mysql

 

设置环境变量

# vi /root/.bash_profile  

在PATH=$PATH:$HOME/bin添加参数为:

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

source /root/.bash_profile

 

手动启动mysql

# cd /usr/local/mysql

# ./bin/mysqld_safe --user=mysql &   //启动MySQL,但不能停止  启动日志写在此文件下:/usr/local/mysql/data/localhost.err

 

关闭MySQL服务

# mysqladmin -u root -p shutdown

 

另一种简单的启动mysql的方法(mysql已经被添加到系统服务中)

# service mysql.server start

# service mysql.server stop

# service mysql.server restart

 

# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# chkconfig --level 2345 mysqld on

 

修改MySQL的root用户的密码以及打开远程连接

 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

 

# mysql -u root mysql  mysql>use mysql;

mysql>desc user;

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";  //为root添加远程连接的能力。

mysql>update user set Password = password('xxxxxx') where User='root';

mysql>select Host,User,Password  from user where User='root'; 

mysql>flush privileges;

mysql>exit

重新登录:mysql -u root -p

注:如果不能远程连接,出现错误mysql error number 1130,则加入下面语句试试:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;

 

如果遇到错误信息:

checking for tgetent in -lncurses... no

checking for tgetent in -lcurses... no

checking for tgetent in -ltermcap... no

checking for termcap functions library... configure: error: No curses/termcap library found

原因:缺少ncurses安装包

解决方案:

执行下面三行命令,执行完之后重新./configure(配置)

# yum list|grep ncurses

# yum -y install ncurses-devel

# yum install ncurses-devel

# make && make install

 

利用mysql.server来制作启动程序,实质也是调用的mysqld_safe

# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# chkconfig mysqld on 

 

14. 安装最新版的PHP模块

进入php-5.4.33源码包编译

# ./configure \

--prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-apxs2=/usr/local/apache2/bin/apxs \

--with-mysql=/usr/local/mysql/ \

--with-libxml-dir=/usr/local/libxml2/ \

--with-png-dir=/usr/local/libpng/ \

--with-jpeg-dir=/usr/local/jpeg8/ \

--with-freetype-dir=/usr/local/freetype/ \

--with-gd=/usr/local/gd/ \

--with-zlib-dir=/usr/local/zlib/ \

--with-mcrypt=/usr/local/libmcrypt/ \

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

--with-curl=/usr/local/curl \

--enable-soap \

--enable-mbstring=all \

--enable-sockets

 

 

make(配置)

提示信息:

Build complete.

Don't forget to run 'make test'.

解决方案:

不要make test 直接make install

 

报make: *** [ext/gd/gd.lo] error

解决方法:

vi <gd_dir>/include/gd_io.h

gdIOCtx结构中增加void *data;

格式如下

typedef struct gdIOCtx

{

int (*getC) (struct gdIOCtx *);

int (*getBuf) (struct gdIOCtx *, void *, int);

void (*putC) (struct gdIOCtx *, int);

int (*putBuf) (struct gdIOCtx *, const void *, int);

/* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */

int (*seek) (struct gdIOCtx *, const int);

long (*tell) (struct gdIOCtx *);

void (*gd_free) (struct gdIOCtx *);

void (*data);

}

gdIOCtx;

 

# vi /usr/local/gd/include/gd_io.h

 

安装完成后,需要建立PHP配置文件。在使用configure命令安装配置时使用“--with-config-file-path=/usr /local/php/etc/”选项,指定了配置文件的位置。将源码包下面的php.ini-development 文件复制到/usr/local/php/etc/中,并改名为php.ini即可,如下示:

# cp php.ini-development /usr/local/php/etc/php.ini

;date.timezone 前面的分号去掉,改成date.timezone ="PRC"

 

# vi /etc/httpd/httpd.conf

AddType application/x-gzip .gz .tgz

下方添加:

AddType application/x-httpd-php .php .phtml

修改:

<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>

 

# /usr/local/apache243/bin/apachectl restart

 

测试PHP环境是否可以正常运行,在/usr/local/apache2/htdocs目录下建一个test.php

<?php

phpinfo();

?>

打开浏览器,在地址栏输入http://192.168.0.200/test.php来运行该文件,显示PHP环境,说明LAMP环境安装成功。

3.5 安装PHP扩展包 - memcached

1. 确认是否安装gcc-c++等组件

# yum  install gcc+ gcc-c++

 

2. 安装SASL相关环境

# yum install cyrus-sasl-plain cyrus-sasl  cyrus-sasl-devel  cyrus-sasl-lib

 

3. 安装源码包libmemcached

# wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz 

# tar zxvf libmemcached-1.0.16.tar.gz

# cd libmemcached-1.0.16

# ./configure --prefix=/usr/local/libmemcached --enable-sasl

# make

# make install

 

4. 安装源码包memcached

安装MEMCACHED前需要确认是否有zlib-devel

# yum install zlib-devel

# wget http://pecl.php.net/get/memcached-2.1.0.tgz

# tar zxvf memcached-2.1.0.tgz

# cd memcached-2.1.0

# /usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-config-file-path=/usr/local/php/etc -with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl

# make

# make install

 

5. 修改php.ini文件

增加

extension=memcached.so

memcached.use_sasl = 1

3.5 安装PHP扩展包 - openssl

 

3.6 用memcached存取session

#vi php.ini

修改:

session.save_handler = memcached

session.save_path = “192.168.1.10:11211”

session.gc_maxlifetime = 1440(单位是秒)

添加:

[memcached]

memcached.use_sasl = On

memcached.sess_binary = On

memcached.sess_sasl_username = “root”

memcached.sess_sasl_password = “XXXXXX”

memcached.sess_locking = Off

3.7 配置Aapche服务器vhosts

# vi /etc/httpd/httpd.conf

# Virtual hosts

Include /etc/httpd/extra/httpd-vhosts.conf

 

# vi /etc/httpd/extra/httpd-vhosts.conf

<VirtualHost *:80>

    DocumentRoot "/usr/local/webdata/main"

    ServerName www.caotou.me

    ServerAlias caotou.me

    <Directory "/usr/local/webdata/main">

        Options Indexes FollowSymLinks

        AllowOverride All

        Order allow,deny

        Allow from all

 

        RewriteEngine on

        RewriteCond %{REQUEST_FILENAME} !-d

        RewriteCond %{REQUEST_FILENAME} !-f

        RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

    </Directory>

</VirtualHost>

 

重启Apache

3.8 配置客户端hosts

Firefox安装HostAdmin插件

#==== dev

192.168.0.114 www.caotou.me

192.168.0.114 caotou.me

192.168.0.114 main.caotou.me

192.168.0.114 passport.caotou.me

192.168.0.114 game.caotou.me

192.168.0.114 admin.caotou.me

192.168.0.114 static.caotou.me

4. 搭建Memcached服务器

Memcached服务器模拟阿里云的OCS环境,安装在192.168.1.10服务器

4. 1 安装SASL

# rpm -qa | grep sasl

 

# cyrus-sasl-plain-2.1.23-8.el6.i686

# cyrus-sasl-devel-2.1.23-8.el6.i686

# cyrus-sasl-2.1.23-8.el6.i686

# cyrus-sasl-lib-2.1.23-8.el6.i686

# cyrus-sasl-gssapi-2.1.23-8.el6.i686

# cyrus-sasl-md5-2.1.23-8.el6.i686

 

# saslauthd -v

saslauthd 2.1.23  

authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

 

# vi /etc/sysconfig/saslauthd

MECH=shadow

 

# /etc/init.d/saslauthd restart

停止 saslauthd:[确定]

启动 saslauthd:[确定]

 

# ps aux | grep saslauthd

# /etc/init.d/saslauthd start

# chkconfig saslauthd on

 

# /usr/sbin/testsaslauthd -u root -p 123

0: OK "Success."

 

testsaslauthd出现0: NO "authentication failed"的解决方法

# setsebool -P allow_saslauthd_read_shadow 1

 

/usr/sbin/saslpasswd2 -a memcached -c root

Password:   

Again (for verification): 

4. 2 安装libevent

# tar -zxvf libevent-2.0.12-stable.tar.gz  

# cd libevent-2.0.12-stable  

# ./configure --prefix=/user/locallibevent

# make

# make install

4. 3 安装memcached

# tar -zxvf memcached-1.4.6.tar.gz  

# cd memcached-1.4.6  

# ./configure --enable-sasl --prefix=/user/local/memcached --with-libevent=/user/locallibevent

make

make install

 

# cd /etc/init.d  

# vi memcached

 

    #!/bin/sh  

    #  

    # Startup script for the server of memcached  

    #http://blog.rekfan.com/?p=172  

    # processname: memcached  

    # pidfile: /usr/local/memcached/memcached.pid  

    # logfile: /usr/local/memcached/memcached_log.txt  

    # memcached_home: /etc/memcached  

    # chkconfig: 35 21 79  

    # description: Start and stop memcached Service  

      

    # Source function library  

    . /etc/rc.d/init.d/functions  

      

    RETVAL=0  

      

    prog="memcached"  

    basedir=/usr/local/memcached  

    cmd=${basedir}/bin/memcached  

    pidfile="$basedir/${prog}.pid"  

    #logfile="$basedir/memcached_log.txt"  

      

    # 设置memcached启动参数  

    ipaddr="192.168.1.101"          # 绑定侦听的IP地址  

    port="11211"                    # 服务端口  

    username="root"                 # 运行程序的用户身份  

    max_memory=64                   # default: 64M | 最大使用内存  

    max_simul_conn=1024             # default: 1024 | 最大同时连接数  

    #maxcon=51200  

    #growth_factor=1.3              # default: 1.25 | 块大小增长因子  

    #thread_num=6                   # default: 4  

    #verbose="-vv"                  # 查看详细启动信息  

    #bind_protocol=binary           # ascii, binary, or auto (default)  

      

    start() {  

    echo -n $"Starting service: $prog"  

    $cmd -d -m $max_memory -u $username -l $ipaddr -p $port -c $max_simul_conn -P $pidfile  

    RETVAL=$?  

    echo  

    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog  

    }  

      

    stop() {  

    echo -n $"Stopping service: $prog  "  

    run_user=`whoami`  

    pidlist=`ps -ef | grep $run_user | grep memcached | grep -v grep | awk '{print($2)}'`  

    for pid in $pidlist  

    do  

    #           echo "pid=$pid"  

    kill -9 $pid  

    if [ $? -ne 0 ]; then  

    return 1  

    fi  

    done  

    RETVAL=$?  

    echo  

    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog  

    }  

      

    # See how we were called.  

    case "$1" in  

    start)  

    start  

    ;;  

    stop)  

    stop  

    ;;  

    #reload)  

    #    reload  

    #    ;;  

    restart)  

    stop  

    start  

    ;;  

    #condrestart)  

    #    if [ -f /var/lock/subsys/$prog ]; then  

    #        stop  

    #        start  

    #    fi  

    #    ;;  

    status)  

    status memcached  

    ;;  

    *)  

    echo "Usage: $0 {start|stop|restart|status}"  

    exit 1  

    esac  

exit $RETVAL

 

# chmod +x memcached

# chkconfig --add memcached

# chkconfig memcached on

 

启动memcached服务器,启用SASL验证功能,在启动时需要加-S(大写S)参数

# service memcached start

或者

# /usr/local/memcached/bin/memcached -d -S -m 64 -u root -l 192.168.1.10 -p 11211 -c 1024 -P /usr/local/memcached/memcached.pid

 

# ps –ef|grep memcached

 

启动命令参数如下表

启动方式

 

-d

以守护程序(daemon)方式运行

-u root

指定用户,如果当前为 root ,需要使用此参数指定用户

-P /tmp/a.pid

保存PID到指定文件

内存设置

 

-m 1024

数据内存数量,不包含memcached本身占用,单位为 MB

-M

内存不够时禁止LRU,报错

-n 48

初始chunk=key+suffix+value+32结构体,默认48字节

-f 1.25

增长因子,默认1.25

-L

启用大内存页,可以降低内存浪费,改进性能

安全设置

 

-S

启用sasl安全验证功能,开启后,客户端需要提供用户名密码方能访问memcached

连接设置

 

-l 127.0.0.1

监听的 IP 地址,本机可以不设置此参数

-p 11211

TCP端口,默认为11211,可以不设置

-U 11211

UDP端口,默认为11211,0为关闭

并发设置

 

-c 1024

最大并发连接数,默认1024,最好是200

-t 4

线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用

-R 20

每个event连接最大并发数,默认20

-C

禁用CAS命令(可以禁止版本计数,减少开销)

 

转载于:https://my.oschina.net/maczhao/blog/350035

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值