centos时区查看和更改方法

一.查看时区
[root@a ~]# date
Fri Sep 30 10:29:33 CST 2016
可见为中国时区 CST – China Standard Time (Standard Time)

[root@a ~]# date -R
Fri, 30 Sep 2016 10:29:24 +0800

[root@a ~]# date +%z
+0800

可见为 东八时区

二.更改时区
rm -rf /etc/localtime #删除当前默认时
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

三.时间自动同步和校正

yum install -y ntp #安装时间同步服务(组件)
ntpdate us.pool.ntp.org #设置同步服务器
date #查看当前时间www.


rpm -qa | grep ntp #查询一下可安装了
chkconfig --list | grep ntp #看下服务情况
chkconifg ntpd on
service ntpd start # 或/etc/init.d/ntpd start

将当前时间和日期写入BIOS,避免重启后失效
hwclock -w

定时同步时间
# /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

**********
知识拓展

概念:Linux时间有两个
系统时间:也叫软件时间(sys), 1970年1月1日到当前时间的秒数
BOIS时间:也叫硬件时间(hc)

GMT(Greenwich Mean Time)代表格林尼治标准时间,这个大家都知道。
而CST却同时可以代表如下 4 个不同的时区:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00

可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

修改设置时区
方法(3) 适用于Debian
dpkg-reconfigure tzdata

CST – China Standard Time (Standard Time)

Automated Linux From Scratch(ALFS)

Automated Linux From Scratch(ALFS)
标准LFS只是一本书,用户需要根据书上的指引下载软件包并手动输入指令进行编译。ALFS子项目提供了把这一切自动化的脚本。

官方的脚本
jhalft

https://cloud.github.com/downloads/davidgao/LFSCN/LFS-BOOK.html

linux 自己做:lfs 7.6-systemd 全过程(alfs)(一)
http://www.wupingben.net/archives/15.html

linux 自己做:lfs 7.6-systemd 全过程(alfs)(二)
http://www.wupingben.net/archives/25.html

LFS6.3自動化腳本-之ALFS(jhalfs-2.3.1)(原創)
http://cocboso.com/subject/about/30270.html

http://www.programgo.com/article/76584292883/

什么是LFS,BLFS,ALFS,HLFS之间的区别
http://xxb.is-programmer.com/2008/2/7/LFS.1020.html

阿里云 和nginx 启用IPV6支持

起因:
因苹果官方ipv6审核问题,客户端和运营就过来了,说什么的为什么服务器没有配置ipv6
于是 我看了一下,原来系统是没有的,但是为了以防万一 加上--with-ipv6 我重新打包了mysql rpm 包, 然后直接替换掉bin 文件 哈哈

为了一致性的考虑(新版本Nginx必须推荐这样做),请使用分开监听的方法:

listen 80;
listen [::]:80 ipv6only=on;

当您希望访问者通过 IPv6 地址访问您的域名时,您可以使用 AAAA 记录设置域名解析。

Nginx监听IPv6地址端口的正确操作方法

阿里云启用IPV6支持

nginx开启IPV6支持配置

配置Nginx使其支持IPv6

针对苹果官方ipv6审核的综合解决方案

ssh-keygen 基本用法

ssh-keygen 基本用法

生成ssh key的时候,可以通过 -f 选项指定生成文件的文件名,如下
[root@a]$ ssh-keygen -f test -C "test key"
~~文件名 ~~~~ 备注
如果没有指定文件名,会询问你输入文件名:
[ root@a]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/evan/.ssh/id_rsa):
你可以输入你想要的文件名,这里我们输入test。

密码 私key 文件的密码
之后,会询问你是否需要输入密码。输入密码之后,以后每次都要输入密码。请根据你的安全需要决定是否需要密码,如果不需要,直接回车:

#这种办法更加方便
或者 -t type 指定要创建的密钥类型。可以使用:”rsa1″(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)
[root@a]$ ssh-keygen -t rsa -f test -C "test key"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
结果

如果文件名是test,结果是:
[root@a]$ ll test*
-rw——- 1 huqiu huqiu 1675 Sep 15 13:24 test
-rw-r–r– 1 huqiu huqiu 390 Sep 15 13:24 test.pub
备注

上面生成的命令中,-C选项是公钥文件中的备注:

[root@a]$ cat test.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAlgjiMw7AskxbvpQY9rmZPQxQBzh9laxFvbaini2EgmQkNsXBA9WJOXn2YBJauoiVsdUKBWA97avjsobrTxsCYvFr1yQQvTfTlbqlqGNIhQc/3HjTl2pIkClpDWvBrRN+jpyESS4MNbfOL1qjT4c/QhGvj6U6HrN6kUyn58oyyJpTzOLG74AZELJ2Led57QvTw1yJXZuAMWioR0A3BGd25fdocLX3ebux6ya8AsloOVYfsAqGlggrARe6FXjLfMH4a/nxaAdiDYVXU/Vr1ybK9P7SfyEDGJi3JtgiPUlA6vPxUC
E+9IJPQaqqeqCGzrJ6G/XO7om1v9YLLG/H/ZN2tQ== test key
~~~~备注
文件的权限

为了让私钥文件和公钥文件能够在认证中起作用,请确保权限正确。
对于.ssh 以及父文件夹,当前用户用户一定要有执行权限,其他用户最多只能有执行权限。
对于公钥和私钥文件也是: 当前用户一定要有执行权限,其他用户最多只能有执行权限。
对于利用公钥登录,对其他用户配置执行权限是没有问题的。但是对于git,公钥和私钥, 以及config等相关文件的权限,其他用户不可有任何权限。
authorized_keys

ssh-keygen 基本用法

https://wiki.archlinux.org/index.php/SSH_keys_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

ssh-keygen 中文手册

MySQL取消权限和删除用户–tag

作为数据库的管理员,既然能够创建用户和授权,同样也可以取消授权和删除用户。要取消某个用户的权限,可以使用REVOKE语句。该语句的语法格式如下:
Revoke privileges (columns) on what from user ;
其中privileges是要取消的权限,user是要被取消权限的用户名。
示例:

下面的代码实现了取消sss用户的所有权限的功能。 如果是密码授错了,可以直接用这个,不用删除用户
revoke all on *.* from sss@localhost ;
Query OK, 0 rows affected (0.00 sec)
REVOKE语句只能取消用户的权限,而不可以删除用户。即使取消了所有的权限,用户仍然可以连接到服务器。要想彻底的删除用户,必须使用DELETE语句将该用户的记录从MySQL数据库中的user表中删除。
该语句的语法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
使用DELETE删除用户sss,代码如下:

delete from user where user='sss' and host='localhost' ;
flush privileges ;

其中,delete用于删除用户,flush告诉服务器重新加载授权表。

Linux中tty、pty和pts概念及区别

先说是tty
tty:理解为终端就好了,比如,显示器,键盘等,一般通过串行总线来发送和显示信息,有波特率这个,一般38400.波特率不对,就会显示乱码啦,当然这个不需要我们设置,系统为你设置好了。对于嵌入式设备,连接电脑,就需要设置,一般15200.

终端是一种字符型设备
tty设备包括

1,虚拟控制台,比如echo “hello” > /dev/tty 就在控制台显示。
/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2。

2,串口终端设备/dev/ttyS*,

3,伪终端设备/dev/pty*,比如在Windows使用telnet 或ssh等方式登录Linux主机

再说说pts

pts(pseudo-terminal slave),懂英文的就知道了,虚拟终端。比如远程到主机啥的,是pty的实现方法

http://www.ahlinux.com/start/desk/17772.html

每天一命令之Linux内置的审计跟踪工具last

Linux内置的审计跟踪工具:last命令

last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制文件,它不能被文本编辑器浏览,比如vi、Joe或者其他软件。这是非常有用的,因为用户(或者root)不能像他们希望的那样修改这个文件。

last会给出所有已登录用户的用户名、tty、IP地址(如果用户是远程连接的话)、日期-时间和用户已经登录的时间。

第一列告诉谁是用户
第二列给出了用户如何连接的信息

pts/0 (伪终端) 意味着从诸如SSH或telnet的远程连接的用户
tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户
除了重启活动,所有状态会在启动时显示
第三列显示用户来自哪里。如果用户来自于远程计算机,你会看到一个主机名或者IP地址。如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。
第四列:开始时间
第五列:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)
第六列:持续时间
剩下的列显示日志活动发生在何时。括号中的数字告诉我们连接持续了多少小时和分钟。
显示完整登入登出时间日期 使用 -F 参数

