CentOS 上搭建 PHP7 开发测试环境


Posted in PHP onFebruary 26, 2017

最近公司增加了一台测试用的服务器,当然因为只是测试用,所以决定所有东西都装到一个服务器上,用来我们自己撸代码,发测试版功能,做点小实验神码的,等等等等……反正就是方便用吧,所以自己来试了下搭建一台完全的 LAMP 开发/测试环境,当然同样踩到了无数的坑。

准备开始吧!

Step.1 准备服务器

那第一步,我们先搞个服务器吧,搞啥服务器呢,既然是测试用那就搞点不要钱的,或者方便的吧,这里就推荐大家试试用 AWS 或者自己机器上搭建虚拟机,比如 Vagrant 这样的开发平台也是可以的,这里,我们就用 AWS 了,反正可以免费一年, AWS 的优点是访问国外网站超快,缺点自然是国内访问超慢,当然大家用啥都可以的啦,这里假设我们已经有一台 CentOS 7 的服务器了,并且假设你可以远程链接到这台服务器(比如 ssh )。

Setp.2 安装配置 LAMP

首先我们安装 Apache
安装 Apache 很简单,只需要通过 yum 安装就可以了。

yum install httpd

安装完成后,使用 systemctl 命令启动,并设置为开机自动启动。

systemctl start httpd.service
systemctl enable httpd.service

出现问题时可以通过 systemctl status 来查看服务是否正确的启动了,也可以到 /var/log/httpd 路径下看访问日志和错误日志来排查问题。

新的 CentOS 已经装了 FirewallD 了,所以如果装了这个,我们还需要告诉 FirewallD 打开防火墙。

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

接下来装 MySQL

首先,我们要知道的是, MySQL 没有在 CentOS 7 的软件源库里面, CentOS 7 里面有对应的替代品 MariaDB ,因为龟壳公司收购了 MySQL ,大家怕万一将来 MySQL 闭源了,那不都跪了,于是就开了个分支自己开始做起 MariaDB 来了,这里我们还是手工添加 MySQL 的软件源来安装 MySQL 保证还是那个味道。

首先添加 MySQL 的软件源。

yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

接下来安装 MySQL 的客户端和服务端。

yum install mysql-server mysql-client

安装完成后,使用 mysql_secure_installation 来完成 MySQL 的安装配置。

同样需要为 MySQL 配置防火墙。

firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --reload

 
接下来我们安装 PHP 7

跟 MySQL 类似,目前发行包的软件源里面是不包含 PHP 7 ,只包含了 PHP 5.x ,所以为了安装 PHP 7 我们同样需要添加 PHP 7 的软件源,根据这几天的实验情况看, Remi 的 PHP 7 的软件包和插件比较完善,所以我们就先添加 Remi 的软件源。

yum install scl-utils
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

添加完成软件源后,我们就可以安装 PHP 7 和各种常用的包了。

yum install php70 php70-php-mysqlnd php70-php-curl php70-php-simplexml
yum install php70-php-devel php70-php-gd php70-php-json php70-php-mcrypt
yum install php70-php-mbstring php70-php-opcache php70-php-pear
yum install php70-php-pecl-apcu php70-php-pecl-geoip php70-php-pecl-imagick
yum install php70-php-pecl-json-post php70-php-pecl-memcache php70-php-pecl-memcached
yum install php70-php-pecl-xmldiff php70-php-pecl-zip php70-php-pspell php70-php-soap
yum install php70-php-tidy php70-php-xml php70-php-xmlrpc

接下来呢,这里其实还没装完,因为最初我是为了升级服务器 PHP 5.x 而装的 PHP 7 ,所以如果你的服务器已经装了 PHP 5.x 需要简单的升级下,那么在这里安装完成 PHP 7 的软件包以后删除 PHP 5.x 然后在安装 php70-php 这个包。

yum remove php php-common

然后

yum install php70-php 

