ThinkSNS+ PHP开发概述
Plus (读音:[plʌs],全称:ThinkSNS+ [θɪŋk es en es plʌs],是 ThinkSNS 系列产品一个重要版本,其软件识别名称为 Plus 即 +) 是一个基于 Latest Laravel 框架进行开发的一个功能强大、易于开发和强拓展的社交系统。与其他开源社交程序不同的是 Plus 拥有多年社交系统经验,不仅易于上手,还便于应用拓展。另一方面,程序采用 PHP 7 严格模式,从根本上尽量避免弱级错误的产生。同时因为从零开始选择较好的带有较好 ORM 的原因,Plus 允许你更具你的需求使用不同数据库。
如果你想深入学习 Plus,我们为你准备了大量教程级文档。哪怕你不会 Laravel 框架,也能让你入门框架基础,并胜任 Plus 应用开发。
如果你是有经验的 PHPer,那么你可以了解现代流行框架差异,Laravel 就是现代留下框架的佼佼者之一。
#PHP 环境要求
重点
你可能还没有很好的 Liunx 知识,没关系,后面的教程会拟定你是零基础的前提下教学,但是下面的环境要求限制,你需要重点记忆,这是程序能否运行的关键所在!
#PHP 版本
您的 PHP 必须大于或者等于 7.1.3 版本,当然,我们推荐 7.2. 版本。
#函数
在许多集成环境中,默认会禁用一些函数,当然,这些函数在 Plus 的 Web 服务中不是必须的,但是如果你在 CLI 环境下操作,这些函数将会成为必须:
· exec
· system
· scandir
· symlink
· shell_exec
· proc_open
· proc_get_status
#拓展
这些拓展是 Plus 运行时必须的拓展,你必须包装你的 PHP 环境已安装这些拓展:
· dom 用于解析 XML 等文档使用
· fileinfo 用于文件上传,或者获取文件 Meta 信息使用
· GD 用于图片处理的库
· json 一般 PHP 内核自带,用于处理 JSON 文档和转换
· mbstring 用于兼容性的字符串处理
· openssl 用于应用秘钥加密等,同时也是内部请求 HTTPS 资源使用
· PDO 数据库操作抽象库
#选择性拓展
选择性拓展是更具你的需求,选择性安装的拓展,选择性拓展如下:
· pdo_mysql 如果你使用 MySQL 数据库,则必须安装
· pdo_pgsql 如果你使用 PostgreSQL 数据库,则必须安装
· pdo_sqlite 如果你使用 SQLite 数据库,则必须安装
· pdo_dblib 如果你使用 Microsoft SQL Server 数据库,则必须安装
#可选或替换性拓展
· imagick 此库是一个比 GD 库处理图片更好的一个拓展,可以用于替换 GD 库,此库为可选性,安装后不可卸载 GD 库,GD 库可以用于更加高效的图片基础处理。
#数据库
Plus 支持四种数据库的使用,但是我仅推荐使用两个数据库。
· MySQL | MariaDB
o MySQL 请使用 >= 5.7 版本,当然,如果能用 MySQL 8 再好不过。
o MariaDB 是 MySQL 原作者后开发的一款关系型数据库,兼容 MySQL,如果你要使用,请选择大于或等于 10.3 版本。
· PostgreSQL 数据库是及其推荐的一个数据库,费用高昂但是起计算性能非常好,有条件可以直接使用。
· SQLite 是一个轻量级数据库,如果你只是想体验倒是不妨尝试,问题在于 SQLite 对于 Emoji 的储存有待改善(目前都不支持存储 Emoji)所以原则上 Plus 是不允许使用 SQLite 的。
· Microsoft SQL Server 就像不推荐 SQLite 一样,我们同样不推荐 Microsoft SQL Server 除非你确定你的系统不适用 Emoji 那么你可以无顾虑的使用 Microsoft SQL Server 了,因为 Microsoft SQL Server 同样支持 utf8 字符集,却无法支持四位长度的 Emoji 字符。
WARNING
答应我,在 SQLite 和 Microsoft SQL Server 没有很好默认支持 Emoji 之前,暂时用 MySQL 或者 PostgreSQL 好吗?我是认真的!不然你会遇到很多奇怪的问题!
#教程说明
从后面的教程开始,我们将从零基础开始教学,教学环境为 CentOS 7.4 版本的 Linux。教学环境如下:
· 教学使用服务器系统: CentOS 7.4
· 教学者使用系统: macOS
· SSH 工具: Termius
· 教学 PHP 版本:7.2
· 教学 MySQL 版本: 5.7
· 教学 Web 组件:Nginx
教学内容包括:
· 登入 Linux
· 安装 PHP 7.2
· 安装 MySQL 5.7
· 安装 Plus
· Nginx 安装
· 发布站点
#登入 Linux
这里虚拟一台主机,其 IP 地址我们假设为 hostname(正常情况下是一段 IP 地址),端口为 22,操作用户为 root。
在你的 SSH 工具中输入 ssh root@hostname -p 22 然后回车。然后输入你的主机密码即可。
hostname 等信息登录的时候替换为你的真实信息。
我们进入主机后,会进入用户家目录,如果你不知道家目录在说明为主,输入 pwd 命令即可看到。
#编译 PHP
本章将会带领你在 CentOS 7.4 系统上编译安装 PHP 7.2 环境,以及缺少的拓展安装。
#下载源码
我们打开PHP 官网下载页找到最新的 PHP 7.2 版本,以 7.2.9 为例:

我们点击绿色框部分的的地址,最后我们通过选择地区后得到最终地址为:http://cn2.php.net/distributions/php-7.2.9.tar.xz
我们得到文件下载地址后,登入 Linux,我们现在在服务器下载 PHP 源码,下载我们使用 curl 命令下载,检查你的服务器是否有这个命令输入 curl --help 如果有很大一串内容输出,则表示有该命令,如果输出内容为:
-bash: curl: command not found
1
那么,我们使用 CentOS 自带的 yum 命令进行安装:
yum install -y curl
1
等待命令执行完成即可,执行完成后,我们下载 PHP 源码:
curl -o php-7.2.9.tar.xz http://cn2.php.net/distributions/php-7.2.9.tar.xz
1
WARNING
如果你无法找到准确的文件下载地址,那么你点击绿色框的链接,会进入地区选择页面,例如你选择 China 地区,你会看到一个 cn2.php.net 的链接,鼠标放上去,「右键」点击「复制链接地址」你粘贴后会得到 http://cn2.php.net/get/php-7.2.9.tar.xz/from/this/mirror 这样的地址,如图:

复制得到地址后,我们运行下面的命令进行下载:
curl -L -o php-7.2.9.tar.xz http://cn2.php.net/get/php-7.2.9.tar.xz/from/this/mirror
1
#解压源码
解压源码之前,请先下载解压工具:
yum install -y tar xz
1
然后我们先将 XZ 归档解压为 tar 归档:
xz -d php-7.2.9.tar.xz
1
执行完成后,我们输入 ls 命令,你会看到现在 php-7.2.9.tar.xz 文件已经消失,而多出一个 php-7.2.9.tar 归档。此时我们来解压这个 tar 归档:
tar -xvf php-7.2.9.tar
1
解压完成后,运行 ls 命令会看到,多出一个 php-7.2.9 的目录了,好了我们现在就得到了源码。
如果你解压步骤失败,可能是下载的文件不是 .tar.xz 后缀归档,也有可能是下载过程中数据丢包,不用担心。你重新下运行 rm -rf php-7.2.9* 命令,将你之前下载的删除,然后重新下载即可。
ThinkSNS+ PHP开发概述的更多相关文章
- 第一章 Andorid系统移植与驱动开发概述 - 读书笔记
Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...
- HealthKit开发快速入门教程之HealthKit开发概述简介
HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...
- linux交叉环境的搭建以及嵌入式开发概述
嵌入式开发概述 由嵌入式本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别,嵌入式的开发分为系统总体开发,嵌入式硬件开发,嵌入式系统软件开发3大部分 在系统总体开发中,由于嵌入式系统与硬件依 ...
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
通过TCP建立可靠通讯信道 1)为了对应TCP协议里的客户端和服务器端,Socket包提供了Socket类和ServerSocket类. 2)Socket类构造函数及相关方法 Public Socke ...
- PHP.1-网站开发概述
网站开发概述 网站开发从本质来说,就是软件开发 1.B/S软件体系统结构 BS:浏览器与服务器的结构[降低客户端电脑的负荷,减轻维护成本,对CS的改进,可随时随地进行业务处理] #对美工要求比较高,注 ...
- Excel 开发概述
浅谈Excel开发:一 Excel 开发概述 做Office相关的开发工作快一年多了,在这一年多里,在插件的开发中遇到了各种各样的问题和困难,还好同事们都很厉害,在和他们的交流讨论中学到了很多的知识. ...
- Office 365开发概述及生态环境介绍(二)
本文于2017年3月19日首发于LinkedIn,原文链接在这里 在上一篇 文章,我给大家回顾了Office发展过来的一些主要的版本(XP,2003,2007,2013等),以及在Office客户端中 ...
- 微信小程序开发-概述
微信小程序开发-概述 一.小程序申请&APPID 登录微信平台申请成为小程序开发者,小程序不可直接使用服务号或订阅号的AppID,需要登录微信公众平台管理后台,在网站的"设置&quo ...
- Web前端开发最佳实践(1):前端开发概述
引言 我从07年开始进入博客园,从最开始阅读别人的文章到自己开始尝试表达一些自己对技术的看法.可以说,博客园是我参与技术讨论的一个主要的平台.在这其间,随着接触技术的广度和深度的增加,也写了一些得到了 ...
随机推荐
- Tomcat_异常_02_IOException while loading persisted sessions: java.io.EOFException
异常原因: EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败. 这是由于tomcat上次非正常关闭时有一些活动session被持久化(表现为一些临 ...
- Java中数学计算的相关方法
1:Math类 2.BigInteger类 3.BigDecimal类 BigInteger bi = new BigInteger("12433241123"); BigDec ...
- POJ3294Life Forms(广义后缀自动机)(后缀数组+二分+数状数组)
You may have wondered why most extraterrestrial life forms resemble humans, differing by superficial ...
- 用NodeJS打造多人在线聊天室(NodeJS & SocketIO & Express & EJS & MongoDB & Gulp)
项目背景 这个项目主要是为了玩玩NodeJS,项目的方向大概是做出类似QQ的在线聊天系统.想要在线体验可以点击在线演示. 项目使用PM2进行部署和管理,功能在不断的迭代开发中.如果你觉得这个项目比较有 ...
- 立方体贴图(Cubemap)
http://blog.csdn.net/asdjy123/article/details/51190643 点击打开链接 好东西保存方便查看 立方体贴图(Cubemap) 原文 Cubemaps 作 ...
- 洛谷【P1177】【模板】基数排序
题目传送门:https://www.luogu.org/problemnew/show/P1177 我对计数排序的理解:https://www.cnblogs.com/AKMer/p/9649032. ...
- bzoj 5120 无限之环 & 洛谷 P4003 —— 费用流(多路增广SPFA)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 https://www.luogu.org/problemnew/show/P4003 ...
- MATLAB模糊逻辑工具箱函数
说明:本文档中所列出的函数适用于Matlab5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档. 1. GUI工具 Anfisedit 打开ANF ...
- LAMP 2.0Apache日志切割
每次访问网站就会产生若干条日志,当然前提是已经配置了日志. 配置日志的文件在 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 把注释掉的这两行打 ...
- Linux查看并修改mysql的编码
系统:阿里云 一.查看mysql字符集 输入:show variables like 'character_set_%'; 二.修改某一个数据库的编码 输入:alter database dbname ...