高铁🚝纪念币ICO你梭了吗?

好些天前,我的银行高管朋友就告诉我高铁🚝纪念币要ICO啦。于是我问她,咱继续走私募呗,到时候你从库里给我拿两盒就完了,我就不必大半夜去抢预定,以及到时候去银行排队兑换啦。

结果她和我说,她和老伴都从银行退下来了,都很少去银行了,现在求人办事不硬气了,都不好开口啦。到时候能不能参与私募不好说。

于是我说既然这样就别麻烦了,反正以前各种币的ICO也参与了不少,家里弄了好几大盒了,不过到现在别说百倍币十倍币,连个翻倍的都没有,所以这次随便换俩留着玩就好了。

昨天忙啊忙啊就忙到了大半夜,然后躺床上都快睡着了,突然想起零时是高铁纪念币ICO的开始时间啊,完蛋了,这都快过去一个小时了,额度一定都被抢光了吧。

从床上爬起来,打开工行的网站,找到预约网址,一看热门银行网点要么已经预约光了,要么只剩几枚币了,于是只好找了个超远超偏僻的网站,随便约了两组,然后睡觉。

早晨起床再去工行网站刷新一下,一看全都预约光了。看来这高铁🚝纪念币ICO还是相当火爆呢。


This page is synchronized from the post: 高铁🚝纪念币ICO你梭了吗?

为什么会出现 Missing Posting Authority

今天看到刘美女@deanliu一个帖子,徵求“發不出去”的解釋…. 说到发帖时出现Missing Posting Authority的提示,然后帖子发不出去。


(图源 :pixabay)

我在刘美女帖子底下回复说这是人品问题,充值一些人品就好了。尽管这个答案无限接近于事实,但是太过于抽象,所以我简单解释一下到底为啥会出现Missing Posting Authority

以往我们使用一些论坛之类的网站,都需要先登陆,然后发帖,这个登陆就是在服务器和你本地机器之前开通一会会话,服务器那端知道你是一个合法用户且已登陆,这时候就可以给服务器发送信息了。(大致是这样)

但是STEEMIT.COM登陆的过程呢,其实是把私钥放到浏览器本地存储的过程,其实并未与服务器建立任何类似会话之类的关联,也就是说对于服务器端,你登陆与否其实是没区别的。

那么登陆与否没区别,点赞、发帖、评论啥的又如何实现的呢,答案是你进行这一系列操作的时候本地生成了一组响应的操作数据,然后用私钥对上述数据进行签名,然后把签名后的数据发送给服务器(API Node)。服务器判断这组数据和签名没问题,就把数据丢到链上了,所以发帖等操作就成功了。(大致是这样)

可是按照这个逻辑我们既然登陆成功(将私钥保存到浏览器本地存储),并且点赞什么的都成功,或者有时候发短一些的文章也成功,那么为什么还会出现Missing Posting Authority错误呢?

答案在于签名和校验签名的过程,我说过,操作数据签名后要发送到API Node,这个过程说起来简单,其实是很复杂的,先要把操作数据按固定的格式组织,然后把它按一定规则换成二进制串(序列化),然后在取这个串的摘要,然后再对其签名,具体是不是这样我也不知道啦,总之很复杂就是啦。

然后呢,这串签名后的数据发给API Node之前会先调用一下校验,校验通过后再广播出去。校验通不过呢,就会出错喽。而我实际遇到过好多次,签名没啥问题,但是校验出错的情况,错误提示就是Missing Posting Authority

其实这是校验程序的一个BUG,但是很难被触发。我猜测可能是由于某个/某些个特殊的字符或者什么特定的条件触发。所以为什么一篇整篇文章发不出去,但是拆开发,并更新上去就可以成功,就是因为绕开了触发条件。

简单总结:

  • 这个问题是steem节点校验程序的一个BUG
  • 我不知道触发这个BUG的具体条件
  • 通过编辑内容啥的有可能绕开这个问题
  • 这个和带宽限制之类的无关


(图源 :pixabay)

至于我为何确定是校验程序而不是序列话或者签名等哪个环节的BUG,额,还是保密吧,哈哈哈。


This page is synchronized from the post: 为什么会出现 Missing Posting Authority

Ubuntu 18.04 上安装WordPress

在之前的帖子中,我们实现了在Ubuntu 18.04 安装Apache2、PHP7.2、MYSQL 以及Ubuntu 18.04 使用独立用户运行虚拟主机 (mpm-itk),这篇文章中我们以上述工作为基础,在Ubuntu 18.04 上安装WordPress 。


