VirtualBox虚拟机安装Centos系统,并安装宝塔环境
今天在新公司,需要安装Linux系统进行开发项目。以前是外包出去的项目,不知道为啥必须用Linux系统,也不知道有多少坑。 一步一来呗。首先,我们先安装虚拟机,我用的是VirtualBox,其他虚拟机同样的道理。然后安装Linux环境,我用的是centos系统,有兴趣的同学用其他系统也一样的。最后简简单单用宝塔部署了一个环境。简单的来。1、安装VirtualBox虚拟机VirtualBox官网地址: https://www.virtualbox.org/然后傻瓜式安装,直接下一步到头。安装完成之后如图:2、开始安装Centos系统首先下载centos系统,随便哪里下载都行,我这里用的是: https://www.centos.org/download/选择的是阿里云好,这里然后就开始安装系统然后一步一步进行操作,安装完成后,网络选择桥接好了,安装完成。接下来,我们用xshell链接虚拟机进行操作。这个地方要先查虚拟机IPifconfig如果提示没有这个命令需要安装工具1、新安装centos需要启动网卡,运行nmcli dev status查看设备状态2、查看网卡为ens33 ,执行命令nmcli con up ens333、开启启动网络 切换到网络配置目录 cd /etc/sysconfig/network-scripts/ 编辑 vi ifcfg-ens33首先找到ONBOOT=no修改为ONBOOT=yes然后保存退出 执行systemctl start network 或service network restart #重启网络服务 4、运行ifconfig,查看ip(最小安装会出现没有ifconfig命令需要安装,执行yum install net-tools -y)nmcli dev status nmcli con up ens33 cd /etc/sysconfig/network-scripts/ vi ifcfg-ens33 ONBOOT=yes 执行systemctl start network 或service network restart #重启网络服务 yum install net-tools -y5、查找到ip,后台运行虚拟机,使用xshell或phpstorm里带的ssh链接centosOK,xshell链接成功了接下来就安装宝塔 https://www.bt.cn/new/download.html 到这里所有的东西都准备好了,接下来就是部署站点了。
查看详情点赞1评论收藏浏览582023-03-23 16:35:06Linux centos系统设置静态IP、动态IP
我们装了虚拟机很多时候都需要设置静态IP,不然我们的程序会经常因为IP改变造成各种各种的麻烦。一般默认的是动态IP#进入目录: cd /etc/sysconfig/network-scripts #查看网卡 ll #打开网卡,我这边是ifcfg-enp0s3 vi ifcfg-enp0s3 #这是默认的动态IP,网卡设置 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s3 UUID=fdeb4637-a424-4d21-82dd-467bd70e3f35 DEVICE=enp0s3 ONBOOT=yes修改为静态IPTYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static IPADDR=192.168.11.66 NETMASK=255.255.255.0 GATEWAY=192.168.11.1 DNS1=114.114.114.114 DNS2=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s3 UUID=fdeb4637-a424-4d21-82dd-467bd70e3f35 DEVICE=enp0s3 ONBOOT=yes改完保存后,重启网络systemctl restart network主要是加这一段:BOOTPROTO=static IPADDR=192.168.11.66 NETMASK=255.255.255.0 GATEWAY=192.168.11.1 DNS1=114.114.114.114 DNS2=61.139.2.691、BOOTPROTO设置静态static,默认是dhcp2、NETMASK:子网掩码3、GATEWAY:默认网关4、DNS,默认是8.8.8.8下面怎么查找这些数据我虚拟机用的是网络桥接模式:
查看详情点赞1评论收藏浏览512023-05-23 10:13:04Linux Centos7 安装composer
centos下composer两种安装办法,一般用第一种就可以了。第一种#下载composer.phar文件 curl -sS https://getcomposer.org/installer | php #将composer.phar移动到环境变量中并且更名为composer mv composer.phar /usr/local/bin/composer #使用国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com #查看版本 composer --version第二种wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a x /usr/local/bin/composer
查看详情点赞1评论收藏浏览492023-06-28 09:17:50linux 常用命令
nmcli dev status 查看设备状态包括我网卡nmcli con up ens33 查看网卡 cd /etc/sysconfig/network-scripts/ 切换网络配置(这里是网络配置文件)systemctl start network 或service network restart #重启网络服务没有ifconfig命令需要安装,执行yum install net-tools -yTYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s10 UUID=066c9671-2047-483a-8bf8-6660299e3eae DEVICE=enp0s10 ONBOOT=yes IPADDR=192.168.56.102 GATWAY=172.16.0.1 DNS1=61.139.2.69yum 安装阿里云镜像软件,下载好软件,并配置好环境vi i esc :wq 打开文件,编辑,退出编辑,保存退出yum install vim 可以安装vim yum remove vim 不要可以yum卸载 grep: 查找 第一个命令可以享用到第二个命令中ps:可以查询出我们系统运行的进程,可以与grep 配合使用ps -aux | grep .... kill -9 pid 杀死一个进程 -9是强制杀死 kill pidchown 更改目录的用户及用户组 chmod 修改文件的权限,推荐直接一点777 chown -R root:root xxx/ chmod -R 755 xxx有一个需求。每天4点定时备份数据库:1、备份数据库的方方式:# mysqldump -u root -p test > /www/test.sqlmysqldump -uroot -p123456 test > /www/test.sql可以把用户或密码写一起,只是会发出一个警告-uroot -p123456shell脚本:echo 是输出,同事也可以帮助liunx运行需要的命令vi mysql_dump.shchmod +x ./mysql_dump.sh./mysql_dump.sh #运行这个文件,这个文件里写了上面的命令就会执行然后定时:会用到定时器。linux定时器只能精确到分钟 crontab -e #编辑定时器* * * * * 第一个星:每分钟0-59,2个:每小时0-23,第三个是小时及天* * * * * 每隔一分支用cat /etc/crontab #查看这个下面的定时器crontab -e1 * * * * /www/mysql_dump.sh查找文件:有时候忘记文件在那里可以查询:find / -name mysql_dump.sh 或者 find / -name mysql_dump*打包文件:打包成什么文件格式 被打包文件夹tar -czvf myetc.tar.gz etc解压:tar -zxvf 文件 卸载:yum remove libziplinux安装pip:下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py复制:cp 111.txt ./111bak.txt上传下载:安装 yum install -y lrzsz sz:下载保存 rz:上传文件删除文件:rm -f 强制删除:rm -rf查看端口:netstat -anp | grep 端口 netstat -nultp //不加端口,列出被占服务端口1:查看防火状态systemctl status firewalld service iptables status2:暂时关闭防火墙systemctl stop firewalld service iptables stop或者:#查看防火墙状态 systemctl status firewalld # 开启 sudo service firewalld start # 重启 sudo service firewalld restart # 关闭 sudo service firewalld stop查看监听端口:netstat -anp | grep 9501 然后杀死: kill pid kill -9 pid //强制杀死PHP 停止重启pkill php-fpm //停止 /www/server/php/74/sbin/php-fpm //启动PHP service php-fpm restart //重启MySQL 停止重启service mysqld status //查看MySQL启动状态 service mysqld stop 或者 /etc/init.d/mysqld stop //停止MySQL service mysqld start 或者 /etc/init.d/mysqld start //启动MySQL service mysqld restart 或者 /etc/init.d/mysqld restart //重启MySQLNginx 停止重启ps -ef | grep nginx //查看是否启动 /www/server/nginx/sbin/nginx -s reload //重启nginx /www/server/nginx/sbin/nginx 或者 /etc/init.d/nginx start //启动nginx /etc/init.d/nginx stop //停止nginx /etc/init.d/nginx restart //重启nginx显示行数::set nugrep '查找内容' 文件名//nginx url转发 反向代理,TP,laravel等加速location /{proxy_pass http://192.168.56.102:9000;}wdcp:nginx/www/wdlinux/nginx/sbin/nginx 这个是启动/www/wdlinux/nginx/sbin/nginx -s reload 这个是重启/www/wdlinux/nginx/sbin/nginx -t 这个是检测配置文件,如果写的不对的话会报错的,对正在运行的nginx不会影响which 命令在Linux中可以查询我们的终端命令保存在哪里which python //查询 /usr/bin/python ls -lh /usr/bin/python //查看Python这个文件大小,只是一个软连接 ls -lh /usr/bin/python2.7 //查看具体文件大小查看服务器开放了哪些端口:firewall-cmd --list-all
查看详情点赞评论收藏浏览522023-02-27 19:11:46linux 安装node环境
linux 安装前端环境:安装node1、去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通过 uname -a 命令查看到我的Linux系统位数是64位(备注:x86_64表示64位系统, i686 i386表示32位系统)2、上传进去服务器1)上传服务器可以是自己任意路径,目前我的放置路径为 cd /app/software/2)解压上传(解压后的文件我这边将名字改为了nodejs,这个地方自己随意,只要在建立软连接的时候写正确就可以) ① tar -xvf node-v6.10.0-linux-x64.tar.xz ② mv node-v6.10.0-linux-x64 nodejs ③确认一下nodejs下bin目录是否有node 和npm文件,如果有执行软连接,如果没有重新下载执行上边步骤;cd /etcvi profile 最后加两行export NODEJS_HOME=/www/server/nodejs/node-v14.15.1-linux-x64export PATH=$PATH:$NODEJS_HOME/bin立即生效source /etc/profile[root@localhost ~]# node -v v12.18.1上面可以就不用下面3)建立软连接,变为全局 ①ln -s /app/software/nodejs/bin/npm /usr/local/bin/ ②ln -s /app/software/nodejs/bin/node /usr/local/bin/4)最后一步检验nodejs是否已变为全局 在Linux命令行node -v 命令会显示nodejs版本,如图所示为大功告成安装yarnnpm install -g yarn安装VUE CLI3 脚手架npm install -g @vue/clivue --versionvue ui 或者 npm run serve//设置淘宝源npm config set registry https://registry.npm.taobao.org//设置公司的源(dgg)npm config set registry https://xxx.xxx.cn///查看源,可以看到设置过的所有的源npm config get registry资源线前端启动(服务不会停):/www/wwwroot/ziyuanxian.shupian.com.cn/webnohup npm run serve > ./nodezyx.log 2>&1 &切换用户:su rootsu www
查看详情点赞评论收藏浏览622023-02-27 19:31:15Nginx config配置文件基本配置示例
nginx的基本配置,需要注意的有以下几点:1、1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址; 2.$remote_user :用来记录客户端用户名称; 3.$time_local : 用来记录访问时间与时区;4.$request : 用来记录请求的url与http协议;5.$status : 用来记录请求状态;成功是200, 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;7.$http_referer :用来记录从那个页面链接访问过来的; 8.$http_user_agent :记录客户端浏览器的相关信息;2、惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。3、每个指令必须有分号结束。示例:upstream xxx.com { server 192.168.136.130:3000 weight=5 fail_timeout=30s; } server { listen 80; server_name xxx.com; rewrite ^(.*)$ https://$host$1 permanent; location / { proxy_pass http://xxx.com; proxy_buffering off; proxy_http_version 1.1; proxy_request_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 180; proxy_read_timeout 180; proxy_send_timeout 180; } location /api { proxy_pass http://192.168.136.130:31900/; proxy_buffering off; proxy_http_version 1.1; proxy_request_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 180; proxy_read_timeout 180; proxy_send_timeout 180; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } server { listen 443 ssl; server_name xxx.com; client_max_body_size 200m; ssl_certificate /www/wdlinux/nginx/cert/xxx.com.pem; ssl_certificate_key /www/wdlinux/nginx/cert/xxx.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://xxx.com; proxy_buffering off; proxy_http_version 1.1; proxy_request_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 180; proxy_read_timeout 180; proxy_send_timeout 180; # add_header 'Access-Control-Allow-Origin' '*'; # add_header 'Access-Control-Allow-Methods' '*'; # add_header 'Access-Control-Allow-Credentials' 'true'; # add_header 'Access-Control-Allow-Headers' 'X-Requested-With'; } location /api { proxy_pass http://192.168.136.130:31900/; proxy_buffering off; proxy_http_version 1.1; proxy_request_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 180; proxy_read_timeout 180; proxy_send_timeout 180; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } user nginx nginx ;Nginx用户及组:用户 组。window下不指定worker_processes 8;工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; 错误日志:存放路径。pid logs/nginx.pid; pid(进程标识符):存放路径。 worker_rlimit_nofile 204800;指定进程可以打开的最大描述符:数目。这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。events{use epoll;使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。补充说明:与apache相类,nginx针对不同的操作系统,有不同的事件模型A)标准事件模型Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或pollB)高效事件模型Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。Epoll:使用于Linux内核2.6版本及以后的系统。/dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。worker_connections 204800;没个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connectionskeepalive_timeout 60;keepalive超时时间。client_header_buffer_size 4k;客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。[root@web001 ~]# getconf PAGESIZE4096但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。 open_file_cache max=65535 inactive=60s;这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。open_file_cache_valid 80s;这个是指多长时间检查一次缓存的有效信息。open_file_cache_min_uses 1;open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。}##设定http服务器,利用它的反向代理功能提供负载均衡支持http{include mime.types;设定mime类型,类型由mime.type文件定义 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 log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';日志格式设置。$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址; $remote_user:用来记录客户端用户名称; $time_local: 用来记录访问时间与时区; $request: 用来记录请求的url与http协议; $status: 用来记录请求状态;成功是200, $body_bytes_sent :记录发送给客户端文件主体内容大小; $http_referer:用来记录从那个页面链接访问过来的; $http_user_agent:记录客户浏览器的相关信息;通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。access_log logs/host.access.log main; access_log logs/host.access.404.log log404;用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;server_names_hash_bucket_size 128;#保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.client_header_buffer_size 4k;客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。large_client_header_buffers 8 128k;客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取。open_file_cache max=102400 inactive=20s;这个指令指定缓存是否启用。例: open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; open_file_cache_errors语法:open_file_cache_errors on | off 默认值:open_file_cache_errors off 使用字段:http, server, location 这个指令指定是否在搜索一个文件是记录cache错误.open_file_cache_min_uses语法:open_file_cache_min_uses number 默认值:open_file_cache_min_uses 1 使用字段:http, server, location 这个指令指定了在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态.open_file_cache_valid语法:open_file_cache_valid time 默认值:open_file_cache_valid 60 使用字段:http, server, location 这个指令指定了何时需要检查open_file_cache中缓存项目的有效信息. client_max_body_size 300m;设定通过nginx上传文件的大小sendfile on;sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。tcp_nopush on;此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用proxy_connect_timeout 90; 后端服务器连接的超时时间_发起握手等候响应超时时间proxy_read_timeout 180;连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)proxy_send_timeout 180;后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据proxy_buffer_size 256k;设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小proxy_buffers 4 256k;设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8kproxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长proxy_temp_path /data0/proxy_temp_dir; proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;#设置内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。keepalive_timeout 120;keepalive超时时间。tcp_nodelay on;client_body_buffer_size 512k;如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误proxy_intercept_errors on;表示使nginx阻止HTTP应答代码为400或者更高的应答。upstream bakend {server 127.0.0.1:8027;server 127.0.0.1:8028;server 127.0.0.1:8029;hash $request_uri;}nginx的upstream目前支持4种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:upstream bakend {server 192.168.0.14 weight=10;server 192.168.0.15 weight=10;}2、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:upstream bakend {ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;}3、fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。upstream backend {server server1;server server2;fair;}4、url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法upstream backend {server squid1:3128;server squid2:3128;hash $request_uri;hash_method crc32;}tips:upstream bakend{#定义负载均衡设备的Ip及设备状态}{ip_hash;server 127.0.0.1:9090 down;server 127.0.0.1:8080 weight=2;server 127.0.0.1:6060;server 127.0.0.1:7070 backup;}在需要使用负载均衡的server中增加proxy_pass http://bakend/;每个设备的状态设置为:1.down表示单前的server暂时不参与负载2.weight为weight越大,负载的权重就越大。3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误4.fail_timeout:max_fails次失败后,暂停的时间。5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。nginx支持同时设置多组的负载均衡,用来给不用的server来使用。client_body_in_file_only设置为On 可以讲client post过来的数据记录到文件中用来做debugclient_body_temp_path设置记录文件的目录 可以设置最多3层目录location对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡##配置虚拟机server { listen 80; #配置监听端口 server_name image.***.com; #配置访问域名 location ~* \.(mp3|exe)$ { #对以“mp3或exe”结尾的地址进行负载均衡 proxy_pass http://img_relay$request_uri; #设置被代理服务器的端口或套接字,以及URL proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上 }##其他举例server { listen 80; server_name *.***.com *.***.cn; location ~* \.(mp3|exe)$ { proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif redirect; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #error_page 404 http://i1.***img.com/help/noimg.gif; error_page 404 502 = @fetch; } location @fetch { access_log /data/logs/baijiaqi.log log404; rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif redirect; } } server { listen 80; server_name *.***img.com; location ~* \.(mp3|exe)$ { proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #error_page 404 http://i1.***img.com/help/noimg.gif; error_page 404 = @fetch; } #access_log off; location @fetch { access_log /data/logs/baijiaqi.log log404; rewrite ^(.*)$ http://i1.***img.com/help/noimg.gif redirect; } } server { listen 8080; server_name ngx-ha.***img.com; location / { stub_status on; access_log off; } } server { listen 80; server_name imgsrc1.***.net; root html; } server { listen 80; server_name ***.com w.***.com; # access_log /usr/local/nginx/logs/access_log main; location / { rewrite ^(.*)$ http://www.***.com/ ; } } server { listen 80; server_name *******.com w.*******.com; # access_log /usr/local/nginx/logs/access_log main; location / { rewrite ^(.*)$ http://www.*******.com/; } } server { listen 80; server_name ******.com; # access_log /usr/local/nginx/logs/access_log main; location / { rewrite ^(.*)$ http://www.******.com/; } } location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; }#设定查看Nginx状态的地址location ~ /\.ht { deny all; } #禁止访问.htxxx文件 }注释:变量Ngx_http_core_module模块支持内置变量,他们的名字和apache的内置变量是一致的。首先是说明客户请求title中的行,例如$http_user_agent,$http_cookie等等。此外还有其它的一些变量$args此变量与请求行中的参数相等 $content_length等于请求行的“Content_Length”的值。 $content_type等同与请求头部的”Content_Type”的值 $document_root等同于当前请求的root指令指定的值 $document_uri与$uri一样 $host与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样 $limit_rate允许限制的连接速率 $request_method等同于request的method,通常是“GET”或“POST” $remote_addr客户端ip $remote_port客户端port $remote_user等同于用户名,由ngx_http_auth_basic_module认证 $request_filename当前请求的文件的路径名,由root或alias和URI request组合而成 $request_body_file $request_uri含有参数的完整的初始URI $query_string与$args一样 $sheeme http模式(http,https)尽在要求是评估例如 Rewrite ^(.+)$ $sheme://example.com$; Redirect; $server_protocol等同于request的协议,使用“HTTP/或“HTTP/ $server_addr request到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。 $server_name请求到达的服务器名 $server_port请求到达的服务器的端口号 $uri等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index
查看详情点赞评论收藏浏览602023-03-02 11:25:39Linux系统修改用户密码
知道一个用户名密码时,修改用户密码,各个版本下都是通用的;重置密码的时候,版本不同,可能操作的地方不一样了;但凡知道一个用户的密码,那就好办。(普通用户登录的情况下,也可以修改root用户的密码。);在不知道账户和密码的情况下比较复杂了,以后有时间再写;linux各系统的命令有部分不同,根据不同系统来。1、知道root用户密码时root用户登录时,运行passwd 命令,可以设置或修改任何用户的密码语法格式:# passwd 用户名2、修改root用户密码在root用户登录的情况下,执行以下指令,进入密码修改界面# passwdpasswd命令后不加用户名,表示修改当前用户的密码输入新密码即可,无需重启Linux系统。3、修改普通用户密码(普通用户账号密码登录时,只能修改自己的密码)# more /etc/passwd 查看当前所有用户,自己创建的用户,在最后# passwd es 更改用户 es 的密码输入新的密码4、知道一个普通用户的账号密码在普通用户登录的情况下,修改root用户密码$ sudo passwd root会要求输入普通用户的密码输入后,会显示“enter new Unix password”这就是修改root用户密码,输入并确认密码后,即成功修改root用户密码修改普通用户自己的密码$ passwd // 进入修改密码界面,输入新密码即可
查看详情点赞评论收藏浏览302023-03-26 10:26:13CentOS、Ubuntu、Debian 的区别
第一篇Linux 有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社群维护的免费发行版本。商业版本以 Redhat 为代表,开源社群版本则以 debian 为代表。这些版本各有不同的特点,在不同的应用领域发挥著不同的作用,不能一概而论。而绝大多数 VPS 上只提供开源社群维护的发行版本。下面就这些不同的 Linux 发行版进行简单的分析。UbuntuUbuntu 近些年的粉丝越来越多,Ubuntu 有著漂亮的使用者介面,完善的包管理系统,强大的站群软件源支援,丰富的技术社群,Ubuntu 还对大多数硬体有著良好的相容性,包括最新的图形显示卡等等。这一切让 Ubuntu 越来越向大众化方向发展。但别忘了:你所需要的只是一个简约、稳定、易用的站群服务器系统而已!Ubuntu 的图形介面固然漂亮,但这也决定了它最佳的应用领域是桌面操作系统而非站群服务器操作系统。如何你希望在学习 Linux 的过程中有个沉浸式的环境,那么 Ubuntu 的确不错:仅仅安装在自己的电脑中而非站群服务器中。从这一点来讲,Ubuntu 并没有在 VPS 安装的操作系统选择之列,相信你也不会为了那数百 M 的驱动与宝贵的内存买单。CentOS你会发现非常多的商业公司部署在生产环境上的站群服务器都是使用的 CentOS 系统,CentOS 是从 RHEL 原始码编译的社群重新发布版。CentOS 简约,命令列下的人性化做得比较好,稳定,有著强大的英文文件与开发社群的支援。与 Redhat 有著相同的渊源。虽然不单独提供商业支援,但往往可以从 Redhat 中找到一丝线索。相对 debian 来说,CentOS 略显体积大一点。是一个非常成熟的 Linux 发行版。Debian一般来说 Debian 作为适合于站群服务器的操作系统,它比 Ubuntu 要稳定得多。可以说稳定得无与伦比了。debian 整个系统,只要应用层面不出现逻辑缺陷,基本上固若金汤,是个常年不需要重启的系统(当然,这是夸张了点,但并没有夸大其稳定性)。debian 整个系统基础核心非常小,不仅稳定,而且占用硬碟空间小,占用内存小。128M 的 VPS 即可以流畅执行 Debian,而 CentOS 则会略显吃力。但是由于 Debian 的发展路线,使它的帮助文件相对于 CentOS 略少,技术资料也少一些。由于其优秀的表现与稳定性,Debian 非常受 VPS 使用者的欢迎。此外还有 Arch Linxu、Gentoo、Slackware 等一系列的 Linux 和 FreeBSD、Unix 等系统,由于其涉及领域更加专业,很少在 VPS 中出现,因此不作介绍。对于初学者,我们建议采用 CentOS 或 Debian,这两种系统都能在配置较低的 VPS 上流畅执行。但是如果 VPS 配置太低(OPENVZ 内存在 128M 以下,或者 XEN 架构内存在 192M 以下),建议采用 Debian;否则建议采用 CentOS,以获取更多的线上帮助与支援,让自己入门更轻松。第二篇CentOS、Ubuntu、Debian 三个 linux 都是非常优秀的系统,开源的系统,也分付费的商业版和 free 免费版本,下面简单比较这三种系统。CentOS 系统很多网站 WP 站长一般都选择 centOS 系统,CentOS 是从 redhat 原始码编译重新发布版。CentOS 去除很多与站群服务器功能无关的应用,系统简单但非常稳定,命令列操作可以方便管理系统和应用,并且有帮助文件和社群的支援。Ubuntu 系统Ubuntu 有亮丽的使用者介面,完善的包管理系统,强大的站群软件源支援,丰富的技术社群,并且 Ubuntu 对计算机硬体的支援好于 centos 和 debian,相容性强,Ubuntu 应用非常多,但对于站群服务器系统来说,个人感觉并不需要太多的各种应用程式,需要的是稳定,操作方便,维护简单的系统。如果你需要在站群服务器端使用图形介面,ubuntu 是一个不错的选择,你需要注意的是,图形介面占用的内存非常大,而内存越大的 vps 价格也越高。Debian 系统Debian 也非常适合做站群服务器操作系统,与 Ubuntu 比较,它没有太多的花哨,稳定压倒一切,对于站群服务器系统来说是一条不变的真理,debian 这个 linux 系统,底层非常稳定,核心和内存的占用都非常小,在小内存的 VPS 就可以流畅执行 Debian,比如 128m 的内存,但 debian 的帮助文件和技术资料比较少。对于小内存,首选 debian,对于非常熟悉 linux 系统的 vps 高手,首选 debian。在系统的选择上,属于新手,首选 CentOS,并不是 centos 比 Debian 和 ubuntu 好,而是 centos 是初学者安装 vps 的首选,它既稳定,占用资源又少,在互联网上能方便搜寻到安装配置的文件,自身的帮助文件也非常强大;如果你是 linux 高手,高手的境界一般都选择 debian,因为高手能在低配的 vps 上稳定执行系统;而 ubuntu,系统虽然免费,但它适合有钱人玩,它占用的资源是比前面两种系统更高,而 vps 基本就是卖内存,内存越高,价格越贵。我们执行著一些全球最大的网际互联网的营运,因此我们对可靠性和稳定性非常重视,是我们的第一要务。为此,我们只使用 Linux 来支撑顾客的系统。但是,我们应该使用哪一个 Linux 的发行版?答案是,CentOS。 为什么呢?作为一个庞大的系统运营商,在很长的一段时间里,我们需要在多种大型系统中找到一个可靠的,可预测的系统,我们需要从世界上最强大的站群软件供应商和开源专案中获得强有力的支援。对于那些最常用的系统,我们需要文件,工具和全球性资源。正因如此,RedHat / CentOS 系列发行版正是我们的选择。他们能够满足以上所有需求,而且问题相对较少、长期稳定,这使得我们能够为成千上万的执行了不同配置、服务和应用的系统提供世界级的维护。RedHat Enterprise Linux (RHEL) 是黄金标准的企业发行版。它每五年左右更新一次,在系统的稳定性,前瞻性和安全性上有著极大的优势。每当新的主版本发行后,比如 5.x 亦或最近的 6.x,所有版本和程式码都将保留不变,只有安全问题或是主要的 bug,例如后门,埠之类的问题,会通过释出新的子版本来修复。CentOS 是 RHEL 发行版对应的开源版本,通常在 RedHat 的释出后就会很快发行。我们使用 CentOS 的原因在于 RHEL 发行版的标准支援服务费用非常高,大约每台站群服务器 800 美元左右,对于我们很多拥有数十台甚至上百台站群服务器的使用者来说,这是必须要控制的成本。RHEL/CentOS 系统有两个潜在的问题:首先,一旦确定了主版本,, 除了安全问题和严重故障会被修复以外,其他内容将不会做任何改变。这虽然对稳定性有好处,但是对许多服务不利。比如 MySQL 和 PHP 服务,它们在这五年的 CentOS/RHEL 主版本释出周期中会进行繁重的开发和大量的修改。例如,MySQL5.0 是当前 RHEL/CentOS 主版本所预设使用的版本,但是当前 MySQL 已经更新到 5.1 和 5.5 版本了。幸运的是,这个问题被 Yum 站群软件包管理器轻易地解决了。如此以来,那些主要的站群软件,例如当前 RHEL/CentOS 中实际的元件,包括核心和所有工具等仍然来自发行版, 但是那些附加的站群软件,例如 Nginx,Apache,PHP,Java 和 MySQL 等等来自更新的站群软件源例如 Fedora; 或者直接从开发商获取更新的版本例如 MySQL。 在我们这里,我们有自己专用的安装镜像站群来全自动的处理所有这些事情。其次,CentOS 的发行会滞后于 RedHat 的发行,包括关键的补丁和修复。这在 RHEL 6.x 的发行周期中尤为显著。但是根据我们的经验,这没什么好担心的,对我们来说永远不会成为问题。很多人询问我们为什么不用基于 Debian 的系统,例如 Debian 或者 Ubuntu 站群服务器。如果在别无选择的情况下,我们的确会支援这个建议,但是根据我们的经验来看,这些系统并不如 RHEL/CentOS 来的稳定和可靠。我们认为,这在某种程度上是由于他们过快的发展和各个版本、组合之间较少的测试且不成熟所导致的。然而尽管他们非常流行,但是主要的服务商和专案都仍然首选 RHEL/CentOS 系统,因为这样他们就可以为企业顾客提供服务,(对 Oracle 和 MySQL 更是如此)。除此之外,基于 Debian 的系统有许多核心和稳定性问题,尤其是在我们的云端计算服务中。对我们而言,唯一使用 Debian/Ubuntu 的原因是:“它们能够为一个系统提供必要的特殊服务时,尤其是当一些驱动程式或者一些 IO 子系统需要一种新的核心的时候”。例如,ext4 档案系统或在最近的核心中日志的改变等;现在,所有这一切都包含在了 RHEL/CentOS6.x 中。当然,多数 Linux 开发者都使用的是 Ubuntu 的桌面版,而且可以理解的是,他们更倾向在开发生产时使用相同的系统,并且还能使用很多有趣的工具。但总体上来说,我们依然认为 RHEL/CentOS 是一个更优越的部署平台,并且已经有十多个客户成功地转向使用 CentOS 作为生产环境并且没有任何问题,但这仍然是艰巨的任务。总的来说,你将更乐于看到一个良好管理的 CentOS 系统。我们有成千上万台站群服务器使用 CentOS 平台,而每年平均只有一台站群服务器崩溃。我们也很难想象它竟如此罕见,所以,挑一个优秀、迅捷、可靠的平台吧!
查看详情点赞评论收藏浏览432023-05-22 15:13:00Centos 安装git
一般的平台通常都能通过自身的一个包管理工具去安装 git 的各个版本(包括当前官方最新版本),但是红帽系列通过 yum 安装却无法安装最新版本,而且都是很旧的版本,这种版本对许多新的命令以及特性都不支持,例如 switch 命令是 2.23 版本才发布的,在此之前的版本都没有,所以官方推荐像 CentOS 通过下载 git 源码包的方式去安装我们去阿里云下载git,找到版本,直接wget https://mirrors.edge.kernel.org/pub/software/scm/git/ 注意:直接 copy 下载地址,使用 wget 进行下载的时候,需要加上选项 --no-check-certificatewget --no-check-certificate https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz 接下来我们按照步骤进行安装就可以#安装前首先得安装依赖环境 yum install -y perl-devel #解压 tar -zxf git-2.9.5.tar.gz cd git-2.9.5 # 检查环境,配置安装路径 #编译安装 ./configure --prefix=/usr/local/git make && make install #添加到系统环境变量 vim ~/.bashrc #添加这一行 export PATH="/usr/local/git/bin:$PATH" #重载配置 source ~/.bashrc #查看版本 git version 就安装好了。
查看详情点赞评论收藏浏览402023-06-27 16:36:25