轻松解决PHP8没有mysql插件问题

修复好info.php问题后,安装wordpress,创建数据库,修改wp-config.php,都很顺利,但是最后一步,进入浏览器后,出现下面告警
‘Your PHP Installation Appears to Be Missing the MySQL Extension Which Is Required by WordPress’

下面的网站虽然有一定参考意义,但是帮不了我。
方案1 How to Fix

还是靠自力更生,当然也参考方案2,通过非常简单的办法解决了问题。
直接sudo安装php8.0-mysqlnd即可

root@MDaliyun / # apt-get install php8.0-mysqlnd

Screen Shot 2021-01-24 at 11.16.37 PM

然后重新启动服务器

root@MDaliyun / # reboot

方案2 How To Fix "Your PHP Installation Appears To Be Missing The MySQL Extension Which Is Required By WordPress"

Trajectory Reconstruction轨迹重建

2020年,一场疫情打乱了普通人的生活,但是也挽救了交通部领导的命运。

李部长也许是2020年最幸运的人。

为了在2020年春运期间取消省级收费,2019年底,整个高速行业都在冲刺,冲刺完成全中国2.4万个龙门架自由流收费设施的改造。取消省界收费是国务院提出的民生项目,要求3年完成,但是由于李部长能力超强,1年半就干完了。萝卜快了不洗泥,问题一堆。

首先是ETC按照龙门架分段计费,经常发生司机白天跑长途,半夜收到十几条计费短信,体验非常差。其次就是关键问题,很多长途司机为了节省费用,采用屏蔽OBU卡、买短跑长、大车小标的方式进行逃费,单纯依靠ETC系统是没法解决类似问题的。

那么,通过多维度采集方式,进行车辆轨迹重建,就成了解决车辆逃费的关键技术。

Traffic Technology International
TTI https://www.traffictechnologytoday.com

解决PHP8.0.1@Ubuntu20.04.1中PHP无法工作的问题

前两周在阿里云Ubuntu20.04上安装最新php8.0后,测试phpinfo,总是无法出现成功的测试结果,往往是直接下载info.php这个文件,这事情困扰我2周,今天终于搞定了。

Screen Shot 2021-01-23 at 10.48.51 AM

第一步:升级系统最新补丁

首先要确定php和nginx都更新到了最新状态

sudo apt-get update && apt-get upgrade

检查nginx版本

nginx -v

测试nginx配置文件是否有错误

nginx -t

Screen Shot 2021-01-23 at 11.04.16 AM

检查php状态

systemctl status php8.0-fpm.service

Screen Shot 2021-01-23 at 11.06.32 AM

第二步a:修改php和nginx的配置文件

修改php.ini

./etc/php/8.0/fpm/php.ini

这里我没有做任何修改
Screen Shot 2021-01-23 at 11.09.32 AM

第二步b修改nginx默认站点配置

这里是关键:

不是修改“./etc/nginx/nginx.conf”这个文件!!

进入/etc/nginx/sites-available,修改dafault,当然,先做好备份
然后编辑下面绿色部分,取消掉注释,然后把php7.4-fpm修改为php8.0-fpm,注意后面的括号也要去掉注释

Screen Shot 2021-01-23 at 11.17.45 AM

最后,不要忘记删除info.php这个文件。

参考如下:Update! Configure Nginx to Read PHP on Ubuntu 16.04

AI产品-克隆人战争

从度假乐园到生产车间,从入口迎宾到轨迹还原,我接触到的AI产品,虽然标榜赋能不同行业,应用不同场景,都有种似曾相似的感觉,说不清楚是什么原因。

晚上参加一场跨产品线交流会,突然有个答案冒出来:因为都是技术驱动的产品,不管来自四小龙,或来自BAT,大家的技术都是如此相似,看一样的论文,用一样的算法,所以产出才那么千篇一律啊。

做产品的人,喜欢用一个大头朝上的漏斗,来说明从需求到产品的全流程。这个逻辑是没有错的,因为产品的设计过程,就是尽量多的满足相类似的需求,也就是产品经理常说的“通用需求”,然后有下层的产品来承接。但是这个思路一定是需求牵引,而不能让产品做牵引,去勉强适配不同的行业、不同的场景。

安装MariaDB

通过mysql进入数据库

MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.002 sec)
MariaDB [(none)]> create user 'user'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> grant all privileges on wordpress.* to 'user'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