(图源 :pexels.com)

创建数据库

因为WordPress使用的是MySQL数据库(或者MariaDB),所以在安装之前,我们需要做些额外的工作:

  • 创建数据库
  • 创建数据库用户
  • 指定数据库的权限给对应用户

首先以root身份登陆MySQL

sudo mysql -u root -p

按提示输入sudo用户密码以及MySQL root密码后,出现如下提示:

然后依次执行如下命令:

CREATE DATABASE wordpressdb;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'aaaa@bbb123';
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';

好了,数据库准备好了,其中数据库名用户名密码是我随便起的,你可以根据自己的需求修改。

下载WordPress程序

WordPress程序可以在其官网下载:
https://wordpress.org/download/

你可以登陆自己的用户账户www目录后,直接使用如下指令下载最新版本。

wget https://wordpress.org/latest.tar.gz

然后使用如下指令将其解压:

tar xzvf latest.tar.gz

如果你想直接将www作为根目录,你需要将wordpress目录下的所有内容移动到上一层。

cd wordpress
mv * ../

好了,文件我们也准备好啦。

安装WordPress

剩下的事情就简单啦,访问你的域名,如果你绑定得没问题的话,文件上传也没问题,会自动跳转到WordPress的安装页面,然后按提示操作即可。


选择语言


提示信息


设置数据库信息,用我们之前创建的数据库以及数据库用户替换上述信息


提示信息


设置用户名密码等


安装成功!

测试访问

现在访问一下域名,看看我们的WordPress长啥样?


我晕,好难看。

让我登陆后台换个风格试试:


这个看起来好看多了,哈哈,这也说明后台功能正常,我安装的木有问题。

相关链接


This page is synchronized from the post: Ubuntu 18.04 上安装WordPress

腿不舒服的送餐员

晚上突然想吃垃圾食品,于是用百度外卖从麦当劳点了一份肯德基汉堡套餐。


(图源 :pexels.com)

之所以选麦当劳而没有选肯德基是因为点过几次肯德基,结果送餐慢的要死,等他送到的时候,我已经饿得来吃东西的力气都没有了。打过几次投诉电话,肯德基那边只是不断地道歉,说他们顾客太多、送餐人员太少,让我多体谅。

而麦当劳就好很多,承诺30分钟送达,如果送的晚了,会附赠一份免费汉堡券啥的,可以通过电话订餐使用。所以有时候尽管几分钟我也能接受,尽管他们送的券我嫌电话订餐麻烦,从未使用过。

可是今天的麦当劳左等不到右等也不到,已经快40分钟了,这严重的消磨了我的耐性。说好的三十分钟,你慢一点可以,慢太多就说不过去了啊,心说等送餐员到了,我一定要谴责他几句。

大约45分钟的时候,门铃终于响起,然后我按下开门按键打开单元门等送餐员送上来,结果左等也不上来右等也不上来,足足过了大约三四分钟,总算听到脚步声到达我底下的楼层。

然后又经过约达一分钟的时间,一个黑黑的胖胖的送餐员,拎着我的麦当劳出现在缓步台那。我打开房门,准备发泄我的怒火,这点楼层,蜗牛爬也用不了这么长时间啊。

没等我怒火发泄出来,黑胖的送餐员冲我一笑,然后我看着他拖拽着他的腿,费很大的劲上了一层台阶。我赶紧开门走下去,把快餐接过来。

他很感激的对我笑了笑,大眼睛在黑黑的脸上显得特别有神:“对不起哥,最近腿有点不舒服,走路费劲,送得有些慢了。” 我连忙对他说:“没关系,慢点下楼。”

回到屋子里,吃着垃圾食品,我觉得特别没有滋味,心里有些谴责自己:“如果不是我点了这份垃圾食品,他是不是就可以少送一份快餐,多休息一下呢?” 不过转念一想:“我不点,别人也会点的,他为了多赚一些钱,也不会休息的。”


(图源 :pexels.com)

哎,想太多了,这事不是我能解决的,还是专心吃我的汉堡套餐吧,不过怎么这么难吃呢?


This page is synchronized from the post: 腿不舒服的送餐员

Ubuntu 18.04 使用独立用户运行虚拟主机 (mpm-itk)

在昨天的帖子中介绍了如何在Ubuntu 18.04下安装Apache2、PHP7.2、MYSQL,完成安全后,我们略作设置并绑定域名就可以跑起网站啦。


(图源 :pexels.com)

默认配置

但是默认情况下,网站的目录配置为:

