首页 文章 精选 留言 我的

精选列表

搜索[centos],共5665篇文章
优秀的个人博客,低调大师

Centos yum 安装软件是出现 except OSError, e: ^ SyntaxError: invalid syntax

错误原因: 系统中装有多个版本的Python,Python脚本运行的时候版本冲突。 解决办法:(以下两步都要执行,这里假设你的python2.7指向python2,如果不是就要针对性的进行修改,反正就yum依赖与python2.7只要指向它就可以了) 1. vi /usr/bin/yum 把#! /usr/bin/python修改为#! /usr/bin/python2 2. vi /usr/libexec/urlgrabber-ext-down 将/usr/bin/python改为/usr/bin/python2 这样就解决问题了,这种问题一般都是安装了python3后修改了连接导致指向python版本有问题,所以安装python3是要注意修改这些问题。

优秀的个人博客,低调大师

CentOS7.X安装Redis-4.0.8以及Redis集群搭建

安装redis 安装前的准备 yum install \ vim \ wget \ make \ gcc \ gcc-c++ \ automake \ autoconf \ -y \ 下载解压并安装 cd /root wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar -zxzf redis-4.0.8.tar.gz cd redis-4.0.8 make PREFIX=/usr/local/redis/ install 创建配置中要求的数据文件存储位置 mkdir /data mkdir /data/redis mkdir /usr/local/redis/log 添加修改配置文件参考配置 cp ./redis.conf /usr/local/redis vim /usr/local/redis/redis.conf # IP绑定 bind 127.0.0.1 192.168.0.111 # 保护模式(开启条件为各redis之间可以互相通信,做集群不可开启) protected-mode yes # 访问端口 port 6379 # 连接超时,单位S,0为不启用超时 timeout 0 # 以守护进程运行 daemonize yes # 数据文件路径 dir /data/redis # 进程ID文件的路径 pidfile /usr/local/redis/log/redis.pid # 日志文件路径 logfile /usr/local/redis/log/redis.log # 开启键过期删除通知 notify-keyspace-events Ex ESC :wq # 以下安全配置选项仅作参考 # 禁用部分危险命令 rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL "" # 添加访问密码 requirepass ******** # IP绑定本机 bind 127.0.0.1 性能优化 # 编辑/etc/rc.local vim /etc/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled ESC :wq # 添加/etc/rc.local执行权限 chmod +x /etc/rc.d/rc.local # 编辑/etc/sysctl.conf vim /etc/sysctl.conf vm.overcommit_memory = 1 net.core.somaxconn = 1024 ESC :wq # 立即解决 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 1024 > /proc/sys/net/core/somaxconn sysctl vm.overcommit_memory=1 sysctl -p 修改目录归属 useradd -s /sbin/nologin -M redis chown -R redis:redis /data/redis chown -R redis:redis /usr/local/redis 启动redis并设置开机启动 # 进入单元文件目录 cd /etc/systemd/system # 创建redis单元文件,格式为: [单元文件名].[单元文件类型] vim redis.service [Unit] Description=Start redis on boot. After=default.target network.target [Service] User=redis Group=redis Type=forking PIDFile=/usr/local/redis/log/redis.pid ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=false Restart=always [Install] WantedBy=multi-user.target ESC :wq # 修改文件权限为只有root用户可以编辑该文件 chown -R root:root /etc/systemd/system/redis.service chmod -R 644 /etc/systemd/system/redis.service # 更新systemd systemctl daemon-reload systemctl enable redis systemctl start redis 存入数据 /usr/local/redis/bin/redis-cli -h 127.0.0.1 set num 123 save get num quit 批量删除匹配规则数据 redis-cli keys [匹配规则]|xargs redis-cli del Redis宕机 aof文件损坏 启动失败 拷贝aof文件 修复坏损的aof文件 redis-check-aof --fix [aof文件名] 重新启动Redis Redis漏洞webshell的利用 参考链接 Redis该漏洞用到的原理如下 redis原生支持通过'redis-cli>config set'在不重启redis服务的情况下,动态修改配置dir、dbfilename; redis的配置中如果指定'dir /www/'和'dbfilename test.php',则当执行save命令时,会在/www/目录下生成一个数据存储文件test.php,虽然该文 件是一个二进制文件,但其内容中包含保存的数据的值,如果/www/目录为web目录,则/www/test.php则会被人利用,成为入侵你服务器的入口; 漏洞举例(这是一个负面教材) redis以超级管理员用户root运行 Nginx以超级管理员用户root启动,子进程也以root运行 web服务器为nginx,并做如下配置: server { listen x; server_name xxx.xxx.com; root /www; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 通过redis-cli执行了以下命令 config set dir /www/ config set dbfilename test.php set test "<?php exec($_GET['cmd']); ?>" save 这时候可怕的事情出现了 在/www/目录下,存在test.php文件,它可以通过http://xxx.xxx.com/test.php访问到 如果现在访问http://xxx.xxx.com/test.php?cmd=xxx,那么xxx就会被以root用户执行(xxx为任意linux命令) Redis漏洞webshell的防范 不要线上使用redis的web管理工具 redis以低权限用户运行(如rediser等让人想不到的用户名) redis仅允许通过本机和内网访问(bind 127.0.0.1 192.168.0.12/24) redis禁用config命令(在配置文件中可以禁用rename-command CONFIG "") web服务子进程以低权限用户运行(因为webshell的运行用户为web服务的子进程) redis集群(cluster方式) 集群前的配置(单机两服务测试6379,6380) # 内网IP:192.168.0.100 修改redis.conf vim /usr/local/redis/redis.conf # 启用cluster cluster-enabled yes # 调用cluster配置文件 cluster-config-file nodes-6379.conf # 集群超时 cluster-node-timeout 15000 # 关闭宕机全停 cluster-require-full-coverage no # 集群从属元素个数 cluster-slave-validity-factor 10 # 从机数最低迁移值(master至少有两台slave,才能做slave迁移) cluster-migration-barrier 1 ESC :wq 配置文件添加 yum install ruby gem install redis cp /usr/local/redis/redis.conf /usr/local/redis/redis.conf.backup cp /usr/local/redis/redis.conf /usr/local/redis/redis-6379.conf cp /usr/local/redis/redis.conf /usr/local/redis/redis-6380.conf mkdir /usr/local/redis/data/6379 mkdir /usr/local/redis/data/6380 修改redis-6379.conf vim /usr/local/redis/redis-6379.conf unixsocket /usr/local/redis/data/6379/redis.sock pidfile /usr/local/redis/log/redis_6379.pid logfile /usr/local/redis/log/redis_6379.log dir /usr/local/redis/data/6379/ bind 192.168.0.100 port 6379 ESC :wq 修改redis-6380.conf vim /usr/local/redis/redis-6380.conf unixsocket /usr/local/redis/data/6380/redis.sock pidfile /usr/local/redis/log/redis_6380.pid logfile "/usr/local/redis/log/redis_6380.log" dir /usr/local/redis/data/6380/ bind 192.168.0.100 port 6380 ESC :wq 修改开机启动 vim /etc/rc.local /usr/local/redis/bin/redis-server /usr/local/redis/redis-6379.conf /usr/local/redis/bin/redis-server /usr/local/redis/redis-6380.conf ESC :wq 创建cluster cd /root/redis/src/ # 查看帮助 ./redis-trib.rb help # 添加绑定 ./redis-trib.rb create --replicas 1 192.168.0.100:6379 192.168.0.100:6380 集群测试 /usr/local/redis/bin/redis-cli -h 192.168.0.100 -p 6379 -c 正常关闭(不要强制关闭) /usr/local/redis/bin/redis-cli -h 192.168.0.100 -p 6379 shutdown 领支付宝红包支持作者

