一、按系列罗列Linux的发行版,并描述不一样发行版之间的联系与区别。php
二、安装Centos7.6操做系统,建立一个本身名字的用户名,并能够正常登陆,将主要步骤截图。html
三、配置环境变量,实现执行history的时候能够看到执行命令的时间。nginx
四、总结Linux哲学思想。git
五、总结Linux经常使用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令web
1) Linux的发行版(distribution)chrome
Debian、RedHat、SUSEshell
2) 联系json
基于LINUX发展而来,基于公开的标准的POSIX标准从新编写而成,LINUXJ是自由软件,免费、公开源代码的ubuntu
LINUX的思想源于UNIXvim
基于GPL协议
LINUX只是个内核,发行版本都是在此实现
3) 区别
按发行版本 一类是商业公司公司,如RedHat, 一类是以debian为表明,社区组织维护
Debian是包含Ubuntu的,遵循GNU规范,包管理工具 apt-get / dpkg
RedHat 是红帽公司研发, 包括Fedora、 Rhel、 Centos
安装忽略
ubuntu下 groupadd -g 1002 developer useradd -u 1002 -g 1002 -d /home/zzw1 -s /bin/bash -m zzw1 passwd zzw1 id zzw1 uid=1002(zzw1) gid=1002(developer) groups=1002(developer)
vim ~/.bashrc HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " . ~/.bashrc
1) 一切皆文件
2)提供不少小型的单一用途的程序
3) 链接程序,共同完成复杂的功能
4)配置数据存储在文本中
分为内部命令和外部命令,使用type查看
内置命令 xxx is a shell builtin,如echo, export
外部命令 xxx is $PATH/xxx, 如 screen、date、ifconfig
内置命令查看
help echo echo: echo [-neE] [arg ...] Write arguments to the standard output. Display the ARGs, separated by a single space character and followed by a newline, on the standard output. Options: -n do not append a newline -e enable interpretation of the following backslash escapes -E explicitly suppress interpretation of backslash escapes
外部命令 xxx --help
screen --help Use: screen [-opts] [cmd [args]] or: screen -r [host.tty] Options: -4 Resolve hostnames only to IPv4 addresses. -6 Resolve hostnames only to IPv6 addresses. -a Force all capabilities into each window's termcap. -A -[r|R] Adapt all windows to the new display width & height. -c file Read configuration file instead of '.screenrc'. -d (-r) Detach the elsewhere running screen (and reattach here). -dmS name Start as daemon: Screen session in detached mode. -D (-r) Detach and logout remote (and reattach here). -D -RR Do whatever is needed to get a screen session. -e xy Change command characters. -f Flow control on, -fn = off, -fa = auto. -h lines Set the size of the scrollback history buffer. -i Interrupt output sooner when flow control is on.
外部命令还有man能够查看帮助手册
man手册的分类(通常分为九类,可是只有前八类比较经常使用)
1 普通的命令(外部程序或者shell命令)
2 系统调用(内核提供的函数)
3 库调用(库中提供的函数)
4 特殊文件(常常是/dev下的设备文件)
5 文件格式,在其中会说明配置文件的格式
6 游戏相关
7 杂项
8 管理员命令
9 内核程序(非标准)
能够经过man -f man查看哪类,也能够经过 whatis查看
通常格式
command [options] [arguments] - command:命令 - options:--单词 或 -单字 - arguments:参数,有时候选项也带参数。
编译php
下载源文件 ./configure --prefix=/opt/php74 --enable-fpm --with-libzip --with-openssl --with-freetype --with-jpeg --enable-bcmath --enable-pcntl make make install 配置 vim /lib/systemd/system/php74-fpm.service [Unit] Description=The PHP 7.4 FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/opt/php74/var/run/php-fpm.pid ExecStart=/opt/php74/sbin/php-fpm --nodaemonize --fpm-config /opt/php74/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target systemctl start php74-fpm
编译openresty
./configure --prefix=/opt/openresty --with-luajit --with-http_iconv_module gmake gmake install
nginx 配置文件
自定义404 和 问日志为json格式
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; log_format log_json '{ "@timestamp": "$time_local", ' '"remote_addr": "$remote_addr", ' '"referer": "$http_referer", ' '"request": "$request", ' '"status": $status, ' '"bytes": $body_bytes_sent, ' '"agent": "$http_user_agent", ' '"x_forwarded": "$http_x_forwarded_for", ' '"up_addr": "$upstream_addr",' '"up_host": "$upstream_http_host",' '"up_resp_time": "$upstream_response_time",' '"request_time": "$request_time"' ' }'; access_log /var/run/access.log log_json; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name blog.chromev.com localhost; root /var/www/php; #charset koi8-r; #access_log logs/host.access.log main; location / { index index.html index.htm index.php; } error_page 404 404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location = /404.html { root /var/www/html2; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
json格式
tail -f /var/run/access.log { "@timestamp": "19/Apr/2020:21:48:52 +0800", "remote_addr": "108.162.215.50", "referer": "http://blog.chromev.com/asd", "request": "GET /404.html HTTP/1.1", "status": 304, "bytes": 0, "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36", "x_forwarded": "36.57.145.226", "up_addr": "-","up_host": "-","up_resp_time": "-","request_time": "0.000" }
基于OpenSSL自建CA和颁发SSL证书
CA服务器上操做
1) 配置文件
/etc/pki/tls/openssl.cnf
2)在CA目录下建立两个初始文件
cd /etc/pki/CA touch index.txt serial echo 01 > serial
3) 生成根密钥
cd /etc/pki/CA/ openssl genrsa -out private/cakey.pem 2048
为了安全起见,修改cakey.pem私钥文件权限为600或400,也可使用子shell生成( umask 077; openssl genrsa -out private/cakey.pem 2048 )
,下面再也不重复。
4) 生成根证书 (须要加入本机)
使用req命令生成自签证书
cd /etc/pki/CA/ openssl req -new -x509 -key private/cakey.pem -out cacert.pem
WEB服务器上
1) 生成私钥
cd /opt/openresty/nginx/ssl/ openssl genrsa -out nginx.key 2048
2) 为nginx生成证书签署请求
cd /opt/openresty/nginx/ssl/ openssl req -new -key nginx.key -out nginx.csr ... Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:GD Locality Name (eg, city) []:SZ Organization Name (eg, company) [Internet Widgits Pty Ltd]:COMPANY Organizational Unit Name (eg, section) []:IT_SECTION Common Name (e.g. server FQDN or YOUR name) []: blog.chroemv.com Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: ...
一样会提示输入一些内容,其它随便,除了Commone Name
必定要是你要授予证书的服务器域名或主机名,challenge password不填。
3) 用 CA公钥加签
openssl ca -in nginx.csr -out nginx.crt
3 使用证书
1) Nginx 使用 ssl 证书
# HTTPS server # server { listen 443 ssl; server_name blog.chromev.com; root /var/www/php/; #ssl_certificate cert.pem; #ssl_certificate_key cert.key; ssl_certificate /opt/openresty/nginx/ssl/nginx.crt; ssl_certificate_key /opt/openresty/nginx/ssl/nginx.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { index index.html index.htm; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
2 添加 CA 根证书到操做系统得到信任
mac 添加
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /cacert.pem
除了用命令行管理证书,还能够在 钥匙串访问
中进行管理
Linux (CentOs 6)
#安装 ca-certificates package: yum install ca-certificates #启用dynamic CA configuration feature: update-ca-trust force-enable #将证书文件放到 /etc/pki/ca-trust/source/anchors/ 目录下 mv /cacert.pem /etc/pki/ca-trust/source/anchors/ #执行: update-ca-trust extract
3 验证是否成功
curl -k https://blog.chromev.com <h4>Hello World</h4>