DocumentRoot /var/www/html

而Apache2的用户和用户组为

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

也就是说,如果我们想运行多个站点,站点的用户和组都是www-data,这样有个风险就是,一旦一个站点被黑,那么上载恶意脚本后很容易黑掉其它站点。

mpm-itk 模块

那么有没有办法已不同的用户运行虚拟主机呢?比如说a用户的虚拟主机程序用户和用户组都是a,而b用户的虚拟主机程序用户和用户组都是b,答案是使用mpm-itk 模块。

老一点的版本可能会使用以下指令安装模块:

sudo apt-get install apache2-mpm-itk

在Ubuntu 18.04下,上述指令无法安装mpm-itk,正确的指令为:

sudo apt-get install libapache2-mpm-itk

安装完成时会自动使能这个模块。

Setting up libapache2-mpm-itk (2.4.7-04-1) …
apache2_invoke: Enable module mpm_itk

如果需要手动使能相关模块,可以使用如下指令:

sudo a2enmod mpm_itk

提示信息如下:

Considering dependency mpm_prefork for mpm_itk:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Module mpm_itk already enabled

创建站点

安装好这个mpm_itk模块后,我们创建个新站点(可以从默认站点配置文件来修改)

cd /etc/apache2/sites-available
sudo cp 000-default.conf mysite.conf
sudo vi mysite.conf

然后主要修改如下:

ServerName mysite.com
<ifmodule mpm_itk_module>
AssignUserID mysite mysite
</ifmodule>
DocumentRoot /home/mysite/www
ErrorLog /home/mysite/logs/error.log
CustomLog /home/mysite/logs/access.log combined

然后使用adduser添加用户:

sudo adduser mysite

登陆上述用户,创建对应目录和站点文件。

然后执行如下指令启动站点:

sudo a2ensite mysite.conf
sudo systemctl reload apache2

权限错误

按上述操作配置后,访问站点会提示 403 Forbidden 错误:

查看错误日志发现类似如下错误:

[Tue Jul 17 00:46:08.773031 2018] [authz_core:error] [pid 12821] [client xxxxx:54251] AH01630: client denied by server configuration: /home/mysite/www/
[Tue Jul 17 00:46:11.360338 2018] [authz_core:error] [pid 12821] [client xxxx:54251] AH01630: client denied by server configuration: /home/mysite/www/

我一直以为是我libapache2-mpm-itk模块没有配置好,经过一整天的反复测试和调查后,才发现在apche2.conf中设置了如下访问限制。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>

<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

也就是说除了/var/www/以及/usr/share以外的目录都是禁止访问的。知道了这点就很好解决啦,在我们的mysite.conf中运行访问我们的目录就可以啦。

1
2
3
4
5
<Directory /home/mysite/www>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

再来测试一下,耶,一切正常。

总结

现在我们就可以已独立的用户运行虚拟主机啦,这样做安全性更高,也更便于管理。是不是很简单?

相关链接


This page is synchronized from the post: Ubuntu 18.04 使用独立用户运行虚拟主机 (mpm-itk)

Ubuntu 18.04 安装Apache2、PHP7.2、MYSQL

因为需要在一台Ubuntu服务器上放一个网站,好久没有做过类似操作了,因为对于用惯WHM/cPanel的我而言,建网站就和吃饭喝水一样简单,点啊点啊,就都搞定了。

在Linux上手工安装软件弄网站啥的,很久以前也做过,但是早就忘干净了,所以边做边记录一下吧。

Apache2

sudo apt-get install apache2

PHP 7.2

sudo apt-get install php7.2

<?php
phpinfo();
?>

MySQL

sudo apt-get install mysql-server php7.2-mysql mysql-client

mysql_secure_installation

sudo mysql_secure_installation


启用密码检查插件。


设置密码强度限制。


设置mysql root用户密码


移除匿名用户。


移除test数据库。


禁止root远程连接。


重新加载权限表确保上述修改生效。

重启Apache2 后查看phpinfo页面,会发现里边多出来mysqli以及mysqlnd相关内容。

管理指令

Apache2

sudo /etc/init.d/apache2 {start|stop|graceful-stop|restart|reload|force-reload}

MySQL

sudo /etc/init.d/mysql start|stop|restart|reload|force-reload|status

总结

大致就这样了,当然了,如果实际使用,还需要进一步的优化和加固,比如优化Apache的设置,调整PHP的配置文件等等,这里就不再赘述啦。


This page is synchronized from the post: Ubuntu 18.04 安装Apache2、PHP7.2、MYSQL

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×