更新:不要使用阿里云香港,其他香港服务器我认为也不稳妥

服务器因“涉及发布传播欺诈类违法违规内容”彻底被阿里云关停了,说明删除阿里云盾是没用的,无法申诉解封(要营业资质),不给退费,不能备份数据,白瞎了机器和心血,劳民伤财。文末补放上相关截图和从工单要来的咩咩超市遗照一张。

通过Notion查看本文 本文同步发布在j000e.com

前言

一直想有个自己的发卡网站,试着买点杂七杂八,终于在开学前这段空闲时间着手去做了,ZFAKA之前有所耳闻但是看起来不维护了,GitHub上发卡平台项目很多,我从中挑了一个Star比较多的,就是这个独角数卡https://github.com/assimon/dujiaoka。

最开始我使用LNMP一键脚本作为环境去搭建,但始终没能成功,至今不知道原因,遇到了各种问题包括PHP版本和Laravel不匹配(PHP应为7.4)等,最后卡在了网页安装界面上,报错如图纪念一下:

Untitled

问了一下TG群但是大家都要收费解答所以换了宝塔作为环境,项目中教程介绍也更加详细,另外心理作用感觉国内版宝塔不干净且还要注册账号,所以用了宝塔海外版aaPanel,不需要注册,干净许多。

系统用的是Ubuntu 20.04 LTS

服务器1C1G香港

安装环境

aaPanel官网: https://www.aapanel.com/

安装aaPanel:

wget -O install.sh <http://www.aapanel.com/script/install-ubuntu_6.0_en.sh> && sudo bash install.sh aapanel

最终会返回面板的登录地址和账号密码:

aaPanel Internet Address: <https://xx.xx.xx.xx:7800/ead667fd>
aaPanel Internal Address: <https://xx.xx.xx.xx:7800/ead667fd>
username: fshffdsa
password: 453rhg6d

防火墙开端口

VPS后台都会有防火墙端口设置,以阿里云举例,给面板添加个TCP的7800口:

Untitled

Untitled

安装环境

登录面板后,弹出默认安装的内容,选择如图即可:

Untitled

此外还需要在App Store中安装:

Untitled

PHP解禁函数&安装拓展

宝塔默认会禁用一些php的函数,导致artisan命令无法正确运行

在App Store中找到PHP-7.4,点击Setting,左侧Disabled functions 将以下函数删除:

Untitled

Untitled

接下来在左侧选择Install extensions,安装以下三个扩展:

Untitled

建立网站

下载项目代码

打开项目Releases:https://github.com/assimon/dujiaoka/releases

复制最新的包的url

Untitled

在服务器上下载,解压,改名,提权

wget <https://github.com/assimon/dujiaoka/releases/download/2.0.6/2.0.6-antibody.tar.gz>
tar -xvf 2.0.6-antibody.tar.gz
mv dujiaoka/ shop.j000e.co #我个人需要,可以不改名
chattr -i /home/wwwroot/shop.j000e.co/public/.user.ini
chown -R www /home/wwwroot/shop.j000e.co/

新建网站

在Website中Add site

注意Website Path是刚才解压出来的绝对路径;数据库在此会新建,后面会用来对接,最下面的两个SSL选项我这里没勾选因为我需要用自己的SSL证书,如果你没有SSL证书但是需要https,那么都勾选上即可,aaPanel会去申请Let's Encrypt的证书。

点Submit保存

Untitled

新建后点域名进入配置菜单

自定义SSL证书

进入SSL,Other certificate,填入SSL证书的KEY和PEM并Save即可,成功的话会出现绿色的Succesfully deployed字样,同时可以开启右上角的Force HTTPS,如果是CloudFlare颁发的证书,注意要将SSL/TLS模式调整为完全(严格),否则会出现本地媒体文件不走https导致小锁上有叹号。

Untitled

Untitled

设置项目伪静态和运行目录

进入Site directory

检查Site directory是否是前面解压的网站绝对路径

将Running directory选择为/public

如果下拉栏里没有/public选项,可以先把上面Site directory后面加上/public,Save,再该回去,Save,Running directory会出现/public的选项

Untitled

进入URL rewrite

选择laravel5并保存

Untitled

网站安装

这时可以打开网站了,填好信息即可

Untitled

报错”419 No Reason Phrase“或“0 err”

Untitled

编辑网站根目录的.env文件,配置如下选项(如果没有就新增):

vi .env
ADMIN_HTTPS=true

Supervisor配置

Run User为www

Run Dir为网站路径

Start Command为如下,注意中间的空格后面的路径对应自己的网站路径

/www/server/php/74/bin/php /home/wwwroot/shop.j000e.co/artisan queue:work

Untitled

邮件配置

