本文意在搭建基于Windows和Linux系统的开发环境,分别利用两个系统的优势:在windows上面安装IDE开发环境,在Linux上面安装LAMP测试环境;这样,既保证了开发的便捷性,又最大限度的保证了开发环境和生产环境的一致性。
安装VMware10
准备搭建CentOS + Apache + Mysql + PHP + Memcached环境
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. 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
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命令(可以禁止版本计数,减少开销) |