Ubuntu Server20.04 上设置静态 IP 地址 网关地址指向旁路由openwrt

vi编辑命令
sudo vi /etc/netplan/00-installer-config.yaml
文件内容
—————————————————————-# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens2:  #你的网卡名称
     dhcp4: no
     addresses: [192.168.3.105/24]
     gateway4: 192.168.3.1
     nameservers:
       addresses: [114.114.114.114]———————————————————————-
之后 :wq 保存并退出
启动服务
$ sudo netplan apply
查看网络服务的状态
$ networkctl status

脚底起水泡是怎么来的?

很多朋友都有过脚底莫名其妙起水泡的经历,这个部位起水泡实在是太烦人了,只要一走路就会引起钻心般的疼痛,严重影响大家日常工作和生活,那么这个水泡到底是怎么来的呢?

  其实,引起足底水泡的主要有两个原因,其一是运动磨损导致的,由于足底局部组织长时间经受强烈的摩擦作用导致组织细胞破损、组织液外渗,进而形成了水泡。之所以会这样,可能是由于鞋子太小、太硬、袜子太粗糙、运动量过大。

  另外一个原因是脚气导致的水泡,尤其在伴有足底瘙痒的情况下,更应该考虑脚气的可能性,脚气是种非常常见的疾病,是由于真菌感染导致的,伴有水泡的脚气被称为水疱型脚气,多发生在夏秋季节,水泡呈米粒大小,伴有剧烈瘙痒。

  那么该如何辨别这个水泡是来源于运动摩擦还是脚气呢?如果在长时间穿着过小的鞋子或者大量运动之后出现,很有可能意味着这个是运动磨损导致的。如果在水泡出现前没有剧烈的运动,鞋子也挺合脚的,而且这个水泡还伴随着剧烈的瘙痒,那就该考虑脚气的可能性了。

  对于运动磨损导致的水泡,可以先用碘酒或者酒精对局部进行消毒,然后利用消毒过的针(长时间煮沸或酒精浸泡均可)将水泡刺破引流,将水泡内的液体引流干净即可,但为了防止感染最好不要剪掉水泡的表皮。之后短时间内不要进行剧烈运动,注意休息即可。

  对于脚气导致的水泡,由于真菌很适合在人类足部这种温暖湿润的条件下生长繁殖,而且脚气是一种比较难以根除的疾病,所以为了治疗该病,可以考虑口服抗真菌药物,比如口服一到两周的酮康唑,再配合使用酮康唑类的外用药,应该能起到不错的效果。

Windows cmd返回上一层目录是哪个命令?

可以使用cd命令,cd命令的功能是切换到指定的目录:

命令格式:

cd [目录名]

目录名有几个符号有特殊的含义,“..”代表上一级目录、“~”代表HOME目录、“-”代表前一目录。

因此返回上一级目录可以使用命令:

cd ..

隐藏禁用dplayer右键的方法(视频统计信息)

网页版的dplayer,右键后,点视频统计信息,一般会在左上角显示:video url,也就是视频的真实地址。

若不想透明,可以使用我的方法隐藏禁用。 找到你的dplayer主要文件,一般如没改名的话,是DPlayer.min.js,如果有些网页使用时将该文件改名,那就找改了名的该文件,找到以下代码: this.player.container.addEventListener(“contextmenu”,将其中的contextmenu改名就行了。 到此,你右键看一下,是不是没了视频统计信息可查看了。

迅睿CMS 火车头采集插件使用方法

采集工具:火车采集器(可以百度搜索一下这个工具的下载)

采集模块:新闻 News

第一步、编写采集入库脚本接口 

新建:./api/caiji.php(应用于URL地址请求,大小写随意)

<?php

/**
 * 数据采集
 */

define('IS_API', basename(__FILE__, '.php')); // 项目标识
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); // 该文件的名称
require('../index.php'); // 引入主文件

新建:./dayrui/My/Api/Caiji.php(首字母必须大小,最终php文件命名与上面的名称保持相同)

<?php


$this->_module_init('news'); // news 是模块目录

