猫言猫语

严以律己·宽以待人·自强不息·知行合一

CentOS 7 下 NGINX Unit 快速体验

| CentOS 7 下 NGINX Unit 快速体验已关闭评论

vi /etc/yum.repos.d/unit.repo
[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
yum install unit
yum install unit-php
systemctl restart unit
vi demo.json
{
    "listeners": {
        "*:8080": {
            "application": "demo"
        }
    },
    "applications": {
        "demo": {
            "type": "php",
            "processes": 20,
            "root": "/home/www/demo/public",
            "index": "index.php"
        }
    }
} 
mkdir -p /home/www/demo/public
vi /home/www/demo/public/index.php
<?php
phpinfo();
curl -X PUT -d @demo.json --unix-socket /run/control.unit.sock http://localhost/config/ 

使用 PHP/Java Bridge 在 Java 容器里运行 PHP

| 使用 PHP/Java Bridge 在 Java 容器里运行 PHP已关闭评论

一、下载

从 PHP/Java Bridge 的 sourceforge 首页下载 JavaBridgeTemplate721.war 文件。

https://sourceforge.net/projects/php-java-bridge/

二、安装

以 CentOS 7 为例

yum install tomcat
yum install php-cgi
setenfore 0

三、部署

把 JavaBridgeTemplate721.war 扔到 /var/lib/tomcat/webapps 目录,重启 tomcat

systemctl restart tomcat

四、配置

编辑 index.php,修改为

<?php
phpinfo();

五、测试

打开浏览器访问:http://localhost:8080/JavaBridgeTemplate721/

避免 Supervisord 产生孤儿进程

| 避免 Supervisord 产生孤儿进程已关闭评论

使用 Supervisord start 的进程如果开启多进程,产生了一些子进程,当 stop 父进程的时候,父进程有可能比子进程更早地退出,就会导致子进程成为孤儿进程,脱离 Supervisord 管理。

[program:x] 段配置 stopasgroup 选项和 killasgroup 选项可以避免这一情况。

stopasgroup=true
killasgroup=true

在 MySQL 8.0 中创建 utf8mb4 编码的新数据库

| 在 MySQL 8.0 中创建 utf8mb4 编码的新数据库已关闭评论

这样就可以创建一个名为 helloworld 的数据库

create database helloworld default character set utf8mb4 collate utf8mb4_unicode_ci;
mysql> create database helloworld default character set utf8mb4 collate utf8mb4_unicode_ci;
Query OK, 1 row affected (0.04 sec)

从头编写 Linux RGB Led 驱动(一)

| 从头编写 Linux RGB Led 驱动(一)已关闭评论

我手里有一个山寨的三色二极管,大概长的是这样的模样,我要把它直接插到 RK3288 Linux 开发板上,然后通过内核模块来控制他,我希望它可以像交通灯那样工作,同时希望通过编写一个驱动程序来入门 Linux 内核模块,这将会是一系列的文章,但最终结果我也不知道能不能写完。

我使用的 kernel 版本是 4.4,使用的是 rockchip 在 github 上的官方下载地址:https://github.com/rockchip-linux/kernel,如果你使用的是其他开发板,也可以从自己的供应商软件仓库去下载内核,假设我们通过 git 把官方 kernel clone 到了 ~/kernel 目录下。

然后我们需要在 drivers 下新增一个名为 rgb_led 目录,并且新建必要的 Makefile 文件和 rgb_led.c 文件,文件内容如下:

obj-y                           += rgb_led.o
#include 
#include 

static int __init rgb_led_init(void) {
    printk(KERN_ALERT "init rgb led\n");
    return 0;
}

static void __exit rgb_led_exit(void) {
    printk(KERN_ALERT "exit rgb led\n");
}

MODULE_LICENSE("GPL");

module_init(rgb_led_init);
module_exit(rgb_led_exit);

我们还需要编辑 ~/kernel/drivers/Makefile 文件,在开始的地方添加一行

obj-y                           += rgb_led/

然后就可以编译并使用这个我们修改过的内核来启动,启动后我们就可以看到提示信息:

# dmesg | grep rgb
init rgb led

轻轻松松,这个内核模块已经开始工作了

FriendlyARM NanoPi A64 插公对公 USB

| FriendlyARM NanoPi A64 插公对公 USB已关闭评论

想用 sunxi-fel 刷机,还得用这种 usb 线,MicroUSB 线只能供电用

插之前

# lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 8087:0aa7 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

插之后

# lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 8087:0aa7 Intel Corp. 
Bus 002 Device 005: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

多了一行

Bus 002 Device 005: ID 1f3a:efe8 Onda (unverified) V972 tablet in flashing mode

树莓派 3B+ 使用串口终端输出

| 树莓派 3B+ 使用串口终端输出已关闭评论

USB2TTL 模块接树莓派 6、8、10 三个口

打开 /boot/config.txt 文件,在后面增加一行:dtoverlay=pi3-miniuart-bt

vim /boot/config.txt
dtoverlay=pi3-miniuart-bt

系统默认 serial1 链接 /dev/ttyAMA0,当配置这个 dtoverlay 后
serial1 链接到 /dev/ttyS0,serial0 链接到 /dev/ttyAMA0

更深层的动作触发原理,是在 udev 里搞的

使用 tuna 作为 repo 镜像

| 使用 tuna 作为 repo 镜像已关闭评论

Ubuntu 18.04 下 repo 安装很方便,但直接使用会由于网络问题被卡住,解决方法就是使用国内镜像站点

# apt install repo
$ export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

以上命令可以写在 ~/.bashrc 里以后就不用每次都手动执行了

利用 smbclient 扫描 Windows 共享目录

| 利用 smbclient 扫描 Windows 共享目录已关闭评论

# smbclient -L 192.168.1.2 -U Administrator
Enter SAMBA\Administrator's password:

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      远程管理
	C$              Disk      默认共享
	D$              Disk      默认共享
# smbclient -L 192.168.1.2 -U administrator%password

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      远程管理
	C$              Disk      默认共享
	D$              Disk      默认共享