前言
很久没更新过博客了,最近首要工作---微生物发酵工程方面的养家糊口的工作待遇不太顺利,说白了就是老板不给加薪,so网站开发方面的许多事情都搁置在哪里,比如鄙人开发的J2主题依然停留在beta测试版。
本文是基于昨日(2015.5.15)搭建的一台CentOS6.5版本64位系统环境下nginx+mysql+php的生产环境(也就是俗称的LNMP环境)服务器而来。作为生产环境服务器,安全是首要的,某些极端的情况下甚至可以牺牲效率以提升生产环境的安全,第二就是效率。
鄙人实践用的服务器为CentOS6.5_x86_64,也就是centos6.5版本64位的系统,硬件1核心cpu、1G内存,阿里云标准低配ECS。本次安装的软件以及版本为:PHP5.5.26、nginx1.8.0、mysql5.6.24、redis3.0.1以及yum安装的vsftpd2.2.2;说一下版本选择的原因:php5.5是比较稳定的版本,还有更高的php5.6以及更低的php5.4乃至php5.3,另外参考各种消息php7将会在今年10月左右释放出正式版;nginx1.8.0是当前稳定版,当然当前开发版本还有nginx1.9.0;mysql呢有mysql5.1、mysql5.5、还有里程碑式版本5.7,所以选择当前稳定并且效率还不错的mysql5.6.24版本。
另外,php连接mysql的驱动不再使用mysql自带的libmysql,而是使用PHP自家开发mysqlnd驱动。这种改变对php代码来说没有任何影响,只是因为mysqlnd是php官方开发并支持的新的连接mysql的驱动底层组件,而且可以大大提高php访问mysql数据的性能。同时php使用PDO连接数据库是php开发组推荐的方式--也就是要启用php的pdo。
软件准备
yasm-1.3.0(php扩展)
https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
下载t1lib-5.1.2(php扩展)
ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-5.1.2.tar.gz
下载gd-2.1.0库安装包
https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.0.tar.gz
下载libvpx(gd库需要)
https://anduin.linuxfromscratch.org/sources/other/libvpx-v1.3.0.tar.xz
下载tiff-4.0.3(gd库需要)
https://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz
下载libpng(gd库需要)
https://downloads.sourceforge.net/libpng/libpng-1.6.17.tar.gz
下载freetype-2.5.5(gd库需要)
https://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.5.5.tar.gz
下载jpegsrc-v9a(gd库需要)
https://www.ijg.org/files/jpegsrc.v9a.tar.gz
下载re2c-0.14.2(php安装扩展需使用)
https://ncu.dl.sourceforge.net/project/re2c/re2c/0.14.2/re2c-0.14.2.tar.gz
下载zlib-1.2.8(php使用)
https://liquidtelecom.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
下载pcre-8.37(nginx使用)
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
tips:晶晶的博客包分流
以上包文件晶晶的博客均提供分流源,地址构成为:https://blog.jjonline.cn/soft/加包名,例如上述GD库文件libgd-2.1.0.tar.gz网址貌似被墙,下载url就可以改为:https://blog.jjonline.cn/soft/libgd-2.1.0.tar.gz
---
下载php
https://cn2.php.net/distributions/php-5.5.25.tar.gz
下载nginx
https://nginx.org/download/nginx-1.8.0.tar.gz
下载已编译版本mysql
https://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz
下载redis(php缓存中间件服务redis,与memcache类似)
https://download.redis.io/releases/redis-3.0.1.tar.gz
下载phpredis(php连接redis的扩展)
https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz
#进入包保存目录 cd /usr/local/src #开始下载软件包 wget https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz wget ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-5.1.2.tar.gz wget https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.0.tar.gz wget https://anduin.linuxfromscratch.org/sources/other/libvpx-v1.3.0.tar.xz wget https://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz wget https://downloads.sourceforge.net/libpng/libpng-1.6.17.tar.gz wget https://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.5.5.tar.gz wget https://www.ijg.org/files/jpegsrc.v9a.tar.gz wget https://ncu.dl.sourceforge.net/project/re2c/re2c/0.14.2/re2c-0.14.2.tar.gz wget https://liquidtelecom.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz ###上述11个基础软件包晶晶的博客均提供分流源### wget https://cn2.php.net/distributions/php-5.5.25.tar.gz wget https://nginx.org/download/nginx-1.8.0.tar.gz wget https://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz wget https://download.redis.io/releases/redis-3.0.1.tar.gz wget https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz #此处下载完毕文件名为2.2.7需改名 mv 2.2.7 phpredis-2.2.7.tar.gz
编译安装基础包
编译安装前yum安装基础必备环境
#yum安装基础必备环境包 #可以先将yum源更换为阿里云的源 #备份原先的yum源信息 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #从阿里云镜像站下载centos6的repo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo #安装repol扩展包 不然libmcrypt之类的包通过yum会找不到源 yum install epel-release #最后yum重新生成缓存 yum makecache #yum安装软件包 yum -y install tar zip unzip openssl* gd gd-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers make libmcrypt libmcrypt-devel fontconfig fontconfig-devel libXpm* libtool* libxml2 libxml2-devel t1lib t1lib-devel
1、编译安装yasm
cd /usr/local/src tar zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install cd ..
2、编译安装libvpx
xz -d libvpx-v1.3.0.tar.xz tar -xvf libvpx-v1.3.0.tar cd libvpx-v1.3.0 ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9 make && make install cd ..
3、编译安装tiff
tar zxvf tiff-4.0.3.tar.gz cd tiff-4.0.3 ./configure --prefix=/usr/local/tiff --enable-shared make && make install cd ..
4、编译安装libpng
tar zxvf libpng-1.6.17.tar.gz cd libpng-1.6.17 ./configure --prefix=/usr/local/libpng --enable-shared make && make install cd ..
5、编译安装freetype
tar zxvf freetype-2.5.5.tar.gz cd freetype-2.5.5 ./configure --prefix=/usr/local/freetype --enable-shared make && make install cd ..
6、编译安装libjpeg
tar zxvf jpegsrc.v9a.tar.gz cd jpeg-9a ./configure --prefix=/usr/local/jpeg --enable-shared make && make install cd ..
7、编译安装libgd
tar zxvf libgd-2.1.0.tar.gz cd libgd-2.1.0 ./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx make && make install cd ..
8、编译安装t1lib
tar zxvf t1lib-5.1.2.tar.gz cd t1lib-5.1.2 ./configure --prefix=/usr/local/t1lib --enable-shared #注意此处make 有参数 make without_doc && make install cd ..
9、编译安装zlib
tar zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure --prefix=/usr/local/zlib --enable-shared make && make install cd ..
10、编译安装re2c
tar zxvf re2c-0.14.2.tar.gz cd re2c-0.14.2 ./configure --prefix=/usr/local/ make && make install cd ..
11、编译安装pcre
tar zxvf pcre-8.37.tar.gz cd pcre-8.37 ./configure --prefix=/usr/local/pcre --enable-utf --enable-shared make && make install cd ..
编译安装PHP5.5.25
64位系统,LD_LIBRARY_PATH以及xpm库、ltdl库需要处理,否则安装php会出错(32位系统不需要处理)
cp -frp /usr/lib64/libltdl.so* /usr/lib/ cp -frp /usr/lib64/libXpm.so* /usr/lib/ export LD_LIBRARY_PATH=/usr/local/libgd/lib
开始编译安装php5.5.25
tar zxvf php-5.5.25.tar.gz cd php-5.5.25 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/ini --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --enable-ftp --enable-zip --with-xmlrpc --enable-soap --with-gettext --with-mcrypt --with-curl --enable-ctype make #测试编译结果 此处可测可不测 make test make install
php配置和php-fpm配置,以及php-fpm启动文件设置
#php、php-fpm配置和服务 groupadd nginx #添加php-fpm、nginx运行组 useradd -g nginx nginx #添加php-fpm、nginx运行用户 ulimit -SHn 65535 #提高负载链接数 rm -rf /etc/php.ini #删除系统可能存在的自带配置文件 cp php.ini-production /usr/local/php/etc/php.ini #复制生产环境配置文件 cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #复制php-fpm配置文件 #倘若图方便可以做一个软连接 ln -s /usr/local/php/etc/php.ini /etc/php.ini #添加软链接到/etc目录 ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到/etc目录 #编辑php-fpm配置文件 vi /usr/local/php/etc/php-fpm.conf #编辑 #找到相应位置编辑 user = nginx #设置php-fpm运行账号为nginx group = nginx #设置php-fpm运行组为nginx pid = run/php-fpm.pid #取消前面的分号 :wq! #保存退出 cp /usr/local/src/php-5.5.25/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm服务文件到启动目录 chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限 chkconfig php-fpm on #设置php-fpm开机启动 #编辑php配置文件 提高安全性 vi /usr/local/php/etc/php.ini #找到;date.timezone =取消前面的分号(若有) 修改为 date.timezone = PRC #设置时区 #找到 expose_php = On 修改为 expose_php = Off #http头信息中部显示php版本信息 若为On 则http头信息中会有X-Powered-By:PHP/5.5.25这种信息 #找到disable_functions = 禁止存在安全隐患的函数执行 disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname #其中passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,dl优先禁止 其他函数若需使用则去掉即可 #打开短标签支持 #某些程序需要短标签支持 如discuz 找到short_open_tag = Off 将Off改为On即可,此项酌情处理
启用php的加速器Opcache
#因为编译php时指定了--with-config-file-scan-dir=/usr/local/php/etc/ini #所以在目录/usr/local/php/etc/ini中的后缀为.ini的文件都会被自动加入到php配置中 mkdir /usr/local/php/etc/ini #建立php配置文件的额外搜寻目录 vi /usr/local/php/etc/ini/opcache.ini #建立opcache配置文件--此处也可以在php.ini中配置,不做讲解 #写入如下内容 [zendopcache] zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10 opcache.revalidate_freq=3600;文件更新检查 开发情况下需调整该参数 opcache.fast_shutdown=1 opcache.save_comments=0 :wq! #保存退出
编译安装nginx1.8.0
1、编译安装nginx1.8.0
cd /usr/local/src tar zxvf nginx-1.8.0.tar.gz cd nginx-1.8.0 #此处启用了https支持 不久的将来(2015年中吧)https可能将不再需要花钱购买ssl证书 详见:https://letsencrypt.org/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.37 --with-http_mp4_module --with-http_flv_module --with-http_realip_module --with-http_image_filter_module --with-http_stub_status_module make && make install cd ..
2、配置nginx
此处nginx配置变动较大,方案如下:
nginx日志存放在/data/log目录下,nginx多主机(一台服务器放置多个网站)支持采用一台主机一个配置文件;具体代码如下:
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.back #备份原始nginx配置文件 vi /usr/local/nginx/conf/nginx.conf #新建nginx配置文件并写入如下内容 ####### user nginx nginx;#此处必须与跑php-fpm的用户、用户组一致 本例均为nginx worker_processes 2; error_log /data/log/nginx_error.log; pid /data/pid/nginx.pid; events { use epoll; worker_connections 4096; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; server_tokens off;#http头中部显示nginx版本号 http头中仅有Server:nginx项 没有版本号 keepalive_timeout 65; client_max_body_size 8M;#最大post文件体大小 主要针对文件上传 此处8M 也就意味着网站中若有上传的文件大于8M是会上传失败的 gzip on; gzip_min_length 1k; gzip_types text/plain application/x-javascript text/css application/xml; #加载网站主机配置 include /usr/local/nginx/conf/vhost/*.conf; } ####### :wq! #保存退出 mkdir /usr/local/nginx/conf/vhost #建立nginx多个站点配置文件目录 vi /usr/local/nginx/conf/vhost/www.jjonline.cn.conf #建立www.jjonline.cn网站的nginx配置文件 写入配置内容如下: #此处文件名称以实际情况确定 但文件必须以.conf为后缀 ####### server { listen 80; server_name www.jjonline.cn; charset utf-8;#此处强行指定www.jjonline.cn中所有网页均为utf8编码 若不是注释掉即可 该行前加入分号或者#号 root /var/www/www.jjonline.cn/wwwRoot;#网站根目录 index index.html index.htm index.php; location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?s=$1 last; #针对thinkphp框架的rewrite规则 break; } } #This vhost Log Dir && Log Name access_log /data/log/www.jjonline.cn.log;#该网站的访问日志 #Error 404 Page Info error_page 404 /404.html; location = 404.html { root /var/www/www.jjonline.cn/wwwRoot; } #Error 50x Page Info error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/www.jjonline.cn/wwwRoot; } #Handle PHP fastcgi location ~ \.php$ { if (!-e $request_filename) { return 404; } root /var/www/www.jjonline.cn/wwwRoot; #fastcgi_pass unix:/dev/shm/fpm-dev.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #rotots none log location = /robots.txt { allow all; log_not_found off; access_log off; } #Cache all image 1 month location ~ .*\.(gif|jpg|jpeg|png|bmp|css|js)$ { expires 30d; } #Cache all public file 1 week #如果访客访问的网站中的某个图片不存在则返回网站根目录下名称为noImage.jpg的图片 #固网站根目录下应该存在noImage.jpg这个图片文件 本例也就是/var/www/jjonline.cn/wwwRoot/noImage.jpg location ~ .*\.(gif|jpg|jpeg|png|bmp)$ { if (!-f $request_filename){ rewrite ^ /noImage.jpg last; } expires 7d; } #Deny All hidden File location ~ /\. { deny all; access_log off; log_not_found off; } } ####### #可以将上述某一个网站(空间、虚拟主机)的配置文件做成一个模板 以后直接复制修改即可
手写nginx启动管理文件
mkdir /data/pid #建立nginx的pid存放目录 mkdir /data/log #建立nginx的日志存放目录 vi /etc/init.d/nginx #新建nginx服务管理文件 写入如下内容 ####### #Servernginx - this script starts and stops the nginx daemon # By www.jjonline.cn # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /usr/local/nginx/conf/nginx.conf # pidfile: /data/pid/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 #注意此处的nginx执行文件路径 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) #注意此处的nginx配置文件路径 NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { #configtest || return $? stop sleep 1 start } reload() { #configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; test) configtest || exit 0 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest|test}" exit 2 esac ####### :wq! #保存退出 chmod +x /etc/init.d/nginx #给予nginx执行权限 chkconfig nginx on #设置nginx开机启动
mysql5.6.24安装配置
本文下载的是已编译好的mysql文件包,若想自己编译,需要cmake,利用cmake去编译也可以,有现成的何必再编译呢?
1、解压文件包并移动到合适位置
tar zxvf mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz #解压 mv mysql-5.6.24-linux-glibc2.5-x86_64 /usr/local/mysql #移动 mkdir /data/mysql mkdir /data/mysql/data #建立mysql数据存储目录 groupadd mysql #添加mysql运行组 useradd -g mysql mysql #添加mysql运行用户 cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld #复制mysql服务管理文件 chmod +x /etc/rc.d/init.d/mysqld #给予该管理文件执行权限 vi /etc/rc.d/init.d/mysqld #编辑 找到 basedir= 和 datadir=修改为 basedir= /usr/local/mysql datadir=/data/mysql/data
2、mysql配置
rm -rf /etc/my.cnf #删除系统自带的mysql配置文件 cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf #复制mysql配置文件 vi /etc/my.cnf #编辑mysql配置文件 basedir= /usr/local/mysql datadir=/data/mysql/data #注意去掉相应行的注释 socket =/tmp/mysql.sock server_id = 1 #单台mysql #添加 user = mysql bind-address = 127.0.0.1 #若是单台mysql且不对外提供3306的公网端口 此项即可 port = 3306 #其他的mysql的详细配置 依据实际情况处理 此处不再赘述
3、初始化mysql并为mysql的root账户设置密码
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql #初始化mysql service mysqld start #启动mysql #设置mysql的root账户密码 敲入如下命令 连续两次回车后输入需要设置的密码(也是要输入两次)即可 /usr/local/mysql/bin/mysqladmin -u root -p password
4、设置系统环境变量
vi /etc/profile #在文件末尾添加 export PATH=$PATH:/usr/local/mysql/bin:/usr/local/nginx/sbin:/usr/local/php/bin:/usr/local/php/sbin #此处可以参考本博客另外一篇文章:《centos手动添加系统环境变量》https://blog.jjonline.cn/linux/165.html :wq! #保存退出 source /etc/profile #环境变量立即生效
redis3.0.1编译安装和phpredis编译安装并配置
1、redis3.0.1的编译安装
cd /usr/local/src tar zxvf redis-3.0.1.tar.gz cd redis-3.0.1 make #注意redis没有configure 直接make 也没有make install yum install tcl tcl-devel #redis 执行make test的必备包 make test mv /usr/local/src/redis-3.0.1/src /usr/local/redis #移动编译好的程序文件至指定目录 cp /usr/local/src/redis-3.0.1/redis.conf /usr/local/redis/redis.conf #复制配置
2、redis的配置
vi /usr/local/redis/redis.conf #编辑redis配置文件 #修改相关项为: pidfile /data/pid/redis.pid daemonize yes bind 127.0.0.1 #去掉该项注释 这样本机redis的6379端口就不会对公网开放 dir /data/ #修改redis的硬盘文件存储目录 这样redis的硬盘文件就会被存储在/data/目录下 logfile "/data/log/redis.log" #修改redis的日志文件存储位置 便于对log进行管理 :wq! #保存退出
3、redis服务管理文件编写
vi /etc/init.d/redis-server #新建redis服务管理文件 写入如下内容 ###### #!/bin/sh # # redis script starts and stops the redis daemon # By www.JJonline.Cn # chkconfig:- 85 15 # description: redis is an key-value RAM NOSQL DB \ # processname: redis # config: /usr/local/redis/redis.conf # pidfile: /data/pid/redis.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 #sbin name redis="/usr/local/redis/redis-server" prog=$(basename $redis) #lockfile lockfile=/var/lock/subsys/redis #service start pidfile=${PIDFILE-/data/pid/redis.pid} start(){ [ -x $redis ] || exit 5 echo -n $"Starting $prog: " daemon --pidfile ${pidfile} $redis /usr/local/redis/redis.conf retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } #service stop stop(){ echo -n $"Stopping $prog: " killproc -p ${pidfile} $redis retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } #service restart restart(){ stop sleep 1 start } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) #rh_status_q && exit 0 $1 ;; stop) #rh_status_q && exit 0 $1 ;; restart) $1 ;; status) rh_status ;; *) echo $"Usage: $0 {start|stop|status|restart}" exit 2 esac ###### :wq! #保存退出 chmod +x /etc/init.d/redis-server #给予执行权限 chkconfig redis-server on #添加redis开机启动
4、phpredis的安装和配置
cd /usr/local/src tar zxvf phpredis-2.2.7.tar.gz cd phpredis-2.2.7 phpize #执行php扩展编译 此处没有附带phpize的目录有啥原因?咱不说 ./configure #配置 此处也没有任何参数 就是因为前述设置好了环境变量 make && make install #编译完毕 会提示产生的phpredis扩展so文件目录 #php5.5.25在/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/目录下 #配置php支持phpredis vi /usr/local/php/etc/ini/phpredis.ini #新建phpredis配置文件,写入如下文件即可(这时候知道单独配置文件的好处了吧?) ###### [redis] extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/redis.so" ##### service php-fpm restart #重启php-fpm新扩展就可启用
网站FTP服务器软件vsftp安装配置
限于篇幅原因,vsftp的安装配置不再在本文展示,vsftpd使用yum安装很简单,主要是要配置vsftpd使用虚拟用户(这样就不需使用centos的系统用户来操作,还可以指定每个虚拟用户的根目录,比如本文中的网站www.jjonline.cn根目录/var/www/www.jjonline.cn/wwwRoot,设置ftp的跟目录为/var/www/www.jjonline.cn/,配合php代码,可以提高不少系统安全性),配合web服务。
留下一篇相当棒的文章链接:https://cd4017.blog.sohu.com/230717726.html 这是一个高手写的,我就不再献丑了。
本文由鄙人原创,再补充的一些原创性的增强内容,为你的服务器配置加分:
- 《Centos6.5运维笔记》https://blog.jjonline.cn/linux/171.html
- 《centos下nginx日志切割的bash脚本原理》https://blog.jjonline.cn/linux/170.html
- 《Linux系统CentOS6.2临时目录使用内存文件系统挂载》https://blog.jjonline.cn/linux/139.html
鄙人本次安装之后的phpinfo截图:
有个问题想跟你请教下,服务器呗黑了,一般黑客在改了数据库之后都会去抹掉日志,有什么操作方法可以解决日志备份或者远程同步一份的,这样的话就算是被黑了 也可以查出来源;