参考文档如下
https://developer.aliyun.com/article/761741

ubuntu升级软件和安装Nginx

首先看下有没有需要升级的软件

# apt list --upgradable
Listing... Done
linux-generic/focal-updates 5.4.0.60.63 amd64 [upgradable from: 5.4.0.54.57]
linux-headers-generic/focal-updates 5.4.0.60.63 amd64 [upgradable from: 5.4.0.54.57]
linux-image-generic/focal-updates 5.4.0.60.63 amd64 [upgradable from: 5.4.0.54.57]

还好,刚才已经把软件包升级过了,现在只要升级系统就可以。

升级软件包命令

sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包

升级系统命令如下

sudo apt-get dist-upgrade 升级系统

然后在看下,都是最新的了。

#apt list --upgradable
Listing... Done
root@MDaliyun ~ # sudo apt update
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu focal InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu focal-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu focal-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.

下来安装Nginx

安装Nginx

sudo apt install nginx

查看Nginx状态

 sudo systemctl status nginx

root@MDaliyun / # vi /etc/nginx/nginx.conf

编辑 nginx.conf 文件。
找到 server{…},并将 server 大括号中相应的配置信息替换为如下内容。用于取消对 IPv6 地址的监听,同时配置 Nginx,实现与 PHP 的联动。

server {
 listen       80;
 root   /usr/share/nginx/html;
 server_name  localhost;
 #charset koi8-r;
 #access_log  /var/log/nginx/log/host.access.log  main;
 #
 location / {
       index index.php index.html index.htm;
 }
 #error_page  404              /404.html;
 #redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
   root   /usr/share/nginx/html;
 }
 #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 location ~ .php$ {
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   include        fastcgi_params;
 }
}

参考文档如下
https://www.myfreax.com/how-to-install-nginx-on-ubuntu-18-04/

Ubuntu安装oh-my-zsh

1 直接安装zsh

#sudo apt update
#sudo apt install zsh

显示版本

# zsh --version
zsh 5.8 (x86_64-ubuntu-linux-gnu)

设置ZSH为默认shell

# chsh -s /bin/zsh

修改vps上的hosts

#whereis hosts
hosts: /etc/hosts.allow /etc/hosts.deny /etc/hosts /usr/share/man/man5/hosts.5.gz
# vi /etc/hosts

添加如下内容

127.0.0.1       localhost
# GitHub Start
52.74.223.119 github.com
192.30.253.119 gist.github.com
54.169.195.247 api.github.com
185.199.111.153 assets-cdn.github.com
#151.101.76.133 raw.githubusercontent.com
151.101.108.133 raw.githubusercontent.com
151.101.108.133 user-images.githubusercontent.com
151.101.76.133 gist.githubusercontent.com
151.101.76.133 cloud.githubusercontent.com
151.101.76.133 camo.githubusercontent.com
151.101.76.133 avatars0.githubusercontent.com
151.101.76.133 avatars1.githubusercontent.com
151.101.76.133 avatars2.githubusercontent.com
151.101.76.133 avatars3.githubusercontent.com
151.101.76.133 avatars4.githubusercontent.com
151.101.76.133 avatars5.githubusercontent.com
151.101.76.133 avatars6.githubusercontent.com
151.101.76.133 avatars7.githubusercontent.com
151.101.76.133 avatars8.githubusercontent.com
# GitHub End

安装oh-my-zsh(下面是官网命令)

Method  Command
curl    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wget    sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fetch   sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

最终因为“墙”的问题,总是出现下面的问题

Failed to connect to raw.githubusercontent.com port 443: Connection refused

安装了openssl,安装git,安装wget,修改了上面的hosts,都无济于事。我就不打算折腾了,直接玩zsh也罢。
不玩不知道,zsh更方便。

2 新建一个zshrc配置文件如下

vi ~/.zshrc

文件内容如下

autoload -U compinit promptinit
compinit
promptini

执行命令 source ~/.zshrc 来生效修改的配置,而不需要重新登录,然后使用命令

# prompt -p

哈哈,显示如下缤纷灿烂的提示符,我选择prompt adam1,每次登录会恢复到原始状态,根据心情,选择一个就好。

配置Zsh可参考下文
https://wiki.archlinux.org/index.php/Zsh_(简体中文)