优秀的个人博客,低调大师

CentOS服务器下nginx服务器多域名配置

Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。 下面我就来说说server_name的使用吧: server_name的匹配顺序 Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1、准确的server_name匹配,例如: server { listen 80 ; server_name ssdr.info www.ssdr.info; ... } 2、以*通配符开始的字符串: server { listen 80 ; server_name *.ssdr.info; ... } 3、以*通配符结束的字符串: server { listen 80 ; server_name www.*; ... } 4、匹配正则表达式: server { listen 80 ; server_name ~^(?.+)\.howtocn\.org$; ... } Nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。 server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能,这样可以尽量精简配置文件,毕竟太长的配置文件日常维护也很不方便。下面是2个具体的应用: 在一个server块中配置多个站点: server { listen 80 ; server_name ~^(www\.)?(.+)$; index index.php index.html; root /data/wwwsite/$ 2 ; } 站点的主目录应该类似于这样的结构: /data/wwwsite/ssdr.info /data/wwwsite/linuxtone.org /data/wwwsite/baidu.com /data/wwwsite/google.com 这样就可以只使用一个server块来完成多个站点的配置。 在一个server块中为一个站点配置多个二级域名 。 实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名: server { listen 80 ; server_name ~^(.+)?\.howtocn\.org$; index index.html; if ($host = ssdr.info){ rewrite ^ http: //www.ssdr.info permanent; } root /data/wwwsite/ssdr.info/$ 1 /; } 站点的目录结构应该如下: /data/wwwsite/ssdr.info/www/ /data/wwwsite/ssdr.info/nginx/ 这样访问www.ssdr.info时root目录为/data/wwwsite/ssdr.info/www/,nginx.ssdr.info时为/data/wwwsite/ssdr.info/nginx/,以此类推。 后面if语句的作用是将ssdr.info的方位重定向到www.ssdr.info,这样既解决了网站的主目录访问,又可以增加seo中对www.ssdr.info的域名权重。 多个正则表达式 如果你在server_name中用了正则,而下面的location字段又使用了正则匹配,这样将无法使用$1,$2这样的引用,解决方法是通过set指令将其赋值给一个命名的变量: server { listen 80 ; server_name ~^(.+)?\.howtocn\.org$; set $www_root $ 1 ; root /data/wwwsite/ssdr.info/$www_root/; location ~ .*\.php?$ { fastcgi_pass 127.0 . 0.1 : 9000 ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwsite/ssdr.info/$fastcgi_script_name; include fastcgi_params; } } Nginx不同域名反向代理到另一台服务器 proxy_pass和$host 想让一个VPS专门做另一个VPS的前端,后端VPS每添加一个域名,前端VPS就要同时添加一个域名来反向代理,作为前端的VPS如果一个一个的添加后端VPS的域名,那么这个事情特别麻烦,能不能让其自动反向代理后端VPS呢,用到proxy_pass和$host就可以轻松实现。 以下例子为了省事,以lnmp为安装环境进行设置 修改前端VPS的nginx.conf文件,修改成以下内容: server { listen 80 ; server_name $host; location / { proxy_pass http: //www.31.gd/; proxy_set_header Host $host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60 ; proxy_read_timeout 600 ; proxy_send_timeout 600 ; } 下面的一并修改吧。 location /.(php|php5)?$ { fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; } location /status { stub_status on; access_log off; } location /.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location /.(js|css)?$ { expires 12h; } 这样就可以实现了前端VPS可以反向代理任意域名到后端VPS,只要将域名解析到前端VPS,后端VPS进行域名绑定,那么就可以直接访问到了 一台nginx带多个域名多个tomcat情况的配置 多个域名,其中2个域名需支持泛域名解析: 1、www.abc.com 2、www.bcd.com 3、*.efg.com 4、*.hij.com 其中1,2,3为一台tomcat,4为独立tomcat。前端一台nginx,通过配置多个虚拟主机来实现该部署。 进入/etc/nginx/conf.d目录,所有虚拟主机的配置文件都在该目录下存放,配置。 配置支持泛域名 # # A virtual host using mix of IP-, name-, and port-based configuration # server { listen 81 ; server_name *.efg.com; location / { proxy_pass http: //localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # # A virtual host using mix of IP-, name-, and port-based configuration # server { listen 81 ; server_name *.hij.com; location / { proxy_pass http: //localhost:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 泛域名解析关键为红色部分,如果没有红色部分,后端8080及8081口对应的tomcat虚拟主机将无法获得域名信息,导致后端tomcat无法获取到对应的域名信息。 后端TOMCAT支持泛域名解析时,需要设置 host name 为 localhost 以支持泛域名指向。 Nginx 多域名配置 nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里。 一、每个域名一个文件的写法 首先打开 nginx域名配置文件存放目录:/usr/local/nginx/conf/servers ,如要绑定域名www.web126.com 则在此目录建一个文件:www.web126.com.conf 然后在此文件中写规则,如: server { listen 80 ; server_name www.web126.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www/web126.com; #网站根目录 include location.conf; #调用其他规则,也可去除 } 然后重起nginx服务器,域名就绑定成功了。 Nginx服务器重起命令:/etc/init.d/nginx restart。 二、一个文件多个域名的写法 一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如: server { listen 80 ; server_name www.web126.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www/web126.com; #网站根目录 include location.conf; #调用其他规则,也可去除 } server { listen 80 ; server_name msn.web126.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www/msn.web126.com; #网站根目录 include location.conf; #调用其他规则,也可去除 } 三、不带www的域名加301跳转 如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如: server { listen 80 ; server_name web126.com; rewrite ^/(.*) http: //www.web126.com/$1 permanent; } 四、添加404网页 添加404网页,都可又直接在里面添加,如: server { listen 80 ; server_name www.web126.com; #绑定域名 index index.htm index.html index.php; #默认文件 root /home/www/web126.com; #网站根目录 include location.conf; #调用其他规则,也可去除 error_page 404 / 404 .html; } 最后还有一个方法需要注意,可能有需要禁止IP直接访问80端口或者禁止非本站的域名绑定我们的IP,这样的话应该 如下处理,放到最前一个server上面即可: server{ listen 80 default ; server_name _; return 403 ; } 学会上面四种规则方法,基本就可以自己独立解决nginx 多域名配置问题了。

优秀的个人博客,低调大师

centos6.x 使用raid5构建lvm逻辑卷

1、将之前实验环境还原: a、利用umount先卸载之前挂载的文件系统; b、修改/etc/fstab里面的数据,让开机不会自动挂载; c、利用fdisk将该分区删除; 整合raid5和lvm实验 实验环境: 一块6G的盘,分成5个分区,每个分区1G。 其中4个作为active态,一个为spare态。 fdisk -l 开始磁盘分区: [plain] view plain copy Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x00000000 [plain] view plain copy [root@srcxtts~]#fdisk/dev/sdd DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel BuildinganewDOSdisklabelwithdiskidentifier0x95cc4770. Changeswillremaininmemoryonly,untilyoudecidetowritethem. Afterthat,ofcourse,thepreviouscontentwon'tberecoverable. Warning:invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite) WARNING:DOS-compatiblemodeisdeprecated.It'sstronglyrecommendedto switchoffthemode(command'c')andchangedisplayunitsto sectors(command'u'). Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem Command(mforhelp):n Commandaction eextended pprimarypartition(1-4) p Partitionnumber(1-4):1 Firstcylinder(1-783,default1): Usingdefaultvalue1 Lastcylinder,+cylindersor+size{K,M,G}(1-783,default783):+1G Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux Command(mforhelp):n Commandaction eextended pprimarypartition(1-4) p Partitionnumber(1-4):2 Firstcylinder(133-783,default133): Usingdefaultvalue133 Lastcylinder,+cylindersor+size{K,M,G}(133-783,default783):+1G Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux /dev/sdd2133264106029083Linux Command(mforhelp):n Commandaction eextended pprimarypartition(1-4) p Partitionnumber(1-4):3 Firstcylinder(265-783,default265): Usingdefaultvalue265 Lastcylinder,+cylindersor+size{K,M,G}(265-783,default783):+1G Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux /dev/sdd2133264106029083Linux /dev/sdd3265396106029083Linux Command(mforhelp):n Commandaction eextended pprimarypartition(1-4) e Selectedpartition4 Firstcylinder(397-783,default397): Usingdefaultvalue397 Lastcylinder,+cylindersor+size{K,M,G}(397-783,default783): Usingdefaultvalue783 Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux /dev/sdd2133264106029083Linux /dev/sdd3265396106029083Linux /dev/sdd43977833108577+5Extended Command(mforhelp):n Firstcylinder(397-783,default397): Usingdefaultvalue397 Lastcylinder,+cylindersor+size{K,M,G}(397-783,default783):+1G Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux /dev/sdd2133264106029083Linux /dev/sdd3265396106029083Linux /dev/sdd43977833108577+5Extended /dev/sdd53975281060258+83Linux Command(mforhelp):n Firstcylinder(529-783,default529): Usingdefaultvalue529 Lastcylinder,+cylindersor+size{K,M,G}(529-783,default783):+1G Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux /dev/sdd2133264106029083Linux /dev/sdd3265396106029083Linux /dev/sdd43977833108577+5Extended /dev/sdd53975281060258+83Linux /dev/sdd65296601060258+83Linux Command(mforhelp):w Thepartitiontablehasbeenaltered! Callingioctl()tore-readpartitiontable. Syncingdisks. 2、创建raid5磁盘 [plain] view plain copy [root@srcxtts~]#mdadm--create--auto=yes/dev/md0--level=5\ >--raid-devices=4--spare-devices=1/dev/sdd{1,2,3,5,6} mdadm:Defaultingtoversion1.2metadata mdadm:array/dev/md0started. [root@srcxtts~]#ll/dev/md0 brw-rw----.1rootdisk9,05月1009:26/dev/md0 [root@srcxtts~]#cat/proc/mdstat Personalities:[raid6][raid5][raid4] md0:activeraid5sdd5[5]sdd6[4](S)sdd3[2]sdd2[1]sdd1[0] 3176448blockssuper1.2level5,512kchunk,algorithm2[4/4][UUUU] unuseddevices:<none> 3、对raid5磁盘/dev/md0创建pv [plain] view plain copy [root@srcxtts~]#pvcreate/dev/md0 Physicalvolume"/dev/md0"successfullycreated [root@srcxtts~]#pvdisplay/dev/md0 "/dev/md0"isanewphysicalvolumeof"3.03GiB" ---NEWPhysicalvolume--- PVName/dev/md0 VGName PVSize3.03GiB AllocatableNO PESize0 TotalPE0 FreePE0 AllocatedPE0 PVUUIDGjGVBh-z3h6-uyD0-xNjQ-LflN-j1gb-XvR4I7 4、根据生成的pv创建vg,参数默认,pe大小默认4M [plain] view plain copy [root@srcxtts~]#vgcreateraidvg/dev/md0 Volumegroup"raidvg"successfullycreated [plain] view plain copy [root@srcxtts~]#vgdisplayraidvg ---Volumegroup--- VGNameraidvg SystemID Formatlvm2 MetadataAreas1 MetadataSequenceNo1 VGAccessread/write VGStatusresizable MAXLV0 CurLV0 OpenLV0 MaxPV0 CurPV1 ActPV1 VGSize3.03GiB PESize4.00MiB TotalPE775 AllocPE/Size0/0 FreePE/Size775/3.03GiB VGUUIDJx2ZNz-juP4-g8fx-oPJ5-F3Mg-QYn4-WoZ5HO 5、把vg中全部的pe都分配给lv,创建lv [plain] view plain copy [root@srcxtts~]#lvcreate-l775-nraidlvraidvg Logicalvolume"raidlv"created [root@srcxtts~]#lvscan ACTIVE'/dev/vg_srcxtts/lv_root'[21.58GiB]inherit ACTIVE'/dev/vg_srcxtts/lv_swap'[3.94GiB]inherit ACTIVE'/dev/raidvg/raidlv'[3.03GiB]inherit [root@srcxtts~]#lvdisplay/dev/raidvg/raidlv ---Logicalvolume--- LVPath/dev/raidvg/raidlv LVNameraidlv VGNameraidvg LVUUIDrOaylO-3Br7-sUo3-3IRZ-Rf4D-O5V8-A98KGh LVWriteAccessread/write LVCreationhost,timesrcxtts,2018-05-1009:29:36+0800 LVStatusavailable #open0 LVSize3.03GiB CurrentLE775 Segments1 Allocationinherit Readaheadsectorsauto -currentlysetto6144 Blockdevice253:2 6、将lv格式化为ext3文件系统 [plain] view plain copy [root@srcxtts~]#mkfs.ext3/dev/raidvg/raidlv mke2fs1.41.12(17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096(log=2) 分块大小=4096(log=2) Stride=128blocks,Stripewidth=384blocks 198400inodes,793600blocks 39680blocks(5.00%)reservedforthesuperuser 第一个数据块=0 Maximumfilesystemblocks=813694976 25blockgroups 32768blockspergroup,32768fragmentspergroup 7936inodespergroup Superblockbackupsstoredonblocks: 32768,98304,163840,229376,294912 正在写入inode表:完成 Creatingjournal(16384blocks):完成 Writingsuperblocksandfilesystemaccountinginformation:完成 Thisfilesystemwillbeautomaticallycheckedevery33mountsor 180days,whichevercomesfirst.Usetune2fs-cor-itooverride. 7、创建挂载点并挂载lv [plain] view plain copy [root@srcxtts~]#mkdir/mnt/raidlvm [root@srcxtts~]#mount/dev/raidvg/raidlv/mnt/raidlvm [plain] view plain copy [root@srcxtts~]#df-h 文件系统容量已用可用已用%%挂载点 /dev/mapper/vg_srcxtts-lv_root 22G11G9.4G54%/ tmpfs2.0G84K2.0G1%/dev/shm /dev/sda1477M60M392M14%/boot /dev/mapper/raidvg-raidlv 3.0G69M2.8G3%/mnt/raidlvm [root@srcxtts~]# 到此整合就完成了。 实验还原: 1、卸载lv文件系统 [plain] view plain copy [root@srcxtts~]#umount/mnt/raidlvm [root@srcxtts~]#df-h 文件系统容量已用可用已用%%挂载点 /dev/mapper/vg_srcxtts-lv_root 22G11G9.4G54%/ tmpfs2.0G84K2.0G1%/dev/shm /dev/sda1477M60M392M14%/boot 2、移除lv [plain] view plain copy [root@srcxtts~]#lvremove/dev/raidvg/raidlv Doyoureallywanttoremoveactivelogicalvolumeraidlv?[y/n]:y Logicalvolume"raidlv"successfullyremoved 3、改变vg的状态为非active [plain] view plain copy [root@srcxtts~]#vgchange-anraidvg 0logicalvolume(s)involumegroup"raidvg"nowactive 4、移除vg [plain] view plain copy [root@srcxtts~]#vgremoveraidvg Volumegroup"raidvg"successfullyremoved 5、移除pv [plain] view plain copy [root@srcxtts~]#pvremove/dev/md0 Labelsonphysicalvolume"/dev/md0"successfullywiped 6、停md0 raid磁盘 [plain] view plain copy [root@srcxtts~]#mdadm--stop/dev/md0 mdadm:stopped/dev/md0 7、使用fdisk将磁盘还原 [plain] view plain copy [root@srcxtts~]#fdisk/dev/sdd WARNING:DOS-compatiblemodeisdeprecated.It'sstronglyrecommendedto switchoffthemode(command'c')andchangedisplayunitsto sectors(command'u'). Command(mforhelp):p Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem /dev/sdd111321060258+83Linux /dev/sdd2133264106029083Linux /dev/sdd3265396106029083Linux /dev/sdd43977833108577+5Extended /dev/sdd53975281060258+83Linux /dev/sdd65296601060258+83Linux Command(mforhelp):d Partitionnumber(1-6):1 Command(mforhelp):d Partitionnumber(1-6):2 Command(mforhelp):d Partitionnumber(1-6):3 Command(mforhelp):d Partitionnumber(1-6):4 Command(mforhelp):d Nopartitionisdefinedyet! Command(mforhelp):5 5:unknowncommand Commandaction atoggleabootableflag beditbsddisklabel ctogglethedoscompatibilityflag ddeleteapartition llistknownpartitiontypes mprintthismenu naddanewpartition ocreateanewemptyDOSpartitiontable pprintthepartitiontable qquitwithoutsavingchanges screateanewemptySundisklabel tchangeapartition'ssystemid uchangedisplay/entryunits vverifythepartitiontable wwritetabletodiskandexit xextrafunctionality(expertsonly) Command(mforhelp):w Thepartitiontablehasbeenaltered! Callingioctl()tore-readpartitiontable. Syncingdisks. [root@srcxtts~]#fdisk/dev/sdd WARNING:DOS-compatiblemodeisdeprecated.It'sstronglyrecommendedto switchoffthemode(command'c')andchangedisplayunitsto sectors(command'u'). Command(mforhelp):q [root@srcxtts~]#fdisk/dev/sdd-l Disk/dev/sdd:6442MB,6442450944bytes 255heads,63sectors/track,783cylinders Units=cylindersof16065*512=8225280bytes Sectorsize(logical/physical):512bytes/512bytes I/Osize(minimum/optimal):512bytes/512bytes Diskidentifier:0x95cc4770 DeviceBootStartEndBlocksIdSystem [root@srcxtts~]#

优秀的个人博客,低调大师

基于 Nginx 的中间件架构(CentOS 7环境)

目标 一:教你实战 二:了解中间件架构 image.png Nginx 性能优化 三:贯彻技术原理 四:理论结合实践 安排 基础篇 场景实践篇 深度学习篇 架构篇 学习环境 安装 一次初始化 验证 yum 源可用 确保关闭防火墙规则 确保关闭 SELinux yum -y install gcc gcc-c++ autoconf pcre pcre-devel makeautomake 安装所需依赖 yum -y install wget httpd-tools vim 安装依赖包 初始化相关目录 基础篇 image.png 使用官方 yum 源配置 rpm -ql nginx 执行 curl 命令 重启服务 提前备份 进阶学习 静态资源 Web 服务 代理服务 负载均衡调度器 SLB 动态缓存 9 Nginx的访问控制 9.1 access_module 配置语法介绍

优秀的个人博客,低调大师

CentOS7中时间同步,时间信息查看,at延时任务

1.时间同步 在服务器端共享时间 vim /etc/chrony.conf 29 local stratum 10 ##开启时间共享功能并设定共享级别 ##这个参数开启后本机不同步别人的时间到本机 22 allow 172.25.254.0/24 ##允许那些客户端来访问本机共享的时间 systemctl restart chronyd 注意:服务端此时的防火墙应关闭 在客户端: vim /etc/chrony.conf server 172.25.254.120 iburst ##同步服务端主机时间 systemctl restart chronyd ##重启服务 chronyc sources -v ##查看是否同步时间 ^*代表同步成功 ^?代表没同步过来 ###查看时间,设定时间指令 timedatectl ##查看时间 timedatectl list-timezones ##查看时区 timedatectl set-timezone Asia/Shanghai ##设定时区 timedatectl date vim /etc/adjtime timedatectl set-local-rtc 1 ##设定成本地时间 vim /etc/adjtime timedatectl set-local-rtc 0 ##设定成utc时间 vim /etc/adjtime timedatectl timedatectl set-time "2018-11-11 11:11:11" ##更改当前本地时间 date at ##延时任务操作指令 at 时间 at now+5min ##5分钟后执行任务 at 16:38 ##在16:38执行任务 >touch /mnt/file{1..10} >ctrl+d ##结束操作 at -l ##查看延时任务job号 at -c job号 ##查看延迟任务 at -r job号 ##撤销延迟任务 ##操作步骤## vim /etc/at.deny ##设定at用户使用黑名单 useradd westos useradd linux su - linux su - westos vim /etc/at.allow ##设定at用户使用白名单(其余所有用户都默认是黑名单) su - linux su - westos at now+1min vim /etc/at.allow su - linux

优秀的个人博客,低调大师

CentOS 7.x上搭建gitlab教程(https可用,邮件可用)

目录 知识要求 搭建感想 搭建过程 参考 知识要求: nginx基础知识 搭建感想 注:以下是我搭建gitlab时的思考,需要nginx的基础知识,Docker的基础知识才容易理解,与下面的搭建过程是独立的,不感兴趣可直接略过。 其实gitlab已经搭建并用了一年多了,现在所有的项目管理都通过gitlab完成。但是一直以来都有2个问题: 80端口被系统的nginx占用了,所以只能监听非80端口; 443端口也被系统的nginx占用,所以也一直没增加对https的支持; 最近正在尝试对所有已有的服务Docker化,一方面想让gitlab的搭建更简单些,另一方面也把这两个问题都处理掉。 于是就做了两个Docker容器:nginx和gitlab,相当于nginx和gitlab运行在局域网的不同主机,所以端口上没冲突。nginx是对外的服务器,它做一层反向代理到gitlab就能让gitlab提供对外的服务。 然而。。。这个做法却带来了一个新问题:gitlab需要的是22,80,443端口,80与443通过反向代理解决了,22却没办法解决。因为正常来讲,宿主机的SSH肯定也在使用,所以gitlab的SSH监听端口映射到宿主机会有冲突。 当然了,解决办法还是有的,不过非常繁琐。我们做Docker的目的不就是为了降低布署难度吗?如果使用Docker的配置比在宿主机上还繁琐,那使用起来就没太大意义了。 于是gitlab就没有放在Docker中,而是直接搭在宿主机上。 搭建过程 安装 gitlab的安装是很简单的,先下载安装包: wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.5-ce.0.el7.x86_64.rpm 安装: rpm -Uvh gitlab-ce-10.2.5-ce.0.el7.x86_64.rpm 配置 gitlab内置了nginx的服务,所以默认会占用80和443端口。一般来说,我们做WEB开发,服务器上早就安装了nginx或者apache,把80和443端口给占了,所以需要做些修改防止冲突。 简单的修改端口是不可行的,比如80改成85,当查看gitlab项目时,下图中的项目地址会变成http://git.papamk.com:85/papamk/groupbill这样,看着就不舒服。启用https则在使用过程中则会出现其他的问题。这里不一一论述,直接说明正确的配置方法。 具体步骤: 1.首先确保你的服务器已经有运行nginx,并且该nginx监听宿主机的80和443端口。(如果你原来使用的apache,请通过nginx反向代理到apache,这样apache原来的服务仍然可用)。 2.编辑/etc/gitlab/gitlab.rb: # 编辑对外的域名(gitlab.papamk.com请添加A记录指向本服务器的公网IP): external_url 'http://gitlab.papamk.com/' # 禁用`gitlab`内置的`nginx`: nginx['enable'] = false # 修改成与nginx运行时的用户一致 web_server['external_users'] = ['www'] 修改监听方式和监听地址(如果nginx与gitlab都在宿主机上,不用改也行;如果nginx在docker中,则需要修改) gitlab_workhorse['listen_network'] = "tcp" # 下面的172.18.147.173为本机IP,根据实际情况修改,不能为localhost或者127.0.0.1,否则docker访问不到 gitlab_workhorse['listen_addr'] = "172.18.147.173:8181" 最后执行下面命令让配置生效: $gitlab-ctl reconfigure 3.配置nginx 增加gitlab.conf的配置(所有需要注意的地方都加了中文注释): upstream gitlab-workhorse { server 172.18.147.173:8181; #根据实际情况修改 } ## Normal HTTP host server { listen 80; listen [::]:80 default_server; server_name gitlab.papamk.com; ## 修改成自己的域名; server_tokens off; ## Don't show the nginx version number, a security best practice root /opt/gitlab/embedded/service/gitlab-rails/public; ## See app/controllers/application_controller.rb for headers set ## Individual nginx logs for this GitLab vhost access_log /home/wwwlogs/gitlab_access.log; # 根据实际情况修改 error_log /home/wwwlogs/gitlab_error.log; # 根据实际情况修改 location / { client_max_body_size 0; gzip off; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://gitlab-workhorse; } } 该配置根据官网提供的配置修改而来:https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/nginx/gitlab-omnibus-nginx.conf。 重启nginx: $sudo service nginx restart 4.登陆浏览器,这时可以看到安装成功了,如下图所示: 首次登陆会要求重置管理员密码,管理员的默认用户名为root。 https的支持 1.使用Let's encrypt申请免费的SSL证书,该项目提供了一个叫certbot/certbot-auto的工具获取证书,执行下面命令获取工具: $wget https://dl.eff.org/certbot-auto $chmod +x certbot-auto 执行下面命令生成生成gitlab.papamk.com的证书,其中--agree-tos表示同意协议,--email 95496875@qq.com为自己的email。 $./certbot-auto --agree-tos --email 95496875@qq.com certonly --webroot -w /opt/gitlab/embedded/service/gitlab-rails/public/ -d gitlab.papamk.com 执行成功后,可通过以下命令查看下证书位置,nginx需要引用这些文件。(一般位于/etc/letsencrypt/live/gitlab.papamk.com/目录) $./certbot-auto certificates 2.修改/etc/gitlab/gitlab.rb,对外的URL改为https: external_url 'https://gitlab.papamk.com' 执行重新配置命令以便让新配置生效: $gitlab-ctl reconfigure 3.修改前面的nginx的gitlab.conf的配置,全部替换成下面的内容(所有需要注意的地方都加了中文注释): upstream gitlab-workhorse { server 172.18.147.173:8181; #根据实际情况修改 } ## Redirects all HTTP traffic to the HTTPS host server { ## Either remove "default_server" from the listen line below, ## or delete the /etc/nginx/sites-enabled/default file. This will cause gitlab ## to be served if you visit any address that your server responds to, eg. ## the ip address of the server (http://x.x.x.x/) listen 0.0.0.0:80; listen [::]:80 ipv6only=on default_server; server_name gitlab.papamk.com; ## 改成自己的域名 server_tokens off; ## Don't show the nginx version number, a security best practice return 301 https://$http_host$request_uri; access_log /home/wwwlogs/gitlab_access.log; # 根据实际情况修改 error_log /home/wwwlogs/gitlab_error.log; # 根据实际情况修改 } ## HTTPS host server { listen 0.0.0.0:443 ssl; listen [::]:443 ipv6only=on ssl default_server; server_name gitlab.papamk.com; ## 改成自己的域名 server_tokens off; ## Don't show the nginx version number, a security best practice root /opt/gitlab/embedded/service/gitlab-rails/public; ## Strong SSL Security ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/ ssl on; ssl_certificate /etc/letsencrypt/live/gitlab.papamk.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gitlab.papamk.com/privkey.pem; # GitLab needs backwards compatible ciphers to retain compatibility with Java IDEs ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ## sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096 # ssl_dhparam /etc/ssl/certs/dhparam.pem; access_log /home/wwwlogs/gitlab_access.log; # 根据实际情况修改 error_log /home/wwwlogs/gitlab_error.log; # 根据实际情况修改 location / { client_max_body_size 0; gzip off; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://gitlab-workhorse; } } 重启nginx: $sudo service nginx restart 4.定期更新ssl证书 Let's encrypt提供的证书,有效期为90天,到期后执行如下命令即可继续使用: $./certbot-auto renew 将该命令加入到crontab,每小时刷新一次,就不用担心过期了。先将该命令移到系统目录下: $sudo mv certbot-auto /usr/bin/certbot-auto 然后执行crontab -e,添加一行: 0 */1 * * * /usr/bin/certbot-auto renew 发送邮件的支持 官网已经给出详细的配置说明和各大邮件服务提供商的示例,不再对配置做说明:https://docs.gitlab.com/omnibus/settings/smtp.html。 我自己使用163邮箱做测试,而官网示例没有,这里给出参考配置: gitlab_rails['gitlab_email_from'] = 'xxxx@163.com' # 替换成实际的email gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.163.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "xxxx@163.com" # 替换成实际的email gitlab_rails['smtp_password'] = "xxx" # 替换成实际的密码 #gitlab_rails['smtp_domain'] = "163.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true 一般来说,服务提供商的SMTP邮箱都会限制每日发送次数(250封左右),所以推荐有兴趣的同学用Postfix自建邮箱服务器,或者使用mailgun这种专业的邮件服务提供商。 如果是阿里云上的服务器,作为客户端使用第三方的SMTP配置,会发现被禁止连接SMTP的25端口,需要使用465或者587。 安全相关 root的密码建议设置得复杂些; 管理员登陆后,推荐开启注册邮箱验证, 防恶意注册,见:https://docs.gitlab.com/ce/security/user_email_confirmation.html。 参考 用Docker安装Gitlab gitlab升级 为gitlab启用let’s encrypt颁布的证书

优秀的个人博客,低调大师

centos6.5 nginx+php+mysql之php5.4安装

一.安装前的准备 cd /usr/local/src/ yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel 二.安装PHP 下载PHP wgethttp://cn2.php.net/distributions/php-5.4.38.tar.gz tar -zxvf php-5.4.38.tar.gz cd php-5.4.38 ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir 此时出现报错:configure: error: mcrypt.h not found. Please reinstall libmcrypt. 解决方法: rpm -ivh "http://www.lishiming.net/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm" yum install -y libmcrypt-devel 再次 ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir make all install cd /usr/local/php cp etc/php-fpm.conf.default etc/php-fpm.conf vi /usr/local/php/etc/php-fpm.conf 修改后保存: user = www-php group = www-php 添加用户 groupadd www-php useradd -g www-php www-php 编译nginx 在server段添加: # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 创建php测试文件 vi /usr/local/nginx/html/index.php 添加以下内容: <?php echo phpinfo(); ?> ~ 启动nginx: /usr/local/nginx/nginx 启动php /usr/local/php/sbin/php-fpm 测试: links 192.168.66.176/index.php 其中192.168.66.176为IP地址 测试结果显示PHP版本等信息为OK 本文转自 yawei555 51CTO博客,原文链接:http://blog.51cto.com/huwei555/1618742,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册