if ($_GET['action'] == 'category') {
    // 显示栏目
    if (!$this->module['category']) {
        echo '模块【'.$this->module['dirname'].'】没有创建栏目';
    }
    foreach ($this->module['category'] as $t) {
        if ($t['child'] == 0 && $t['tid'] == 1) {
            echo '<h1>'.$t['name'].'<=>'.$t['id'].'</h1>'.PHP_EOL;
        }
    }

} else {
    // 入库数据

    $data = $_REQUEST;

    // 发布者id 1
    $data['uid'] = 1;

    // 发布者账号 admin
    $data['author'] = 'admin';

    // 主表字段
    $fields[1] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR));
    $cache = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_category_data'));
    $cache && $fields[1] = array_merge($fields[1], $cache);

    // 附表字段
    $fields[0] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_data_0'));

    // 去重复
    $fields[0] = array_unique($fields[0]);
    $fields[1] = array_unique($fields[1]);
    
    // 格式化入库字段
    
    // 一般是格式化非文本类的字段(例如多文件上传、复选框、联动字段等等)
    // 这里需要按采集资料的格式入库格式化字段,
    
    
    // 开始归类存储

    $save = [];

    // 主表附表归类
    foreach ($fields as $ismain => $field) {
        foreach ($field as $name) {
            isset($data[$name]) && $save[$ismain][$name] = $data[$name];
        }
    }
    if (!$data['catid']) {
       exit('栏目为空');
    }

    $save[1]['uid'] = $save[0]['uid'] = $data['uid'];
    $save[1]['catid'] = $save[0]['catid'] = $data['catid'];

    $save[1]['url'] = '';
    $save[1]['status'] = 9; //9表示正常发布,1表示审核里面
    $save[1]['hits'] = 0;
    $save[1]['displayorder'] = 0;
    $save[1]['link_id'] = 0;
    $save[1]['inputtime'] = $save[1]['updatetime'] = SYS_TIME + rand(0, 7200);
    $save[1]['inputip'] = '127.0.0.1';

    // 验证标题重复
    if ($this->content_model->table(SITE_ID.'_'.MOD_DIR)->where('title', $save[1]['title'])->counts()) {
        echo '重复';exit;
    }

    $rt = $this->content_model->save_content(0, $save);

    if ($rt['code']) {
        /*
        // 用于发布成功后生成静态文件代码
        dr_html_auth($_SERVER['SERVER_ADDR']);
        dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['id']);
        */
        exit('成功');
    } else {
        exit('失败');
    }

}

exit;

脚本文件中可以定义发布者等一些预定义字段默认值,如果你不会php的话可以保持默认

注意:本脚本的程序代码只对内容等字段入库有效,由于采集目标网站的数据规范性无法做到统一;

如果开发者对其他字段(例如多文件上传、复选框、联动字段等等)需要开发者自己根据采集的实际情况来编写入库程序来组装入库的POST数据,需要PHP开发技术基础,下面来举一些基础例子。

1、多文件上传字段

$data['字段名称'] = dr_array2string([
    ['file'=>'文件路径', 'title'=>'标题'],   
]);

2、复选框字段

$data['字段名称'] = dr_array2string([
    '值1', '值2'  
]);

测试规则地址:

http://你的网站/api/caiji.php?action=category

如果能显示出来栏目信息,说明ok了

如果显示api file is error,表示你./dayrui/My/Api/Caiji.php没有创建正确。

第二步、火车采集器编写web发布规则

QQ20161021-0@2x.png

第三步、新建一个在线发布模块

QQ20161021-1@2x.png

第四步、填写获取栏目列表的参数

image.png
/api/caiji.php?action=category

<h1>[分类名称]<=>[分类ID]</h1>

按照上面的格式写就ok了

第五步、内容发布规则参数

image.png
发布地址:/api/caiji.php?action=post
表单参数:这里是你采集的字段
c错误码:失败 回车符 重复
成功标志码:成功

表单参数:这里可以配置任意自定义字段的入库,不知道入库格式怎么办?

查看数据库储存数据格式进行入库处理,必要时需要在接口文件中重新编程

第六步、保存模块

QQ20161021-5@2x.png

第七步、然后返回web发布配置里面

QQ20161021-6@2x.png

按照图中的参数配置,点“获取栏目”,如果可以获取到就表示成功了一大半了

第八步、测试入库发布

QQ20161021-7@2x.png

第九步、后台查看采集内容

QQ20161021-8@2x.png

Ubuntu下Apache2配置https且强制http转为https

一、Ubuntu下的Apache2

1. 安装Apache2

 sudo apt-get install apache2

– 默认站点在 /var/www/
– 配置文件在 /etc/apache2/
– 日志在 /var/log/apache/
– 启动脚本是 /etc/init.d/apache2