本来是想用宝塔邮局做个自己域名的邮件系统的,但是阿里云25口无法解封导致宝塔邮局无法工作,所以换成了Outlook,而且用Outlook有个好处就是发邮件没有自建邮件系统那么容易进垃圾箱。

注册了一个新的Outlook邮箱或者在已有Outlook邮箱设置中新建一个别名(无所谓outlook,gmail,163还是什么邮箱,支持SMTP就行)

在微软账户设置-Security中新建一个App Password,不能直接用微软账号密码是因为那样会有验证码的环节,而App Password像一个绿色通道,不需要验证码就可以使用SMTP等服务

Untitled

Untitled

根据微软给出的SMTP配置填写独角数卡的系统设置中的邮件服务

Server name: smtp.office365.com Port: 587 Encryption method: STARTTLS

Untitled

注意:协议要写TLS而不是STARTTLS,否则会报错:

Connection could not be established with host smtp.office365.com :stream_socket_client(): unable to connect to starttls://smtp.office365.com:587 (Unable to find the socket transport "starttls" - did you forget to enable it when you configured PHP?)

原因是在swiftmailer中,TLS是STARTTLS,SSL是TLS。

参考:

How do I use STARTTLS with swiftmailer in php?

Untitled

给服务器开587的TCP口

Untitled

测试一下,填写个收件地址,能收到即可。

Untitled

让邮箱转发所有邮件

支付对接

对接方式有很多种,服务平台会从中收取佣金即费率。

另开一篇单独记录支付宝当面付申请流程→ 支付宝当面付申请流程

支付模式介绍

一方支付:点对点现金支付

例如,小白去买个面包,付了现金,一手交钱一手交货。这是最初的支付模式,就是点对点的直接交易过程。

二方支付:依托银行进行支付

例如,身处江苏的小白需要给远在重庆的小黑一笔资金,现今汇款已经非常方便,小白将钱存入银行账户,然后进行转账操作,通过银行就可以将资金给到小黑。这就是二方支付,银行是一个重要的媒介,依托银行的支付。

三方支付:资金由第三方担保平台结算完成交易

随着互联网的发展,出现了三方支付。例如,小白网购了一个产品,其资金不会直接转入卖家的账户,而是进入第三方担保平台,待小白收到产品确认没有任何问题,随即通知第三方担保平台,资金才会由第三方担保平台结算给卖家。某宝最初是以“第三方担保模式”解决网络交易中的资金安全问题,直到2011年首批支付牌照的下发,第三方支付公司出现。

四方支付:也叫聚合支付,是基于三方支付的拓展

因为所有的第三方支付公司都是独有的支付通道,例如支付宝,微信,京东等等,就会造成用户需要开设各类支付通道的账户,为了支付的便捷,出现了四方支付。

四方支付属于三方支付的拓展,简单来说,就是集成多个三方支付接口,开放给个人和商家。

第四方支付平台分2种:一种是易支付,平台参与结算,也就是资金经过平台手中(二清),有跑路风险;另一种是扫码支付,资金即时到达用户账户,平台不参与结算,用户只需在平台预存手续费。

支付方式简述

Untitled

当面付是支付宝的签约功能,只需要提供店铺门牌和内景照片即可,虽然有交易额限制,但作为个人商家足够用了,上传与支付宝账号同名营业执照会解除限制,这个方式是首选中的首选,除了不好申请没有缺点,具备完美的稳定性和官方的api回调。

码支付和易支付是两种支付方式,有很多商家提供这两种方式的付费服务,但分别存在不稳定、跑路和需要营业执照等弊端,而且平台费率不低。

码支付与易支付最大的区别就是码支付是上传自己的收款二维码收款,你的用户付款,款项是直接打到您自己的收款二维码号上的,而易支付是则是平台收款,金额满一定量可在平台上提现,这种二清的模式存在大量跑路案例。

码支付需要挂软件,有提供免挂服务的,原理是监听收款通知然后回调,对接易支付的无需挂软件。

自定义图标,favicon,背景图

在系统设置-站点模板中,可以看到独角数卡有三种主题可选,分别是默认的unicorn, Luna和hyper。

这里以Luna举例,其他主题同理。

luna背景图:/www/wwwroot/shop.j000e.co/public/assets/luna/img/background.png

luna和hyper的网站图标(favicon) 32X32:/www/wwwroot/shop.j000e.co/public/assets/style/favicon.ico

默认unicorn的网站图标(favicon) 32X32:/www/wwwroot/shop.j000e.co/public/favicon.ico

默认商品图片 512x512(网站 LOGO 共享此图,与后台自定义 LOGO 和商品图片不冲突): /www/wwwroot/shop.j000e.co/public/assets/common/images/default.jpg