ssh-keygen -t rsa
可设置密码,也可一路回车就行
scp ~/.ssh/id_rsa.pub root@服务器IP地址:~/.ssh/authorized_keys
ssh-keygen -t rsa
可设置密码,也可一路回车就行
scp ~/.ssh/id_rsa.pub root@服务器IP地址:~/.ssh/authorized_keys
基础知识
一、RAID的定义
是Redundant Array of Independent Disks(独立磁盘冗余阵列),RAID就是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来的一个硬盘组(逻辑硬盘)。
软RAID:是通过软件实现多块硬盘冗余的.
硬RAID:是一般通过RAID卡来实现RAID的.
二、RAID0
三、RAID1
四、RDID5
五、RAID10(0+1)
六、基本命令
1、创立Raid:
Raid1 卷
mdadm -C /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
或mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1
Radid5 卷
mdadm -C /dev/md5 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1
或mdadm -Cv /dev/md5 –l5 –n3 /dev/sdb1 /dev/sdc1 /dev/sdd1
2、查看raid
mdadm -D /dev/md0
mdadm --examine /dev/sdb1
或:
mdadm /dev/md0 --examine /dev/sdb1
3、停止raid
mdadm -S /dev/md0
4、激活raid
mdadm -A /dev/md0 /dev/sdd1 /dev/sdc1
5、替换设备:
mdadm /dev/md0 -f /dev/sdb0
把设备列为有问题
mdadm /dev/md0 -r /dev/sdb0
移除成员
mdadm /dev/md0 -a /dev/sdc0
添加成员
mdadm /dev/md0 --re-add /dev/sdc0
重新把最近移除的RAID成员重新添加到RAID中
6、扩容与缩减
mdadm -G /dev/md0 -n4
mdadm /dev/md5 -f /dev/sde1
mdadm /dev/md5 -r /dev/sde1
mdadm -G /dev/md5 --size=3
程序
保存在硬盘、光盘等介质中的可执行代码和数据
是静态保存的代码
进程
在CPU及内存中运行的程序代码
是动态执行的代码
父、子进程:每个进程可以创建一个或多个进程
ps命令
用途:查看静态的进程统计信息
格式:ps aux
ps -elf
使用ps命令工具时,要注意选项前是否有”-“引导符,例如”e“和”-e”选项的含义是有区别的
ps命令结合“aux”选项使用时,将显示系统中所有的进程信息
PID:该进程在系统中的数字ID号,在当前系统中是唯一的; %CPU:CPU占用百分比; %MEM:内存占用百分比
ps命令结合“-elf”选项使用时,将以长格式显示系统中所有的进程信息,包含更丰富的内容(其中PPID列表示进程的父进程的PID号)
定制属性
ps axo pid,comm,%cpu --sort=%cpu | tail -1
进程状态
常见进程状态
进程优先级决定了CPU对进程调度顺序.在Linux中,进程优先级受nice值(-20-19)影响,默认值为0,nice值越小,则进程对cpu的使用权越具有优先性
调整进程优先级的命令:
nice(启动进程时使用)
nice -n 5 vi
renice (对于已经启动的进程)
renice 9 1236
top命令
用途:查看动态的进程排名信息
切换到虚拟机环境演示ps(包括ps aux、ps –elf的用法)、top命令的使用,并讲解输出结果中的要点(CPU占用、内存占用等)
从用途上对比ps、top两个命令的不同,可适当介绍top工具的命令按键:P、M、N、h、q
按P键根据CPU占用情况对进程列表进行排序
按M键根据内存占用情况进行排序
按N键根据启动时间进行排序
按h键可以获得top程序的在线帮助信息
按q键可以正常退出top程序
使用空格键可以强制更新进程状态显示
pgrep命令
用途:根据特定条件查询进程PID信息
[root@localhost ~]# pgrep "init"
1
[root@localhost ~]# pgrep -l "log"
2538 syslogd
2541 klogd
3221 login
[root@localhost ~]# pgrep -l -U teacher -t tty1
27483 bash
27584 vim
pgrep命令
用途:根据特定条件查询进程PID信息
[root@localhost ~]# pstree -aup
init,1
├─acpid,2866
├─atd,3060
├─auditd,2516
│ ├─python,2518 /sbin/audispd
│ └─{auditd},2517
……
[root@localhost ~]# pstree -ap teacher
bash,27483
└─vim,27674 myfile.txt
手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 28454
调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
Ctrl+Z 组合键
将当前进程挂起,即调入后台并停止执行
jobs命令
查看处于后台的任务列表
fg命令
将处于后台的进程恢复到前台运行,需指定任务序号
[root@localhost ~]# jobs
[1]- Stopped cp /dev/cdrom mycd.iso
[2]+ Stopped top
[root@localhost ~]# fg 1
Ctrl+C组合键
中断正在执行的命令
kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程
-9 选项用于强制终止
[root@localhost ~]# pgrep -l "portmap"
2869 portmap
[root@localhost ~]# kill -9 2869
[root@localhost ~]# killall -9 vim
[1]- 已杀死 /usr/bin/vim file1
[2]- 已杀死 /usr/bin/vim file2
pkill命令
用途:根据特定条件终止相应的进程
常用命令选项:
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
[root@localhost ~]# pgrep –l -U "hackli"
3045 bash
[root@localhost ~]# pkill -9 -U "hackli”
[root@localhost ~]# pgrep -l U "hackli”
DAC与MAC
1.DAC(Discretionary Access Control),主体是用户,访问目标文件由文件本身的权限决定,依进程运行时的用户身份决定其访问权限权限.
2.MAC(Mandatory Access Control),主体是进程,访问目标文件由策略决定.
SELinux配置文件 /etc/sysconfig/selinux
1.三种模式
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing --selinux的工作状态
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted --指定保护级别
2.设置selinux的模式
sestatus 查看SELinux状态
semodule -l 查看selinux加载的内核模块
getenforce 查询当前SELinx配置文件模式
setenforce 1 | 0 Enforcing | Permissive
3.SElinux的五种元素
ls -Z 查看文件的安全上下文
ps -Z 查看进程的上下文
id -Z 查看用户的上下文
User:role:type:sensitivity:category
User_u:object_r:tmp_t:s0:c0
4.selinux策略的控制文件 /selinux/booleans
getsebool [ -a ] 查看某个(所有)控制策略启用情况
setsebool [ -P ] 开启或者关闭某个策略,-P表示始终
5.例如查看samba的相关策略
下载安装VC14库,http://www.microsoft.com/en-us/download/details.aspx?id=48145
下载php,这里以php7.1为例,下载地址 http://windows.php.net/download#php-7.1 ,选择 VC14 x64 Non Thread Safe 。
解压到需要安装的目录,复制php.ini-development为php.ini
php.ini-development为开发环境配置文件模板,生产环境请使用php.ini-production
打开php.ini文件
设置时区,找到 ;date.timezone = ,去掉前面的‘;’号,改为date.timezone = PRC
开启常用扩展,找到; extension_dir = "ext",同样去掉前面的‘;’号。
找到;extension=php_bz2.dll 该行,该行以下均是扩展,去掉前面的‘;’号即可。
常用的扩展有:
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
浏览器打开http://localhost/ ,见到下面的页面,就成功啦
windows10 开启hyper-v功能
打开hyper-v
开始菜单 - windows管理工具 - hyper-V管理器
安装Server2016
如需Server2016 iso镜像,请参考 http://www.aiweibk.com/6440.html
启动虚拟机
连接虚拟机
接下来我就不多说了,和安装windows10差不多的步骤
如需要激活请参考 http://www.aiweibk.com/5315.html
Cannot send session cache limiter - headers already sent (output started at...) on line ...
在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)
<?php if (isset($_GET['dir'])) { // config the basedir $basedir = $_GET['dir']; } else { $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir) { if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { if (!is_dir($basedir . "/" . $file)) { // 如果是文件 echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " "; } else { $dirname = $basedir . "/" . $file; // 如果是目录 checkdir($dirname); // 递归 } } } closedir($dh); } } function checkBOM($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { // BOM // 的前三个字符的ASCII // 码分别为 // 239 // 187 // 191 if ($auto == 1) { $rest = substr($contents, 3); rewrite($filename, $rest); return (""); } else { return (""); } } else { return ("BOM Not Found."); } } function rewrite($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); }
at命令
一次性计划任务
服务脚本名称:/etc/init.d/atd
设置格式:at [HH:MM] [yyyy-mm-dd]
[root@localhost ~]# date 2011年 02月 21日 星期一 14:45:05 CST [root@localhost ~]# at 14:55 2011-02-21 at> pgrep -U root | wc -l > /tmp/ps.root at> job 1 at 2011-02-21 14:55 [root@localhost ~]# cat /tmp/ps.root 63
案例 | 在当天的21:30时自动关闭当前系统 |
root@localhost ~]# at 21:30 at> shutdown -h now at> job 7 at 2011-02-21 21:30
查看未执行任务列表
[root@localhost ~]# atq 1 2011-02-21 14:55 a root 2 2011-02-21 21:30 a root
删除第二条任务
[root@localhost ~]# atrm 2 [root@localhost ~]# atq 1 2011-02-21 14:55 a root
at计划任务 所在目录/var/spool/at
at的控制文件/etc/at.allow和 /etc/at.deny
===================================================================================
crontab命令
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行
全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下与本帐号同名的文件即可,接下来介绍如何设置用户自己的计划任务
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
管理cron计划任务
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
用户只需执行“crontab -e”命令后会自动调用文本编辑器(默认为vi)并打开“/var/spool/cron/用户名”文件,无需手动指定文件位置
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
应用示例
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * * 每隔3天
示例1(root用户)
每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包备份/etc/httpd目录
[root@localhost root]# crontab -e 50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 0 */5 * * /bin/rm –rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
示例2(jerry用户)
每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件
[root@localhost root]# crontab -e -u jerry 55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt
示例3:
root用户查看自己的计划任务列表
查看并删除jerry用户设置的计划任务
[root@localhost root]# crontab -l -u jerry 55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt [root@localhost root]# crontab -r -u jerry [root@localhost root]# crontab -l -u jerry no crontab for jerry [root@localhost root]#
Crontab安全性
默认情况下,所有用户都可使用cron工具,要限制对cron的访问,可以使用/etc/cron.allow与/etc/cron.deny文件。
1、这两个文件都不存在时,每个用户都可以访问cron工具。
2、若两个文件都存在,只有/etc/cron.allow中的用户可以访问cron工具,忽略/etc/cron.deny文件
3、如果/etc/deny文件不存在,则/etc/allow中的用户不可以访问cron工具。
NFS服务器
1.安装nfs-utils
yum -y install nfs-utils
2.创建需要共享的文件或目录
mkdir /test/share1 /test/share2 /test/share3
3.NFS配置文件
vi /etc/exports
4 .启动相关服务
service rpcbind start service nfs start
5.关闭防火墙
service iptables stop
6.查看当前主机的共享目录列表
showmount -e localhost exportfs -rv 使NFS服务器重新读取exports文件中的设置 exports -auv 停止当前主机中NFS服务器的所有目录输出
NFS客户端
1.安装nfs-utils
yum -y install nfs-utils
2 .启动相关服务
service rpcbind start service nfs start
3.查看指定主机共享目录信息
showmount -e 192.168.8.241
4.Linux客户端挂载NFS文件系统
5.系统启动自动挂载NFS文件系统
6.重新读取fstab文件,或者重启计算机
mount -a
7.查看挂载信息
df -T
mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。
PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.
/** * [AesSecurity aes加密,支持PHP7.1] */ class AesSecurity { /** * [encrypt aes加密] * @param [type] $input [要加密的数据] * @param [type] $key [加密key] * @return [type] [加密后的数据] */ public static function encrypt($input, $key) { $data = openssl_encrypt($input, 'AES-128-ECB', $key, OPENSSL_RAW_DATA); $data = base64_encode($data); return $data; } /** * [decrypt aes解密] * @param [type] $sStr [要解密的数据] * @param [type] $sKey [加密key] * @return [type] [解密后的数据] */ public static function decrypt($sStr, $sKey) { $decrypted = openssl_decrypt(base64_decode($sStr), 'AES-128-ECB', $sKey, OPENSSL_RAW_DATA); return $decrypted; } }
可据需求,自行改编。
php开发工具众多,主要有两类,一类是普通文本编辑器,另一类是集成开发工具(IDE)。
普通文本编辑器:
1、Sublime Text
2、微软的跨平台代码编辑器 visual studio code
3、Atom
4、还有notepad++,editplus,vi等等不再列举
集成开发工具(IDE)
1、zend官方的zend studio
2、JetBrains 公司的PhpStom
3、netbeans IED for php
4、eclipse for php
……
1、ThinkPHP 国人自己的
2、laravel 以优雅著称
3、Yii 快速、安全、专业 的 PHP 框架
4、zend framework zend自家的
5、Yaf(Yet Another Framework) 高性能的C语言编写的框架
6、phalcon使用 C 扩展编写、针对高性能优化的 PHP 框架
7、CodeIgniter、CakePHP、Symfony 等等
慕课网(IMOOC)是IT技能学习平台。慕课网(IMOOC)提供了丰富的移动端开发、php开发、web前端、android开发以及html5等视频教程资源公开课。并且富有交互性及趣味 性,你还可以和朋友一起编程。
云课堂是网易公司研发的一款大型在线教育平台服务,该平台面向学习者提供海量免费、优质课程,创新的个性化学习体验, 自由开放的交流互动环境。继网易公开课后,云课堂是网易公司在教育领域的又一重量级产品。
腾讯课堂-腾讯推出的专业在线教育平台,聚合大量优质教育机构和名师,下设职业培训、公务员考试、托福雅思、考证考级、英语口语、中小学教育等众多在线学习精品课程,打造老师在线上课教学、学生及时互动学习的课堂。腾讯课堂,学习成就梦想!
4、极客学院IT在线教育平台-中国专业的IT职业在线教育平台
极客学院作为中国专业IT职业在线教育平台,拥有海量高清IT职业课程,涵盖30+个技术领域,如Android,iOS ,Flash,Java,Python,HTML5,Swift,Cocos2dx等视频教程.根据IT在线学习特点,极客学院推出IT学习知识体系图,IT职业学习实战路径图,帮助IT学习者从零基础起步,结合IT实战案例演练,系统学习,助你快速成为IT优秀技术人才!
5、优酷学堂
优质课程、智能问答、趣味实践、随心笔记、教育、优酷公开课、计算机开发、交互视觉设计、Udacity、it、互联网、会计、视频教程、交流互动、免费、名师、实用、培训
一、express介绍
我们知道,php有thinkphp、laravel、yii、yaf等等一系列开源框架,java有spring、structs、Hibernate等,python有Django、webpy等,那么Node.js也有很大框架,比较主流的有express、koa框架,接下来我就选择express来开始学习。
npm 提供了大量的第三方模块,其中不乏许多 Web 框架,我们没有必要重复发明轮子,
因而选择使用 Express 作为开发框架,因为它是目前最稳定、使用最广泛,而且 Node.js 官
方推荐的唯一一个 Web 开发框架。
Express ( http://expressjs.com/ ) 除了为 http 模块提供了更高层的接口外,还实现了
许多功能,其中包括:
q 路由控制;
q 模板解析支持;
q 动态视图;
q 用户会话;
q CSRF 保护;
q 静态文件服务;
q 错误控制器;
q 访问日志;
q 缓存;
q 插件支持。
二、安装express
1、运行:npm install -g express
2、创建项目:express --view ejs blog
3、按照提示 cd blog && npm install
4、启动项目 SET DEBUG=blog:* & npm start
5、打开浏览器http://127.0.0.1:3000/,看到如下页面,表示express项目安装成功
三、express目录结构
app.js是项目的入口文件
routes是项目的路由文件目录
view是模板目录,根据上面的安装,我们是有模板引擎是ejs,该模板引擎通俗易懂。
一、环境说明
1、windows 10
2、node.js v6.10.3 LTS 下载地址 https://nodejs.org/en/
3、编辑器 sublime text 3
二、安装node.js
1、双击安装,一路下一步,安装完成。
2、cmd命令行 查看node.js版本:node --version ,如果出现版本号,说明安装成功,npm为nodejs的包管理工具,安装node的时候自动安装了npm。
三、Hello Node.js
1、建立一个名为 app.js 的文件,内容为:
//app.js var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('Node.js'); res.end('Hello World'); }).listen(3000); console.log("HTTP server is listening at port 3000.");
2、运行 node app.js 命令,
打开浏览器访问 http://127.0.0.1:3000
四、到此,node.js环境就配置完成了
专业企业官网建设,塑造企业形象,传递企业价值
系统软件开发,用心思考,用心设计,用心体验
打破技术瓶颈,让不堪重负的项目起死回生
构建全渠道一体化运营能力,实现全链路数字化
文案撰写、营销策划,专注品牌全案
一站式解决企业互联网营销痛点和难题
以技术的力量,改变互联网
联系我们