CentOS搭建Apache+php+MySQL+Redis环境
要搭建一个本地linux服务器环境,按照网络教程依葫芦画瓢,噼里啪啦搭好后,发现redis服务怎么也弄不好,不喜欢那种明知有问题却无从下手又无能为力的感觉,碰了无数次壁以后,我决定卸载,重头来过,并尽可能的记住每个步骤同时也理解每个步骤。为自己也为和我一样遇到困难的朋友们做个参考。
人活着,就应该迎难而上,不怕艰难险阻,哈哈哈哈哈!
好了,切入正题:
一,安装虚拟机和centOS系统:
我使用的虚拟机是:vmware-workstation-11_gr.7z
系统是:CentOS-7-x86_64-Minimal-1611.iso
下载虚拟机之后,解压可以看到这样两个文件,单击安装,也就是红色箭头指向的那个文件,右键选择管理员运行,按照菜单提示操作。
vmware的安装,基本上就是一直下一步,这里不在赘述。安装成功后,桌面会出现虚拟机图标:
双击打开虚拟机,进入虚拟机主界面,选择添加新的虚拟机,开始安装虚拟机:
然后,按照提示操作。安装之前,会有一些设置比如时区,网络等等,基本选择默认就可以了。下面给出一些截图,是我在安装过程中选择的配置,并不是唯一的,按照自己的需要设置也可以。
这里的用户名和密码应该记住,将来连接自己的虚拟机的时候会用到。接下来的步骤如果没有特殊需要,直接默认就好了。
这个弹出框是提示有些需要安装的插件包没有,是否忽略继续安装,直接单击yes,可以安装好虚拟机后再安装这些插件。
这里是虚拟机的基础设置,基本都选择默认然后单击左上角的done就好了。时区和网络需要配置。因为默认的网络是动态ip会不断刷新,不利于我们每次连接,因此可设为静态ip,这样就不用每次都查看然后才能连接。
注意:上面的DNS设置是错误的,应该设为8.8.8.8!!!我随手输入的192.168.128.2没有任何依据。
进行到这里,如果有选项有感叹号,点进去直接默认设置,然后done,直到began installation出现之后单击它,开始安装。
然后在下面这个界面,一直等待,如果出现和刚刚一样的弹出框,都yes就好。
安装完成后会进入登录界面:
输入刚刚设置的用户名和密码:(密码输入时是不显示的,你确认正确后回车即可)。
这是登录成功的状态,这个时候可以查看自己的ip,通过命令 ip addr可以查看。
如果要看更清晰的信息,可以使用ifconfig命令:这个命令默认是未安装的,需要进入root模式,安装后方可使用
su root 回车
输入密码,登录成功后输入:
注意:需要设置虚拟机的网络适配器的模式为桥接,然后重启网络服务。
命令:
# service network restart # yum install net-tools
安装成功后,输入:ifconfig。
二,环境搭建
环境包括httpd,php,mysql以及redis。前三种都可以通过yum的方式安装,最后一种稍稍不同,下面分别记录:
1,安装httpd
命令:
# yum install httpd httpd-devel
安装后重启服务:
# service httpd start
关闭防火墙:
# service stop firewalld
检测是否成功:浏览器输入你的ip回车
如果出现这个界面,则说明安装成功。
2,安装php
命令:
# yum -y install php # yum -y install php-fpm
上面是基础的php,下面这个命令可以安装基础+扩展:
# yum install php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
安装成功后记得重启服务使php生效。
命令:
# systemctl restart httpd.service
写入测试文件:
# vi var/www/html/info.php
然后在文件中写入:<?php phpinfo();?>
访问:你的ip/info.php
出现这个则说明安装成功。
3,安装mysql
命令:
# yum -y install mariadb mariadb-server
安装完成后启动:
# systemctl start mariadb
数据库配置:
# mysql_secure_installation
1.第一步是询问,是否为root设置密码,可以设置也可以为空,为空时直可不输入密码直接登录数据库。
2.是否要移除匿名用户,选择是即可。
3.不允许root远程登录,选择否,也即是允许远程登录。(为了方便测试)。
4.是否移除测试数据库。选择是。
5.是否重新加载权限表,是。
测试完成后登录:mysql -uroot -p
安装插件:
# yum install php-mysql phhp-gd php-imap php-idap php-odbc php-pear php-xml php-xmlrpc
备注:安装好数据库之后,关闭虚拟机在开机,如果直接输入
[root@localhost ~]# mysql -uroot -p Enter password:
则会显示如下信息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
这是因为没有打开mariadb服务的原因,先打开服务再登录就好了:
[root@localhost ~]# systemctl start mariadb [root@localhost ~]# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
4,安装redis
安装wget命令:(wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。"wget" 这个名称来源于 “World Wide Web” 与 “get” 的结合。
# yum -y install wget
# yum -y install gcc
(1)安装redis:
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
解压源码:
tar -zxvf redis-3.0.4.tar.gz
进入解压目录:
cd redis-3.0.4
执行make编译Redis:
make MALLOC=libc
注意:make命令执行完成编译后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-rdb、redis-sentinel。
安装Redis:(记住是要进入解压后目录的src目录下执行)
# make install
或者执行:
cd src && make install
配置Redis能随系统启动:
# ./utils/install_server.sh
运行命令之后一直enter就好了,代码结果如下:
Welcome to the redis service installer This script will help you easily set up a running redis server Please select the redis port for this instance: [6379] Selecting default: 6379 Please select the redis config file name [/etc/redis/6379.conf] Selected default - /etc/redis/6379.conf Please select the redis log file name [/var/log/redis_6379.log] Selected default - /var/log/redis_6379.log Please select the data directory for this instance [/var/lib/redis/6379] Selected default - /var/lib/redis/6379 Please select the redis executable path [/usr/local/bin/redis-server] Selected config: Port : 6379 Config file : /etc/redis/6379.conf Log file : /var/log/redis_6379.log Data dir : /var/lib/redis/6379 Executable : /usr/local/bin/redis-server Cli Executable : /usr/local/bin/redis-cli Is this ok? Then press ENTER to go on or Ctrl-C to abort. Copied /tmp/6379.conf => /etc/init.d/redis_6379 Installing service... Successfully added to chkconfig! Successfully added to runlevels 345! Starting Redis server... Installation successful!
Redis服务查看、开启、关闭:
a.通过ps -ef|grep redis命令查看Redis进程
[root@localhost redis-3.0.4]# ps -ef |grep redis root 5843 1 0 12:18 ? 00:00:11 /usr/local/bin/redis-server *:6379 root 5885 2415 0 13:43 pts/1 00:00:00 grep --color=auto redis
b.开启Redis服务操作通过/etc/init.d/redis_6379 start命令,也可通过(service redis_6379 start)
[root@localhost redis-3.0.4]# service redis_6379 start Starting Redis server...
c.关闭Redis服务操作通过/etc/init.d/redis_6379 stop命令,也可通过(service redis_6379 stop)
[root@localhost redis-3.0.4]# service redis_6379 stop Stopping ... Redis stopped
redis.conf 的配置信息:
#是否后台运行 daemonize yes #pid文件保存路径 pidfile /usr/redis/run/redis_6379.pid #端口号 port 6379 #接收来自于哪个个ip地址的请求,如果不设置,将处理所有请求 bind 127.0.0.1 #超时,单位为秒 timeout 300 #log日志级别分为4级,debug,verbose,notice,warning,生产环境一般开启notice loglevel notice #log日志位置,不设置,默认打印命令行终端 logfile stdout #数据库个数,默认使用0数据库 datebase 16 #设置redis进行数据库镜像的频率,单位为秒,意思为当900秒之内有1个key发生变化时,进行镜像备份 save 900 1 save 300 10 save 60 10000 #进行镜像备份是否压缩 rdbcompression yes #镜像备份文件名 dbfilename dump.rdb #数据库镜像存放位置 dir /usr/redis/var/ #设置该数据库是否为其他数据库的从数据库 slaveof yes #设置同时链接的客户端数量 maxclients 12800 #是否默认备份数据库镜像到磁盘 appendonly no #设置对appendonly.aof同步的频率,always表示每次读写都进行,everysec表示只对写进行累积,每秒同步一次 appendfsync everysec #是否开启虚拟内存 vm-enabled no vm-swap-file /tmp/redis.swap vm-max-memory 0 vm-page 134217728 vm-page-size 32 vm-max-threads 4 hash-max-zipmap-entries 512 hash-max-zipmap-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 activerehashing yes
测试是否安装成功:
先进入src目录
[root@localhost src]# ./redis-server
若安装成功则:
6607:C 13 Dec 14:14:11.499 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf 6607:M 13 Dec 14:14:11.501 * Increased maximum number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.0.4 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 6607 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 6607:M 13 Dec 14:14:11.502 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 6607:M 13 Dec 14:14:11.502 # Server started, Redis version 3.0.4 6607:M 13 Dec 14:14:11.502 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1'
to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 6607:M 13 Dec 14:14:11.503 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.
This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root,
and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. 6607:M 13 Dec 14:14:11.503 * The server is now ready to accept connections on port 6379
(2)接下来安装redis-php扩展:
1.下载压缩包:
[root@localhost /]# cd /usr/local/src [root@localhost src]# wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz
解压缩:
[root@localhost src]# tar -zxvf 2.2.4.tar.gz
进入phpredis-2.2.4目录:
[root@localhost src]# cd phpredis-2.2.4
2.编译安装:
先使用phpize命令生成config配置文件
[root@localhost phpredis-2.2.4]# phpize Can't find PHP headers in /usr/include/php The php-devel package is required for use of this command.
提示缺少php-devel插件,安装
[root@localhost phpredis-2.2.4]# yum -y install php-devel
再执行phpize命令:
[root@localhost phpredis-2.2.4]# phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525
配置:
[root@localhost phpredis-2.2.4]# ./configure
备注:# ./configure --with-php-config=/usr/local/php/bin/php-config #这是带参数的配置,意思是去到参数指定的文件目录执行配置命令
编译:
[root@localhost phpredis-2.2.4]# make
安装:
[root@localhost phpredis-2.2.4]# make install
备注:安装完成,提示Installing shared extensions: /usr/lib64/php/modules/,是正常的。
配置php支持:
[root@localhost phpredis-2.2.4]# vi /etc/php.ini
在最后一行加上:
extension="redis.so"
保存后退出。
重启Apache服务使配置生效,然后测试:
[root@localhost phpredis-2.2.4]# systemctl restart httpd.service
重启服务后刷新当初测试php是否安装成功的页面,如果出现下面内容,则说明扩展安装成功。
到此为止,一个最基础的Apache+php+MySQL+Redis环境环境就搭建完成,后面有其他问题再进行补充,存在的问题还请多多指教!