Posted on

nginx中日志log配置与logrotate

logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。

logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。

sudo vim /etc/logrotate.d/nginx

 

/var/log/nginx/*.log {
monthly
missingok
rotate 14
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}

 

Posted on

ubuntu中php7.0使用curl

sudo apt-get install php7.0-curl

在php中使用curl:

$url = "https://123.456.789.666:4001/login";
$header = array('Content-Type: application/json');
$data='{"password":"123456"}';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
//打印獲得的數據
$output = json_decode($output);
var_dump($httpCode);
print_r($output->token);

Posted on

ubuntu开机启动

rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令。该脚本位于/etc/路径下,需要root权限才能修改。

注意: 一定要将命令添加在exit 0之前。里面可以直接写命令或者执行Shell脚本文件sh。

sudo vim /etc/rc.local

directive >/home/log.txt 2>&1 & //最后加&表示后台运行
node app.js >/log.txt 2>&1 & 

exit 0

Posted on

ubuntu中crontab定时任务

*/5 * * * * php 5minScript.php >> 5minScript.txt //每5分钟运行一次,输出到5minScript.txt文件
0 1,13 * * * php 12hourScript.php >> 12hourScript.txt //每天1点和13点运行一次
11 0 1 * * php monthScript.php >> monthScript.txt //每月1日0:11运行一次

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

crontab -e //编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

crontab  -l//显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

crontab的文件格式

分 时 日 月 星期 要运行的命令

  • 第1列分钟0~59
  • 第2列小时0~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要运行的命令

6 0 1 * * sudo reboot //每月1日0:06重启

编辑sudo不用输入密码:

sudo vim /etc/sudoers

输入:your_user_name ALL=(ALL) NOPASSWD: ALL //设置用户名

再输入:%sudo ALL=(ALL) NOPASSWD: ALL //设置用户组

Posted on

centos7下安装lemp栈

1.nginx

sudo yum install epel-release/更新的社区软件包
sudo yum install nginx
sudo systemctl start nginx/运行nginx
sudo systemctl enable nginx/开机启动
sudo yum update

2.mysql

sudo yum install http://repo.mysql.com/yum/mysql-5.5-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm/加入软件源
sudo yum repolist all | grep mysql/查看默认安装版本
sudo vim /etc/yum.repos.d/mysql-community.repo/修改默认安装版本
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation
mysql -u root -p

3.php

sudo yum install php php-mysql php-fpm
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php.ini
sudo sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
sudo vim /etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock/修改的行

4.phpmyadmin

sudo yum install phpmyadmin
sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html //把phpmyadmin目录链接到公开的web目录

5.nginx server blocks

sudo vim /etc/nginx/conf.d/default.conf

sudo vim /etc/nginx/nginx.conf

example:

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6.mysql导入导出

导入:

mysql -u root -p

create database 数据库名;

use 数据库名

source /root/数据库名.sql

导出:
mysqldump -u root -p 数据库名 > 文件名.sql
Posted on

使用cloudflare屏蔽特定国家的ip

业务需要服务器屏蔽一个国家的ip访问,效率最高的是总是用nginx来实现。

首先重新编译nginx,加上ngx_http_geoip_module这个插件。

然后下一步网上全是下载geoip这个包来判断ip所属国家,这个教程我们换一种思路。

如果使用cloudflare加速的网站,默认会开启IP Geolocation这个选项(在network里可以找到),

它发送一个访问者的国家代码参数$HTTP_CF_IPCOUNTRY到nginx,这样我们就可以直接根据这个参数来屏蔽ip了。

location / {
if ($http_cf_ipcountry = CN) {
return 404;
}
}

国家代码参见:https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

此外还可以加上白名单功能

location / {

if ($ip_whitelist = 1) {
break;
}
if ($http_cf_ipcountry = CN) {
return 404;
}
}

编辑nginx.conf

http {
geo $http_cf_connecting_ip $ip_whitelist {
default 0;
8.8.8.8 1;
}
}

Posted on

卫星天线方位角、仰角、极化角的javascript算法实现

var Radian=Angle*(Math.PI/180);     //角度转换为弧度

var Angle=Radian*(180/Math.PI);    //弧度转换为角度

double x = atan(tan(LongitudeOfSatellite - LongitudeOfReceivStation) / sin(LatitudeForReceivStation));
x=180 - RadianToAngle(x) ; //方位角

double a = cos(LongitudeOfSatellite - LongitudeOfReceivStation) * cos(LatitudeForReceivStation);
double b = 1.0f - powf(a, 2.0f);
b=sqrt(b);
a=a - 0.1512695;
double x =(a / b);
x=atan(x);
x=RadianToAngle(x); //仰角

double x = atan(sin(LongitudeOfSatellite - LongitudeOfReceivStation) / tan(LatitudeForReceivStation));
x=RadianToAngle(x); //极化角,逆时针为负

Posted on

树莓派安装lede当无线路由器

下载
进入
http://downloads.lede-project.org/releases/17.01.4/targets/brcm2708/
bcm2708是给第一代的,bcm2709给第二代,bcm2710就是给RPi3的
http://downloads.lede-project.org/releases/17.01.4/targets/brcm2708/bcm2710/lede-17.01.4-brcm2708-bcm2710-rpi-3-ext4-sdcard.img.gz
写入sd卡
在win下使用win32diskimager把下载的img文件写入到sd卡中
配置网络
wan口使用pppoe拨号,wifi使用内置无线网卡
安装ss
进入system-software  搜索shadowsocks-libev-mbedtls

Posted on

laravel的虚拟机Homestead安装

1,安装virtualbox和vagrant
2.下载homestead的box.
官方的命令 vagrant box add laravel/homestead 不建议使用
因为直接使用vagrant下载太慢,所以建议用下载工具下载
3.下载homestead配置
git clone https://github.com/laravel/homestead.git Homestead
在cmd下运行init.bat
4.生成一对rsa密钥,在Homestead.yaml文件中指定公钥
5.安装homestead.box
新建一个homestead.json文件

{
"name": "laravel/homestead",
"versions": [{
"version": "2.1.0",
"providers": [{
"name": "virtualbox",
"url": "file://homestead.box"
}]
}]
}

接着运行命令:
vagrant box add homestead.json
启动虚拟机:
vagrant up

Posted on

支付宝接口研究

我自己要做一个支付接口,于是看看业内的最佳实践支付宝是怎么做的。
1.商户系统用get或者post方式请求支付宝api
2.用户在支付宝系统上支付完成后,get请求商户url,同时post请求商户url,返回异步参数
3.商户系统还可以通过支付宝api查询支付情况
所以支付宝接口接受一次输入,有2次输出,还提供一个查询api。