2. etc/apache2下的文件夹与文件
apache2.conf:Apache的主要配置文件,包含全局配置。
envvars:Apache2环境变量设置。
ports.conf:配置Apache监听的端口。
mods-available:这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled:持有/etc/apache2/mods-available目录下文件的链接,当该目录下有一个模块文件和其配置文件,那么Apache重启后该模块将生效。
sites-available:这个目录包含Apache虚拟主机的配置文件。虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。后面下面配置的时候会配置80端口的http重定向为443的https。
sites-enabled:持有/etc/apache2/sites-available目录下文件的链接。当Apache重启后,该目录中包含的站点将会被激活。

3.ssl配置
安装openssl

sudo apt-get install openssl

开启ssl模块

sudo a2enmod ssl

无效则输入下面两个命令

sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf

获取证书
申请腾讯云或者阿里云的免费证书
腾讯云:https://console.qcloud.com/ssl
阿里云:https://help.aliyun.com/document_detail/28548.html
会有3个文件
1_root_bundle.crt
2_xxx.crt
3_xxx.key

二、配置HTTPS(SSL)

1.进入/etc/apache2/ports.conf
查看是否有

Listen 80
Listen 443

没有就添加上去

2.配置ssl虚拟站点
上文安装完后,会在/etc/apache2/sites-available/目录下生成一个缺省的default-ssl文件。缺省的网页目录仍然是/var/www/。我们可以创建一个链接到site-enabled目录。

sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl

如果不想用软链接,可以从sites-available中复制default-ssl.conf到sites-enabled(表示启用的配置),然后修改default-ssl.conf

SSLCertificateFile
SSLCertificateKeyFile
SSLCertificateChainFile

配置为

SSLCertificateFile  证书地址/2_xxx.crt
SSLCertificateKeyFile 证书地址/3_xxx.key
SSLCertificateChainFile 证书地址/1_root_bundle.crt

重启apache,应该已经可以访问https了

sudo service apache2 restart

三、设置http重定向为https

1.启动重定向
启动 rewrite mod

sudo a2enmod rewrite 
或者
sudo ln -s /etc/apache2/mods-available/rewrite.load  /etc/apache2/mods-enabled/rewrite.load

2.设置http端口重定向
打开 /etc/apache2/sites-available/000-default.conf ,
在 <\VirtualHost *:80><\VirtualHost> 标签内随便一个地方加入以下三行

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R=301]

或者在网站目录处新建.htaccess 输入

RewriteEngine on
RewriteBase / 
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

3.最后重启

sudo service apache2 restart

如果使用Wordpress,

需要在设置中修改为https://www

phpcms v9 启用手机门户(自动判断手机浏览器)

1、确定一个域名作为你手机wap站点的访问域名,例如:http://m.xxx.com 。接下来在域名管理系统中简析这个域名到你的服务器地址。

2、修改\caches\configs\route.php 文件,增加手机路由地址,方法如下:

return array(
        'default'=array('m'='content', 'c'='index', 'a'='init'),
        'm.xxx.com'=array('m'='wap', 'c'='index', 'a'='init'),
);

3、到phpcms后台,模块-》手机门户-》修改 配置相关信息

4、然后分类管理里添加分类。

5、最后开启,刷新缓存,确认域名生效后就ok了。

——————————————————————

每个步骤都按要求操作了,还是跳转电脑版???

此时可以试试m.xx.com/index.php是否可以正常访问wap页面,若可以说明wap功能正常启用,只是没有自动转向index.php引导其跳转。

1. m.xx.com是否正确指向程序目录。

2.手机网站需要index.php作为引导,可以在主机控制面板里添加index索引次序,index.php应优于index.html。

另外也可以在手机模板中添加如下js解决:

<script>
try{if(self.location='http://m.xx.com'){
top.location.href='http://m.xx.com/index.php';
}}catch(e){}
</script>

———————————————————–

上述这种,虽然开启了手机访问,但是不支持自动识别,自动跳转。相当上述,只是把域名绑定到wap手机模版。

下面介绍自动识别,自动跳转:

网站主页添加:

<script>
function GetQueryString(name) {
     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if(r!=null)return  unescape(r[2]); return null;
}
/* 智能机浏览器版本信息 */
var browser = { 
    versions: function () { 
        var u = navigator.userAgent, app = navigator.appVersion;
                return {        //移动终端浏览器版本信息  
            trident: u.indexOf('Trident') > -1, //IE内核
                        presto: u.indexOf('Presto') > -1, //opera内核
            webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
            gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 
            mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                        android: u.indexOf('Android') > -1, //android终端
                        iPhone: u.indexOf('iPhone') > -1, //是否为iPhone
                        iPad: u.indexOf('iPad') > -1, //是否iPad 
            webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
                        };
                } (), 
    language: (navigator.browserLanguage || navigator.language).toLowerCase() 
}
if (GetQueryString('from') != 'mobile' && browser.versions.mobile)
        window.location.href = "https://www.qjj.fr/index.php?m=wap";
</script>

Ubuntu查看或更改MySQL 最大连接数方法

1、查看最大连接数

    mysql> show variables like "%max_connections%";
    ±----------------±------+
    | Variable_name  | Value|
    ±----------------±------+
    | max_connections|  141 |
    ±----------------±------+
    1 row in set (0.00 sec)

2、修改最大连接数
MySQL 最大连接数的默认值是100,这个数值对于并发连接很多的数据库应用是远不够用的。当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些。在使用 MySQL 数据库的时候,经常会遇到一个问题,就是”Can not connect to MySQL server. Too many connections” -mysql 1040 错误,这是因为访问MySQL且还未释放的连接数已经达到 MySQL 的上限。通常,MySQL 的最大连接数默认是100,,最大可以达到16384。

常用的修改最大连接数的两种方式如下:
第一种:命令行修改最大连接数(max_connections),设置最大连接数为1000。

mysql> set global max_connections = 1000;

这种方式有个问题,就是设置的最大连接数只在 MySQL 当前服务进程有效,一旦MySQL重启,又会恢复到初始状态。因为MySQL启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。

第二种:通过修改配置文件来修改MySQL最大连接数(max_connections)。
进入MySQL安装目录,打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100,修改为max_connections=1000,重启MySQL服务即可。

ubuntu下PHP+Apache更改上传文件大小限制

Web开发中,文件的上传和处理是很常用也是非常重要的一种操作,使用PHP+Apache组合进行开发时,后台对上传文件的大小、上传时间等都有默认限制(例如内存限制为2M),2M这一限定值显然有很多需求不能满足,如果想要上传更大的文件,需要对PHP的配置文件进行更改,主要分为一下几个步骤(假设需要将文件大小设定为200M):

找到配置文件,路径为 /etc/php/7.0/apache2/php.ini,以及/etc/php/7.0/cgi/php.ini. 两个文件内容一致,都需要修改,只修改一个可能无效。
设置file_uploads = on. 允许通过HTTP进行文件传输,默认值通常已经被设定为on.
设置upload_max_filesize=200M. 允许上传文件的大小,默认值为2M.
设置post_max_size = 200M. 通过表达POST给PHP的最大允许值,默认值为8M.
此时文件大小的限制已经被设定完毕,但上传大文件所需时间也会比小文件长,保险起见最好再修改一下上传时间限制:

max_execution_time = 600. 每个PHP页面运行的最大时间,以秒为单位,默认值为30秒。
max_input_time = 600. 每个PHP页面接收数据所需的最大时间,默认值为60秒。
memory_limit = 200M. 每个PHP页面占用的最大内存,默认值为8M.
修改完毕后保存文件,如果无效可以再尝试重启Apache服务器,使用如下命令:

$ sudo /etc/init.d/apache2 restart

Ubuntu完全卸载PHP,重新安装

删依赖包:
sudo apt-get autoremove php + 你的版本号+(如:sudo apt-get autoremove php7
删关联:
sudo find /etc -name “php” |xargs rm -rf
清除dept列表里的残留信息:
sudo apt purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
检查一下是否卸载干净,如无返回即干净卸载:
dpkg -l | grep php.+你的版本号(如:dpkg -l | grep php.7)
安装 :

先更新本地内置的程序
sudo apt-get update
sudo apt-get upgrade

接着,判断系统是否内置了add-apt-repository命令,如果没有执行下列命令安装
sudo apt-get install software-properties-common

添加最新的PHP源,然后安装(如php7.1)
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.1 php7.1-common php7.1-fpm php7.1-dev
sudo apt-get install php7.1-mbstring php7.1-xml

安装结束之后就可以执行php -i命令查看到php-cli的信息