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支持页面回退的两种方法
Jan 10 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
简单的cookie计数器实现源码
Jun 07 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
PHP学习笔记(二):变量详解
Apr 17 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
thinkPHP的表达式查询用法详解
Sep 14 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
实现php删除链表中重复的结点
Sep 27 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
Yii框架where查询用法实例分析
Oct 22 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
PHP中的float类型使用说明
2010/07/27 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python破解同事的压缩包密码
2020/10/14 Python
python中最小二乘法详细讲解
2021/02/19 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
党支部创先争优活动总结
2014/08/28 职场文书
离职信范文
2015/06/23 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
React如何创建组件
2021/06/27 Javascript
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
Vue+Flask实现图片传输功能
2022/04/01 Vue.js