[root@]# last |head
wan pts/0 11.10.17.24 Tue Sep 27 20:24 still logged in
wan pts/0 11.10.17.24 Tue Sep 27 19:30 – 19:31 (00:01) #19:30 登录到19:31
wan pts/1 11.10.17.24 Tue Sep 27 19:27 – 19:31 (00:03)

[root@]# last -n 3
wan pts/0 11.10.17.24 Tue Sep 27 20:24 still logged in
wan pts/0 11.08.17.24 Tue Sep 27 19:30 – 19:31 (00:01)
wan pts/1 11.08.17.24 Tue Sep 27 19:27 – 19:31 (00:03)

查看登录系统用户并将非法登录用户用踢出 https://www.linuxchina.net/?p=3431

https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_72/com.ibm.aix.cmds3/last.htm
http://blog.csdn.net/chaofanwei/article/details/11826567
http://os.51cto.com/art/201402/430091.htm
https://linux.cn/thread-12343-1-1.html

查看登录系统用户并将非法登录用户用踢出

1、查看当前登录的用户:使用命令w
[root@ ~]# w
19:05:43 up 1:18, 3 users, load average: 0.02, 0.36, 0.26
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.3.155 18:58 0.00s 0.20s 0.01s w
test pts/1 192.168.3.155 18:58 6:50 0.01s 0.01s -bash
test1 pts/2 192.168.3.155 18:59 6:25 0.01s 0.01s -bash
解释:
第一列是用户名,
第二列是连接的终端,tty表示显示器,pts表示远程连接,
第三列是登陆时间

2、踢出非法用户:pkill -kill -t 用户tty
eg:pkill -kill -t pts/1 即为踢出用户test的登录!

who或者w命令,看当前登录用户。可以kill掉非法用户
查看历史信息,可以看/var/log/secure文件内容。可以查IP,然后设置iptables封IP。

php 错误日志配置

php 错误日志配置
mkdir /logs/php; chown -R www:www /logs/php

php.ini
; 错误日志
log_errors = On
; 显示错误
display_errors = Off
; 日志路径
error_log = "/data/logs/php/error_log"
; 错误等级 这个要参考一下91
error_reporting = E_ALL&~E_NOTICE

#这些web2 还要改进一下
php-fpm.conf
[global]
; php-fpm pid文件
pid = /usr/local/php/var/run/php-fpm.pid
; php-fpm 错误日志路径
error_log =/logs/php/php-fpm.log
; php-fpm 记录错误日志等级
log_level = notice
[www]
; 记录错误到php-fpm的日志中
;catch_workers_output = yes
; 慢日志
slowlog = var/log/slow.log
; 关闭打印日志
php_flag[display_errors] = off
; 错误日志
php_admin_value[error_log] = /usr/local/php/var/log/www.log
; 记录错误
php_admin_flag[log_errors] = on
; 内存使用量
php_admin_value[memory_limit] = 32M

注意
如果错误日志没有写入到文件,查看www用户对 php_admin_value[error_log] 的路径是否有写入权限

其他
php_flag 修改 php.ini 中的配置 开关形式On或Off 可以被 ini_set 修改
php_value 修改 php.ini 中的配置 value形式 可以被 ini_set 修改
php_admin_flag 修改 php.ini 中的配置 开关形式On或Off 不可以被 ini_set 修改
php_admin_value 修改 php.ini 中的配置 value形式 不可以被 ini_set 修改

http://ju.outofmemory.cn/entry/210311

***********************华丽*****************************************************************************
其它 20161101

开发的时候,基本上都会把display_errors,error_reporting开启,有助于提高开发效率,上线后,基本上都会关掉页面报错信息,在把报错信息,放到文件中。
一,php-fpm的error_log配置
1,修改php.ini

display_errors = Off //改为off,页面访问时就不会出现报错信息了

2,修改php-fpm配置文件

;php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

重启php-fpm,在这里要注意,php-fpm的配置会替换php.ini中的配置,display_errors也可以在php-fpm中配置。这样页面上就不会出现报错信息,报错信息被记录到了文件中

线上我是配置的是

error_log = /php/php-fpm.log

二,命令行下的error_log配置,修改php.ini

display_errors = Off
log_errors = On
error_log = /var/log/cron/error.log

命令行下,是不调用php-fpm的配置的,所以我们只能修改php.ini的内容,修改后,不用重启php。执行命令后,错误信息,会被写到error.log文件中,这种情况适合crontab的php脚本