之后修改配置文件重启 Apache 就可以了,要注意的是, PHP 7 的配置文件放到了 /etc/opt/remi/php70 路径下, PHP 7 的相关文件放到了 /opt/remi/php70/root/lib64/php 路径下。

好,这样,我们一个带着 PHP 7 的服务器就装好了,大家可以在上面自由玩耍享受 PHP 7 带来的性能。

Setp.3 安装 SASL 和 Memcached

首先 Memcached 大家都知道是什么东西了,那么我来说说 SASL 是什么鬼。 SASL 全称 Simple Authentication and Security Layer 用来做安全机制验证的,说简单点,就是用这个东西,我们可以让我们的 Memcached 在访问前需要验证下用户名密码,另外 Memcached 的 Binary 接口比需要使用 SASL 验证,否则就会输出 Writing an error: Unknown command 的错误(然而在 PHP 5.x 下,却正常。。。所以这个问题研究了好会儿)。

我们先安装 SASL 。

yum install cyrus-sasl-plain
yum install cyrus-sasl-devel
yum install cyrus-sasl
yum install cyrus-sasl-lib
yum install cyrus-sasl-gssapi
yum install cyrus-sasl-md5

安装完成后,通过 systemctl start saslauthd.service 命令启动这个服务,接下来,我们需要创建一个用户通过 SASL 验证来访问 Memcached 。

首先我们要修改 SASL 的配置来使用当前 /etc/shadow 中的用户账户以及密码来进行验证,所以我们修改 /etc/sysconfig/saslauthd 中的 MECH=shadow 告诉 SASL 使用系统的账户密码来验证,修改完后通过 systemctl restart saslauthd.service 重启 SASL 的进程。

可以通过下面的命令来验证用户是否可以正确的被验证了。

/usr/sbin/testsaslauthd -u username -p password

成功将会显示 0: OK “Success.” ,要注意的是这里的 username 和 password 是需要能够正常登录系统的用户名和密码,也就是需要记录在 /etc/shadow 文件中。

接下来我们安装 Memcached 需要的 libevent 。

yum install libevent libevent-devel

再接下来,我们需要通过源代码编译安装 Memcached ,因为默认在 yum 中的 Memcached 是没有开启 SASL 验证。

wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar zxvf memcached-1.4.15.tgz
cd memcached-1.4.15
./configure --enable-sasl --with-php-config=/opt/remi/php70/root/bin/php-config
make
make install

这样我们的 Memcached 也编译并安装完成了,接下来为 Memcached 的服务添加 SASL 验证和防火墙规则。

saslpasswd2 -a memcached -c [用来访问 memcached 用户]
firewall-cmd --permanent --zone=public --add-port=11211/tcp
firewall-cmd --reload

接下来我们启动 Memcached 。

/usr/local/bin/memcached -d -u [用来访问 memcached 的用户] -p 11211 -m 512 -c 1024 -S

上面参数中 -S 就是告诉 memcached 需要开启 SASL 验证。

Step.End

到此,开发环境的配置就结束了,大家愉快的玩耍吧,欢迎掷砖>_<

PHP 相关文章推荐
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
php 获取mysql数据库信息代码
Mar 12 PHP
PHP教程 基本语法
Oct 23 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
php封装的验证码类分享
Feb 26 #PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 #PHP
简单谈谈PHP中的trait
Feb 25 #PHP
laravel中命名路由的使用方法
Feb 24 #PHP
cakephp常见知识点汇总
Feb 24 #PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 #PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 #PHP
You might like
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
phpmyadmin的#1251问题
2006/11/25 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
python将图片文件转换成base64编码的方法
2015/03/14 Python
python查询sqlite数据表的方法
2015/05/08 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
2015个人半年总结范文
2015/03/09 职场文书
业务员管理制度范本
2015/08/06 职场文书
素质教育学习心得体会
2016/01/19 职场文书
2016年十一促销广告语
2016/01/28 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python