Operation
2023-07-17 11:07:09 0 举报
AI智能生成
liunx
作者其他创作
大纲/内容
yum -y install vim #安装vim编辑器yum list | grep bash #查询名字和bash有关的软件包yum -y install bash-completion #安装支持tab键的软件包,装好之后,使用exit退出,重新登录才生效Yum -y install net-tools #安装网络相关软件包yum -y install psmisc #安装支持killall命令的软件yum -y install gcc make #安装编译工具yum -y install pcre-devel #安装可以让nginx支持正则的软件包yum -y install openssl-devel #安装可以让nginx支持安装加密网站的软件包
环境
安装源码包: yum -y install gcc make #安装编译工具yum -y install pcre-devel #正则表达式依赖包yum -y install openssl-devel #SSL加密依赖包tar -xf nginx-1.22.1.tar.gzcd nginx-1.22.1[.....1] ./configure \\--prefix=/usr/local/nginx \\ #指定安装路径--user=nginx \\ #指定用户--group=nginx \\ #指定组--with-http_ssl_module #开启SSL加密功能make #编译make install #安装
useradd -s /sbin/nologin nginx/usr/local/nginx/sbin/nginx #启动服务/usr/local/nginx/sbin/nginx -s stop #关闭服务/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件/usr/local/nginx/sbin/nginx -V #查看软件信息ss -unltp | grep nginx #只能查看自己的信息ss -antpu | grep nginx #查看所有的信息
vim /user/local/nginx/conf/nginx.conf #配置文件 写入server { listen 80; server_name localhost; auth_basic \"password\"; #指令+参数;开启用户认证功能 auth_basic_user_file \"/usr/local/nginx/pass\"; #认证的密码文件/user/local/nginx/sbin/nginx -s reload #重新加载配置 不报错yum -y install httpd-tools #软件网站辅助包htpasswd -c /usr/local/nginx/pass tom #创建密码文件htpasswd /usr/local/nginx/pass jerry #追加创建,不加c,加c 会覆盖
配置文件:/user/local/nginx/conf/nginx.conf /user/local/nginx/conf/nginx.conf.default 配置文件,原版模板
用户认证
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf http { .. .. server font color=\"#569230\
window文件:windows环境配置hosts文件C:\\Windows\\System32\\drivers\\etc\\hosts右键---属性---安全---编辑---users---完全控制打钩然后用文本打开hosts,在最后添加192.168.99.5 www.a.com www.b.com
web 虚拟主机
Nginx
源码安装Nginx时必须使用--with-http_ssl_module参数,启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)。加密算法一般分为对称算法、非对称算法、信息摘要(hash值)。对称算法有:AES、DES,主要应用在单机数据加密。非对称算法有:RSA、DSA,主要应用在网络数据加密。信息摘要:MD5、sha256,主要应用在数据完整性校验。
公钥/私钥
mkdir https #创建安全网站的目录echo \"https~~~~ \" > https/index.html #创建安全网站的页面sbin/nginx #服务没开的话开服务sbin/nginx -s reload #已经开了的话重加载配置curl -k https://192.168.99.5 #检验,-k是忽略安全风险https~~~~ #这个内容实验成功systemctl stop firewalld #如果用真机的火狐浏览器测试需要关闭防火墙,然后输入https://192.168.99.5
验证
md5summd5sum 文件名 | md5sum 多次对比结果,如果数据变化 则被篡改
sha256sumsha512sum
hash值:校验数据完整性
vimdiff 文件名1 文件名2 对比数据
SSL虚拟主机
day01
1.nginx: 源码安装---解码---./configure---make && make install2.mariadb(数据库客户端软件) mariadb-server(数据库服务器软件) mariadb-devel(其他客户端软件的依赖包)3.php(解释器) php-mysqlnd(PHP的数据库扩展包) php-fpm(进程管理器服务,前两安装会自动安装)
linux操作系统Nginx网站服务软件MySQL、MariaDB数据库网站开发语言(php\\python)
步骤一: php-fpm配置文件打开php-fpm配置文件,注意该配置文件中;(分号)是注释vim /etc/php-fpm.d/www.conflisten = 127.0.0.1:9000 #php-fpm端口号(使用网络通信);listen = /run/php-fpm/www.sock #注释该行pm.max_children = 50 #最大进程数量pm.start_servers = 5 #最小进程数量
步骤二:修改Nginx配置文件并启动服务vim /usr/local/nginx/conf/nginx.conf... location ~ \\.php$ { #~是使用正则表达式,匹配以.php结尾 root html; fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口 fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME ...........; include fastcgi.conf; #加载fastcgi配置文件 }
步骤三:测试LNMP架构能否解析PHP页面/usr/local/nginx/sbin/nginx -s reloadcp ~/lnmp_soft/php_scripts/mysql.php /usr/local/nginx/html #拷贝动态网站测试页面到nginx中http://192.168.99.5/mysql.php客户端使用浏览器访问服务器PHP首页文档,检验是否成功http://192.168.99.5/mysql.php然后修改数据库内容进行测试mysql #进入数据库 create user dc@localhost identified by '123'; #创建测试账户 quit; #退出修改默认配置... location / { root html; index index.php index.html index.htm; #设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP, 不说访问什么页面时,服务器会把默认首页index.php返回给用户 } ...
部署LNMP
Nginx的默认访问日志文件为/usr/local/nginx/logs/access.logNginx的默认错误日志文件为/usr/local/nginx/logs/error.logPHP默认错误日志文件为/var/log/php-fpm/www-error.log
nginx用网络连接php-fpm
1.php-fpm:vim /etc/php-fpm.d/www.conf[www]font color=\"#e74f4c\
2.nginx:vim /usr/local/nginx/conf/nginx.conf... location ~ \\.php$ { #~是使用正则表达式,匹配以.php结尾 root html; #fastcgi_pass 127.0.0.1:9000; #注释或删除该行 fastcgi_pass unix:/run/php-fpm/www.sock; #将请求转发给php-fpm进程 ...................... }
nginx用socket方式连接php-fpm
动态网站 解析
修改三:server { listen 80; server_name localhost; rewrite /a.html$ /b.html redirect; #严格匹配 a.html结尾...........................修改四:server { listen 80; server_name localhost; rewrite ^/a.html$ /b.html redirect; #严格匹配 以a.html开头结尾...........................修改五:server { listen 80; server_name localhost; rewrite ^/a\\.html$ /b.html redirect; #.在正则表示任意,加转译\\,只能表示.,严格匹配a.html...........................
1.同一网站:vim conf/nginx.conf修改一:.. ..server { listen 80; server_name localhost; rewrite /a.html /b.html;...........................修改二:server { listen 80; server_name localhost; rewrite /a.html /b.html redirect; #地址栏随之发生改变...........................
修改二:vim /usr/local/nginx/conf/nginx.conf.. ..server { listen 80; server_name localhost; rewrite /(.*) http://www.tmooc.cn/$1;...................................
2.不同网站:修改一:vim /usr/local/nginx/conf/nginx.conf.. ..server { listen 80; server_name localhost; rewrite / http://www.tmooc.cn/;....................................
不同浏览器:mkdir html/firefoxecho firefox~~ > html/firefox/abc.html #火狐专用页面echo others~~ > html/abc.html #其他浏览器专用页面vim /usr/local/nginx/conf/nginx.conf.. ..server { listen 80; server_name localhost;if ($http_user_agent ~* firefox) { #设置火狐浏览器rewrite (.*) /firefox/$1; #就进行地址重写,用户看火狐专用页面$http_user_agent是nginx内置变量,存储用户信息,~是匹配正则包含,*是忽略大小写}
rewrite 旧地址 新地址 选项匹配正则
1.last:echo \"nginx-c~~\" > html/c.html #准备素材c页面rewrite /a.html /b.html last; #没有其他location语句时,打开b页面rewrite /b.html /c.html ;2.break location / { #此处为默认的location rewrite /a.html /b.html break; #break可以阻止后面的语句 root html; index index.html index.htm; }location /b.html { #这里是新添加的location rewrite /b.html /c.html; }##last 用于同一个location; break用于不同location!
选项:redirect 临时重定向,状态码302,爬虫不更新URIpermanent 永久重定向,状态码301,爬虫更新URIlast 不再读其他语句,但还会继续匹配其他location语句break 不再读其他语句,结束请求
地址重写nginx高级技术
day02
1.轮询:逐一循环调度,默认值1vim /usr/local/nginx/conf/nginx.conf.. ..http {.. ..#使用upstream定义后端服务器集群,集群名称任意(如webserver)#使用server定义集群中的具体服务器和端口upstream webserver { server 192.168.99.100:80; server 192.168.99.200:80; }.. ..server { listen 80; server_name localhost; location / { #通过proxy_pass将用户的请求转发给webserver集群 proxy_pass http://webserver; #webserver 自定义名,保持一致即可! }
2.weight:指定轮询几率,权重值与访问比率成正比(正整数),加权轮询!。。。。。。。 server 192.168.99.100:80 weight=2; server 192.168.99.100:80;。。。。。。。健康检查设置:。。。。。。。 server 192.168.99.100:80; server 192.168.99.100:80 max_fails=2 fail_timeout=30;。。。。。。。
集群优化:权重---加权轮询---健康检查---IP_hash集群健康检查:集群自带健康检查,默认检查次数1次,默认再次检查时间10s; 默认值受网络延迟影响,可自定义; # max_fails可以设置后台服务器的失败次数 # fail_timeout可以设置后台服务器的失败超时时间
3.ip_hsah:相同客户机,访问相同服务器,再次访问不再轮询upstream webserver { ip_hash; server 192.168.99.100:80;。。。。。。。 #根据客户端前三位IP值,固定后端服务器
4.添加down标记:让集群主机暂时不参与集群活动upstream webserver { server 192.168.99.100:80 down; server 192.168.99.200:80;..............................
HTTP 反向代理:网站业务代理优化:权重、健康检查、 ip_hash、down
四层代理:其他业务集群 nginx需要添加模块 ./configure --with-stream
vim /usr/local/nginx/conf/nginx.confstream { upstream backend { server 192.168.99.100:22; #后端SSH服务器的IP和端口 server 192.168.99.200:22;} server { listen 12345; #Nginx监听的端口 proxy_pass backend; }}http {.. ..ssh 192.168.88.5 -p 12345 #使用该命令多次访问查看效果如果配置没有错误,但无法反复登陆web1与web2,可以按下列方式解决:rm -rf ~/.ssh/known_hosts #在proxy中删除记录文件
TCP/UDP 四层代理:其他业务集群
步骤二:如何查看服务器状态信息(非常重要的功能)编译安装时使用--with-http_stub_status_module开启状态页面模块如果要添加模块,但不想删除之前nginx数据,可以将nginx源码目录下的objs目录中的nginx文件拷贝到nginx的sbin目录下替代现有主程序,然后killall nginx 再重启即可1.--------------------------------------------------------------------------------------------------------------./configure \\> --with-stream #开启4层代理模块> --with-http_stub_status_module #开启status状态页面2.--------------------------------------------------------------------------------------------------------------make #编译 ,已经安装过,直接编译即可[....nginx-1.22.1]# cp objs/nginx /usr/local/nginx/sbin/ #覆盖原文件/usr/local/nginx/sbin/nginx #开启nginx3.--------------------------------------------------------------------------------------------------------------vim /usr/local/nginx/conf/nginx.conf… …location /status { stub_status on; #allow IP地址; #deny all; .................................4.--------------------------------------------------------------------------------------------------------------curl http://192.168.99.5/statusActive connections: 1 ##Active connections:当前活动的连接数量server accepts handled requests Accepts:已经接受客户端的连接总数量 10 10 3 Handled:已经处理客户端的连接总数量Reading: 0 Writing: 1 Waiting: 0 Requests:客户端发送的请求数量 Reading:当前服务器正在读取客户端请求头的数量 Writing:当前服务器正在写响应信息的数量 Waiting:当前多少客户端在等待服务器的响应
步骤一:自定义报错页面HTTP常见状态码列表:200 正常301 & 302 重定向400 请求语法错误401 访问被拒绝403 禁止访问404 资源找不到414 请求URI头部太长500 服务器内部错误502 代理服务器无法正常获取下一个服务器正常的应答vim /usr/local/nginx/conf/nginx.conf.. .. charset utf-8; #仅在需要中文时修改该选项error_page 404 /test.html; #自定义错误页面,显示自定义test.html中的内容.. ..
步骤五:浏览器本地缓存静态数据修改Nginx配置文件,定义对静态页面的缓存时间vim /usr/local/nginx/conf/nginx.confhttp {location ~* \\.(jpg|jpeg|gif|png|css|js|ico|xml)$ {expires 30d; #定义客户端缓存时间为30天}
步骤四:优化Nginx数据包头缓存,支持超长地址优化前,使用脚本测试超长头部请求是否能获得响应默认情况下nginx无法支持长地址栏,会报414错误cat lnmp_soft/buffer.sh #!/bin/bashURL=http://192.168.99.5/index.html?for i in {1..5000}do URL=${URL}v$i=$idonecurl $URL #经过5000次循环后,生成一个超长的URL地址[root@proxy ~]# ~/lnmp_soft/buffer.sh<center><h1>414 Request-URI Too Large</h1></center> #访问失败vimvim /usr/local/nginx/conf/nginx.conf.. ..http {client_header_buffer_size 200k; #请求包头部信息的缓存大小 large_client_header_buffers 4 200k; #最大请求包头部信息的缓存个数与容量.. ..}
步骤三:优化Nginx并发量1.关闭selinux firewalld 装包http-toolsab -n 100 -c 100 http://192.168.99.5/ #-n任务量,-c是连接数2.--------------------------------------------------------------------------------vim /usr/local/nginx/conf/nginx.conf.. ..worker_processes 2; #调整为与当前CPU核心数量一致events {worker_connections 50000; #每个worker最大并发连接数}.. ..查看进程:ss -unltp | grep nginx ps aux | grep nginx3.优化系统本身:------------------------------------------------------------ulimit -n #查看最大文件数量ulimit -n 100000 #临时设置最大文件数量vim /etc/security/limits.conf .. .. * soft nofile 100000 * hard nofile 100000#用户或组 硬限制或软限制 需要限制的项目 限制的值
nginx 网站功能
nginx 调度器、集群优化
day03
Session:存储在服务器端,保存用户名、登陆状态等信息。
Cookies:由服务器下发给客户端,保存在客户端的一个文件里。保存的内容主要包括:SessionID。
session文件:ls /var/lib/php/session
session与cookie
Redis(Remote Dictionary Server )远程字典服务 Key-Value数据库 数据可以存储在内存中以保证高性能
redis服务----内存存数据----数据库-----存储有生命周期的数据mariadb-----硬盘存数据----数据库-----永久存储数据
vim /etc/redis.conf#bind 127.0.0.1protected-mode no #不开启保护模式
redis-cli #进入redis命令行set abc 456 #创建变量abc,里面的值是456get abc #查看变量abc的值keys * #查看当前库中所有keydel abc #删除变量abcflushall #删除所有数据quit #退出
装包:单独一台虚拟机存 yum -y install redis 默认端口:6379配置文件:/etc/redis.conf
yum -y install ~/lnmp_soft/php_scripts/phpredis-5.1.0-1.x86_64.rpm #有依赖,不能rpm直接安装vim /etc/php-fpm.d/www.conf #修改该配置文件的两个参数 php_value[session.save_handler] = redis php_value[session.save_path] = \"tcp://192.168.99.5:6379\"systemctl restart php-fpm清空浏览器的历史记录,再访问http://192.168.99.5仅登录一次即可成功
共享设置
session共享redis服务
day04
概述:java 是一种跨平台的、面向对象的程序设计语言,具有卓越的通用性/高效性/平台移植性、安全性--java SE 标准版 --java EE 企业版JDK是Sun针对java开发者推出的java语言的软件开发工具包 是java的核心---java运行环境 ---java工具 ---java基础的类库JRE是JDK的子集----java虚拟机 ---java核心类库和支持文件 ----不包括开发工具———编译器、调试器、其他工具Servlet 是java扩展web服务器功能的组建规范IBM webspherre Oracle weblogicApache tomcat RedHat Jboss
一:步骤一:部署Tomcat服务器软件yum -y install java-1.8.0-openjdk #安装JDKjava -version #查看JAVA版本...oft]# tar -xf apache-tomcat-8.0.30.tar.gz...oft]# mv apache-tomcat-8.0.30 /usr/local/tomcat...oft]# ls /usr/local/tomcatss -nutlp |grep java #查看java监听的端口若无法开启三个端口 8080 ;8005 ;8009 mv /dev/random /dev/random.bakln -s /dev/urandom /dev/randomkillall java/usr/local/tomcat/bin/startup.shhttp://192.168.99.100:8080 #测试步骤二:修改Tomcat配置文件echo \"tomcat-test~~~~\" > webapps/ROOT/test01.html #创建静态页面vim /usr/local/tomcat/webapps/ROOT/test02.jsp #测试JSP页面<html><body><center>Now time is: <%=new java.util.Date()%></center></body></html>
步骤三:配置Tomcat支持SSL加密网站1)创建加密用的私钥和证书文件keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore #提示输入密码为:123456#-genkeypair 生成密钥对#-alias tomcat 密钥别名#-keyalg RSA 定义密钥算法为RSA算法#-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore2)再次修改server.xml配置文件,创建支持加密连接的Connector<Connector port=\"8443\" protocol=\"org.apache.coyote.http11.Http11NioProtocol\"maxThreads=\"150\" SSLEnabled=\"true\" scheme=\"https\" secure=\"true\" clientAuth=\"false\" sslProtocol=\"TLS\" keystoreFile=\"/usr/local/tomcat/keystore\" keystorePass=\"123456\"/>...#备注,默认这段Connector被注释掉了,打开注释,添加密钥信息即可3)重启Tomcat服务器 4)查看 curl -k https://www.a.com:8443/步骤四:配置Tomcat日志1)为www.b.com虚拟主机开启日志vim /usr/local/tomcat/conf/server.xml<Host name=\"www.b.com\" appBase=\"web_b\" >...#从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可<Valve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs\" prefix=\"www-b-com\" suffix=\".log\" pattern=\"%h %l %u %t "%r" %s %b\" /> # 格式</Host>directory=\"logs\" : 日志位置 ; prefix=\"www-b-com\":日志自定义名 ; suffix=\".log\" :扩展名2)重启3)查看 cat /usr/local/tomcat/logs/www-b-com.2023.07.12.log
步骤二:tomcat访问路径与页面位置测试1:----------------------------------------------------------------------------------vim /usr/local/tomcat/conf/server.xml <Host name=\"www.b.com\" appBase=\"web_b\"> <Context path=\"\" docBase=\"\" /> #默认是ROOT,不写直接访问web_b/index.html </Host>echo \"web_b/ROOT/index.html\" > web_b/ROOT/index.html #默认页面路径echo \"web_b/index.html\" > web_b/index.html #创建素材,定义新路径curl www.b.com:8080 #测试可以看到的是默认的页面路径web_b/ROOT/index.html重启tomcatcurl www.b.com:8080 #重启后测试可以看到新路径 web_b/index.html测试2:---------------------------------------------------------------------------------<Context path=\"\" docBase=\"abc\" /> #修改成abcmkdir web_b/abc #创建测试目录echo \"web_b/abc/index.html\" > web_b/abc/index.html #测试页面curl www.b.com:8080 #查看,见到新路径 web_b/abc/index.html测试3:---------------------------------------------------------------------------------<Context path=\"\" docBase=\"/abc\" /> #修改成/abc,根下的abc,绝对路径, 不受tomcat约束,与appBase无关curl www.b.com:8080 #得到新路径 /abc/index.html测试4:---------------------------------------------------------------------------------<Host name=\"www.b.com\" appBase=\"web_b><Context path=\"/test\" docBase=\"/abc\" /> #path后面添加内容可以匹配用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果访问www.b.com:8080就看到web_b/ROOT的内容curl www.b.com:8080/test/ /abc/index.htmlcurl www.b.com:8080 web_b/ROOT/index.html测试5:---------------------------------------------------------------------------------<Context path=\"/test\" docBase=\"abc\" /> #将/abc改成abc当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容当用户访问www.b.com:8080时就看到web_b/ROOT的内容重启tomcat
二:使用Tomcat部署虚拟主机步骤一:配置服务器虚拟主机1)修改server.xml配置文件,创建虚拟主机vim /usr/local/tomcat/conf/server.xml... <Host name=\"www.b.com\" appBase=\"web_b\"> </Host> <Host name=\"www.a.com\" appBase=\"webapps\" unpackWARS=\"true\" autoDeploy=\"true\"> </Host>2)创建虚拟主机对应的页面根路径并测试mkdir -p web_b/ROOT #创建b网站的目录...cat]# echo \"tomcat-A~~~\" > webapps/ROOT/index.html...cat]# echo \"tomcat-B~~~\" > web_b/ROOT/index.htmlvim /etc/hosts 192.168.99.100 www.a.com www.b.com 重启 tomcatcurl www.a.com:8080 #测试tomcat-A~~~curl www.b.com:8080tomcat-B~~~3)查看虚拟主机www.a.com的配置 unpackWARs=\"true\" #自动解war包autoDeploy=\"true\
Tomcat服务器启动服务:/usr/local/tomcat/bin/startup.sh关闭服务:usr/local/tomcat/bin/shutdown.sh配置文件:usr/local/tomcat/conf/server.xml
步骤二:配置数据库并打包项目1)配置数据库yum install -y mariadb-servercd CMS/cp src/main/resources/shishuocms.properties . #拷贝网站数据库配置文件到当前目录,该文件定义了数据的用户名和密码等信息mysql -uroot < sql/install.sql #导入网站相关数据库文件mysqladmin password 12345678 #修改数据库密码如果数据库密码输入错误 mysqladmin password -uroot -p #改密码,先输入旧密码,然后输入两次新密码2)打包项目 /usr/local/maven/bin/mvn clean package #按照之前定义的 公网服务器地址、数据库配置等内容打包项目,注意该命令要在CMS目录进行步骤三:上线测试 cp ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml /usr/local/tomcat/conf/ cp: 是否覆盖 \"/usr/local/tomcat/conf/server.xml\"? y #把tomcat的配置文件恢复默认 重启tomcat rm -rf /usr/local/tomcat/webapps/ROOT #删除原有默认页面目录 cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps/ROOT.war #将新项目移动到tomcat中,然后会自动解包,然后真机打开浏览器访问192.168.99.100:8080看到“师说”页面则成功
maven应用
day05
1.vim /usr/local/nginx/conf/nginx.confhttp{ upstream toms { server 192.168.99.100:8080; server 192.168.99.200:8080; } server { location / { proxy_pass http://toms;3.bin/startup.sh
1.配置nginx+tomcat集群1) 在192.168.99.5主机上配置Nginx调度器2) 在192.168.99.100和192.168.99.200主机上配置Tomcat3)启服务
rpmbuild -ba nginx.spec #会报错,没有文件或目录ls /root/rpmbuild #自动生成的目录结构cp nginx-1.22.1.tar.gz /root/rpmbuild/SOURCES/vim /root/rpmbuild/SPECS/nginx.spec Name:nginx #源码包软件名称Version:1.22.1 #源码包软件的版本号Release: 1 #制作的RPM包版本号Summary: nginx is a web server software. #RPM软件的概述 License:GPL #软件的协议URL: www.test.com #网址Source0:nginx-1.22.1.tar.gz #源码包文件的全称#BuildRequires: #制作RPM时的依赖关系Requires: pcre-devel openssl-devel #安装RPM时的依赖关系%descriptionnginx is an HTTP and reverse proxy server. #软件的详细描述%postuseradd nginx -s /sbin/nologin #非必需操作:安装后脚本(创建账户)%prep%setup -q #自动解压源码包,并cd进入目录%build./configuremake %{?_smp_mflags}%installmake install DESTDIR=%{buildroot}%files%doc/usr/local/nginx/* #对哪些文件与目录打包%changelogrpmbuild -ba /root/rpmbuild/SPECS/nginx.specyum install /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-10.x86_64.rpm
2.制作nginx的RPM包1)安装rpm-build软件2)生成rpmbuild目录结构3)准备工作,将源码软件复制到SOURCES目录4)创建并修改SPEC配置文件5)rpmbuild创建RPM软件包
步骤二:web1主机创建VPN隧道ip tunnel add tun0 mode gre remote 192.168.99.200 local 192.168.99.100 #ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助 #mode设置隧道使用gre模式 #local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址ip addr add 10.10.10.100/8 peer 10.10.10.200/8 dev tun0 #为VPN配置隧道IP地址 #为隧道tun0设置本地IP地址10.10.10.100/24 #隧道对面的主机IP为10.10.10.200/24
步骤一:启用GRE模块lsmod #显示模块列表lsmod | grep ip_gre #确定是否加载了gre模块modprobe ip_gre #加载模块ip_gre
翻墙设置(非必需操作)echo \"1\" > /proc/sys/net/ipv4/ip_forward #开启路由转发iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.10
测试 web1 web2 ping 10.10.10.200ping 10.10.10.100
ip add show tun0 #查看p link set tun0 up #设置UPadd ------ del #查-----删
VPNlinux系统
步骤一:部署IPSec服务libreswan #安装加密工具cp myipsec.conf /etc/ipsec.d/ #复制配置IPSec密钥验证配置文件到ipsec.d目录配置:vim /etc/ipsec.d/myipsec.conf #修改配置第16行 left=192.168.99.100 #设置为本机ip(此处在真实环境为公网ip)vim /etc/ipsec.secrets #修改配置,添加加密信息 192.168.99.100 %any: PSK \"randpass\" #%any:是允许任何客户机连接本服务器,PSK预共享密钥,randpass是密码,等windows客户连接vpn服务器时需要该密码...vpn]#yum -y install ./xl2tpd-1.3.8-2.el7.x86_64.rpmvim /etc/xl2tpd/xl2tpd.conf #打开配置文件,32、33行 ip range = 10.10.10.10-10.10.10.18 #给客户分配的ip local ip = 192.168.99.100 #本机ipvim /etc/ppp/options.xl2tpd #修改配置文件,将第10、16行注释掉,删除掉21行的#以及空格,就可以启用加密#crtscts #注释该行#lock #注释该行vim /etc/ppp/chap-secrets #定义windows客户机的用户名和密码tom * 123456 * #另起一行创建用户tom,配置密码123456
开启服务: systemctl start ipsec #开启加密服务 ss -ntulp |grep :500 #检查加密服务 /usr/sbin/xl2tpd #开启vpn服务 ss -ntulp |grep xl2tpd #检查加vpn服务
windows设置:配置ipv4 为99网段设置Windows注册表,具体操作如下: 单击\"开始\",单击\"运行\",键入\"regedit\",然后单击\"确定\"找到下面的注册表子项,然后单击它:HKEY_LOCAL_MACHINE\\ System\\CurrentControlSet\\Services\\Rasman\\Parameters 在\"编辑\"菜单上,单击\"新建\"->\"DWORD值\"---改名为\"ProhibitIpSec\"双击----\"数值数据\"框中,键入\"1\",然后单击\"确定\"退出注册表编辑器,然后重新启动计算机添加vpn连接
创建L2TP+IPSec VPN
VPNwindows系统
vpn服务
vim /usr/lib/systemd/system/nginx.service[Unit]Description=The Nginx HTTP Server #描述信息After=network.target remote-fs.target nss-lookup.target[Service]Type=forking #仅启动一个主进程的服务为simple,启动若干子进程为forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadfont color=\"#e74f4c\
systemd 服务管理
day06
pip3 install pytz-2022.6-py2.py3-none-any.whlpip3 install Django-1.11.8-py2.py3-none-any.whlpip3 install django-bootstrap3-11.0.0.tar.gz解:tar -xf python-project-demo.tar.gz启服务:python3 名字 runserver 地址:端口 python3 manage.py runserver 0.0.0.0:8000<!-- {% bootstrap_css %} {% bootstrap_javascript %} -->
nginx + python 动态网站包:gcc make python3 python3-develpython依赖:———>安装python的命令:pip3 install 包名python 可以自己运行,不借助其他测试无法连接外网,需要将python-project-demo/learning_logs/templates/base.html文件中的特效注释
2.运行uWSGI...python]# uwsgi --ini myproject.ini #读取myproject.ini运行uWSGI3.修改nginx配置文件,添加uWSGI转发vim /usr/local/nginx/conf/nginx.conf... location / { uwsgi_pass 127.0.0.1:8000; #动态页面交给uWSGI include uwsgi_params; #调用uWSGI配置文件 .........
1.安装uWSGI[root@proxy python-project-demo]# cd .. [root@proxy python]# pip3 install uWSGI-2.0.21.tar.gz [root@proxy python]# vim myproject.ini [uwsgi] socket=127.0.0.1:8000 #与web服务(nginx)通信的接口 chdir=/root/python/python-project-demo #项目的工作目录 wsgi-file=learning_log/wsgi.py #指定项目中的wsgi.py配置文件 daemonize=/var/log/uwsgi.log #指定日志文件位置 #processes=4 #指定启动进程的数目 #master=true #开启主进程管理模式
Nginx+uWSGI+python动态页面+依赖软件
---使用比较平稳的过度方式升级或者替换产品项目的方法统称---金丝雀发布主要作用:1.及时发现项目问题;2.尽早获取用户反馈信息以改进产品; 3.项目有问题,可将影响控制到最小
web1:vim /usr/local/nginx/conf/nginx.conf http { ... server { listen 8001; server_name localhost; root html8001; index index.html; } ... } [root@web1 nginx]# mkdir html8001 [root@web1 nginx]# echo web1-8001 > html8001/index.htmlweb2:vim /usr/local/nginx/conf/nginx.confhttp {...server { listen 8002; server_name localhost; root html8002; index index.html;}...}[root@web2 nginx]# mkdir html8002[root@web2 nginx]# echo web1-8002 > html8002/index.html
1.配置Nginx实现用IP测试灰度发布[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf http { ... upstream s8001 { #测试集群1 server 192.168.99.100:8001; } upstream s8002 { #测试集群2 server 192.168.99.200:8002; } upstream default { #正常业务集群 server 192.168.99.100:80; server 192.168.99.200:80; } server { listen 80; server_name localhost; ... set $group \"default\"; #定义变量$group,默认值default if ($remote_addr ~ \"192.168.99.1\"){ #如果客户机ip是99.1就访问集群1 set $group s8001; } if ($remote_addr ~ \"192.168.99.2\"){ #如果客户机ip是99.2就访问集群1 set $group s8002; } location / { proxy_pass http://$group; #调用集群 root html; index index.html index.htm; } ... }
vim html/home.php #修改php页面,将原有Welcome那行修改成以下状态Welcome : <?phpif(preg_match(\"/^abc/\
2.不同用户ID测试灰度发布:---PHP动静分离vim conf/nginx.conflocation ~ \\.php$ { root html; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi.conf; }vim /etc/php-fpm.d/www.conflisten = 127.0.0.1:9000或:listen = /run/php-fpm/www.sock
灰度发布
2)创建测试目录 [root@web1 nginx]# mkdir html/file_a [root@web1 nginx]# mkdir html/file_b3)创建测试文件 [root@web1 nginx]# dd if=/dev/zero of=html/test.img bs=100M count=1 [root@web1 nginx]# dd if=/dev/zero of=html/file_a/test.img bs=100M count=1 [root@web1 nginx]# dd if=/dev/zero of=html/file_b/test.img bs=100M count=14)下载测试 wget www.b.com/file_a/test.img wget www.b.com/file_b/test.img5)连接限制http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { location /app { limit_rate 30k; limit_conn addr 1 ; }
1.定义limit_rate限制vim /usr/local/nginx/conf/nginx.confhttp {... limit_rate 100k; #全局限速 server { limit_rate 200k; #虚拟主机限速 listen 80; server_name www.b.com; root html; index index.html; location /file_a { limit_rate 300k; #file_a目录限速300k } location /file_b { limit_rate 0k; #file_b目录不限速 } }
$binary_remote_addr nginx内置变量,二进制的方式获得用户ip,并且以10m大小记录在addr文件中
limit_conn 连接限制
limit_conn_zone $binary_remote_addr zone=addr:10m;
限流限速
valid_referers指令可以检测被访问资源从哪个地址来1)修改配置,添加防盗链测试语句 [root@web1 nginx]# vim /usr/local/nginx/conf/nginx.conf server { ... valid_referers none 192.168.99.100; #如果请求中的referer 头字段包含者地址是99.100或者没有referer 头字段则有效, if ($invalid_referer){ #如果上述测试无效则条件成立 return 403; #返回错误提示 } ... }2)web1编写测试页面 [root@web1 nginx]# cat html/index.html web1 测试页面 -- <a href=\"http://192.168.99.100/nr.html\">内容</a> [root@web1 nginx]# cat html/nr.html web1内容页面3)web2编写测试页面 [root@web2 nginx]# cat html/index.html web2 测试页面 -- <a href=\"http://192.168.99.100/nr.html\">内容</a>4)测试,从192.168.99.100主页点内容可以访问,但从99.200点不可以
防盗链
访问限制
day07
OPERATION
0 条评论
回复 删除
下一页