您的位置:晶晶的博客>Linux>CentOS6.5(x86_64、64位)编译安装PHP5.5.25、nginx1.8.0、mysql5.6.24

CentOS6.5(x86_64、64位)编译安装PHP5.5.25、nginx1.8.0、mysql5.6.24

前言

很久没更新过博客了,最近首要工作---微生物发酵工程方面的养家糊口的工作待遇不太顺利,说白了就是老板不给加薪,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扩展)

http://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库需要)

http://anduin.linuxfromscratch.org/sources/other/libvpx-v1.3.0.tar.xz

下载tiff-4.0.3(gd库需要)

http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz

下载libpng(gd库需要)

http://downloads.sourceforge.net/libpng/libpng-1.6.17.tar.gz

下载freetype-2.5.5(gd库需要)

http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.5.5.tar.gz

下载jpegsrc-v9a(gd库需要)

http://www.ijg.org/files/jpegsrc.v9a.tar.gz

下载re2c-0.14.2(php安装扩展需使用)

http://ncu.dl.sourceforge.net/project/re2c/re2c/0.14.2/re2c-0.14.2.tar.gz

下载zlib-1.2.8(php使用)

http://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:晶晶的博客包分流

以上包文件晶晶的博客均提供分流源,地址构成为:http://blog.jjonline.cn/soft/加包名,例如上述GD库文件libgd-2.1.0.tar.gz网址貌似被墙,下载url就可以改为:http://blog.jjonline.cn/soft/libgd-2.1.0.tar.gz

---

下载php

http://cn2.php.net/distributions/php-5.5.25.tar.gz

下载nginx

http://nginx.org/download/nginx-1.8.0.tar.gz

下载已编译版本mysql

http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz

下载redis(php缓存中间件服务redis,与memcache类似)

http://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 http://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 http://anduin.linuxfromscratch.org/sources/other/libvpx-v1.3.0.tar.xz
wget http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz
wget http://downloads.sourceforge.net/libpng/libpng-1.6.17.tar.gz
wget http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.5.5.tar.gz
wget http://www.ijg.org/files/jpegsrc.v9a.tar.gz
wget http://ncu.dl.sourceforge.net/project/re2c/re2c/0.14.2/re2c-0.14.2.tar.gz
wget http://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 http://cn2.php.net/distributions/php-5.5.25.tar.gz
wget http://nginx.org/download/nginx-1.8.0.tar.gz
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz
wget http://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 http://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手动添加系统环境变量》http://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服务。

留下一篇相当棒的文章链接:http://cd4017.blog.sohu.com/230717726.html 这是一个高手写的,我就不再献丑了。

本文由鄙人原创,再补充的一些原创性的增强内容,为你的服务器配置加分:

鄙人本次安装之后的phpinfo截图:

phpinfo截图
转载请注明本文标题和链接:《CentOS6.5(x86_64、64位)编译安装PHP5.5.25、nginx1.8.0、mysql5.6.24

相关推荐

网友评论12

路人甲 表情
Ctrl+Enter快速提交
  1. #1

    有个问题想跟你请教下,服务器呗黑了,一般黑客在改了数据库之后都会去抹掉日志,有什么操作方法可以解决日志备份或者远程同步一份的,这样的话就算是被黑了 也可以查出来源;

    sendwil 1年前 (2016-05-04) 回复
    • @sendwil:将日志打包压缩后同步到网盘或其他服务器上,同步工具很多(比方说sync命令);基础原理是使用定时任务触发一个shell脚本,shell脚本内执行同步的任务。

      晶晶 1年前 (2016-05-09) 回复
      • @晶晶:多谢,多谢,我自己也查阅了一些资料,目前是通过shell脚本 走计划任务的方式处理的!

        sendwil 1年前 (2016-05-19) 回复
      • @晶晶:我现在系统做了如下操作:1、采用普通用户 切换root的方式登录系统;2、更换SSH端口,3、静止root远程登录,4、新建一个ftp用户 但是用户只能在指定的文件夹操作权限,此文件夹既不是系统核心目录,也不是WEB目录,如果需要修改web目录 就通过这个ftp传到ftp用户目录 在通过命令移动到网站根目录,这样的设置,博主觉得有什么漏洞不

        sendwil 1年前 (2016-05-19) 回复
        • @sendwil:个人认为是没有问题的,只是操作起来可能会繁琐一点点,通过限定ftp的活动范围安全性可能会提升不少。你这种方式通过这个ftp用户上传的文件的owner、group、other权限可能是属于这个ftp用户的(跑业务的程序宿主用户可能并不是这个ftp用户--例如跑nginx和php-fpm的用户),留意下这个ftp用户的各种权限设置,比如这个ftp用户的上传的文件的权限(rwx之类的)。
          我的做法是使用vsftp的虚拟用户,通过配置虚拟用户的宿主用户,统一了跑业务程序的宿主和ftp上传的文件的owner,例如:nginx、php-fpm宿主用户是nginx,vsftp配置了虚拟用户,这些虚拟用户的宿主也是nginx
          用vsftp的虚拟用户的好处较多:无需使用系统用户;ftp的用户名、密码以及ftp连接上后的默认根目录都可以很方便的定制,定制的同时这些虚拟的ftp用户上传文件到服务器后,这些文件的owner会自动转换成宿主用户(本例也就是nginx这个用户)

          晶晶 1年前 (2016-05-19)
        • @sendwil:我们现在其实用ftp 比较少,项目基本都走SVN更新这样版本比较容易控制,之前配置了下VSftp用户 但是好像用FTP工具登录不上,所以我就放弃了,现在 基本就走 项目修改-》SVN  配置文件处理-》root   大批量图片备份和还原-》SFTP

          sendwil 1年前 (2016-05-25)
        • @sendwil:博主,有个疑问 跟你请教下,我这边有个网站切换到新域名,但是里面很多图片路径还是老域名,尝试过的方法有 重新加载nginx 修改 nginx 缓存时间,貌似都没起作用

          sendwil 1年前 (2016-05-25)
        • @sendwil:缓存问题

          sendwil 1年前 (2016-05-27)
  2. #2

    你好 楼主 请教下, 在安装phpredis的时候  执行编译  phpize报错:‘-bash: phpize: command not found’,这个是什么原因,我是安装楼上的步骤执行的 没有什么报错。

    sendwil 1年前 (2016-04-19) 回复
    • @sendwil:环境变量配置丢失;参照“mysql5.6.24安装配置”中的“4、设置系统环境变量”,设置好环境变量即可。或者编译phpredis输入phpize命令时将完整的路径写全,假设你的php安装在/usr/local/php目录下,那么输入phpize命令时输入完整的路径:/usr/local/php/bin/phpize 即可

      晶晶 1年前 (2016-04-20) 回复
  3. #3

    确实很好 楼主是个牛人

    sendwil 1年前 (2016-04-19) 回复
  4. #4

    好全面啊,赞一个

    小童~一飞 2年前 (2015-10-21) 回复