Nginx Lua Redis防止CC攻击实现原理:同一个外网IP、同一个网址(ngx.var.request_uri)、同一个客户端(http_user_agent)在某一段时间(CCseconds)内访问某个网址(ngx.var.request_uri)超过指定次数(CCcount),则禁止这个外网IP+同一个客户端(md5(IP+ngx.var.http_user_agent)访问这个网址(ngx.var.request_uri)一段时间(blackseconds)。 该脚本使用lua编写(依赖nginx+lua),将信息写到redis(依赖redis.lua)。 Nginx lua模块安装 重新编译nginx,安装lua模块,或者直接使用《OneinStack》安装OpenResty自带改模块 pushd /root/oneinstack/src wget -c http://nginx.org/download/nginx-1.12.1.tar.gz wget -c http://mirrors.linuxeye.com/oneinstack/src/openssl-1.0.2l.tar.gz wget -c http://mirrors.linuxeye.com/oneinstack/src/pcre-8.41.tar.gz wget -c http://luajit.org/download/LuaJIT-2.0.5.tar.gz git clone https://github.com/simpl/ngx_devel_kit.git git clone https://github.com/openresty/lua-nginx-module.git tar xzf nginx-1.12.1.tar.gz tar xzf openssl-1.0.2l.tar.gz tar xzf pcre-8.41.tar.gz tar xzf LuaJIT-2.0.5.tar.gz pushd LuaJIT-2.0.5 make && make install popd pushd nginx-1.12.1 ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2l --with-pcre=../pcre-8.41 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=../lua-nginx-module --add-module=../ngx_devel_kit make mv /usr/local/nginx/sbin/nginx{,_bk} cp objs/nginx /usr/local/nginx/sbin nginx -t #检查语法 加载redis.lua mkdir /usr/local/nginx/conf/lua cd /usr/local/nginx/conf/lua wget https://github.com/openresty/lua-resty-redis/raw/master/lib/resty/redis.lua 在/usr/local/nginx/conf/nginx.conf http { }中添加: #the Nginx bundle: lua_package_path “/usr/local/nginx/conf/lua/redis.lua;;”; 防止CC规则waf.lua 将下面内容保存在/usr/local/nginx/conf/lua/waf.lua local get_headers = ngx.req.get_headers local ua = ngx.var.http_user_agent local uri = ngx.var.request_uri local url = ngx.var.host .. uri local redis = require 'redis' local red = redis.new() local CCcount = 20 local CCseconds =...
Let’s Encrypt是一个由电子前哨基金会、Mozilla基金会、Akamai、密歇根大学、思科联合发起的一个项目。它旨在为站长提供一个免费的、完全自动化的证书申请过程,从而让整个互联网都能享受到HTTPS加密。Let’s Encrypt的证书申请过程非常简单、安全、快速、自动化并且免费。Let’s Encrypt是一个中间CA,它的CA证书由IdenTrust签发。IdenTrust是一个Root CA,受到所有主流浏览器的信任。从2015年10月后,Let’s Encrypt的中间CA证书被chrome、Firefox、Microsoft Edge、Safari和Opera所信任。 最近官方做了调整,简化了获取证书的难度,并将项目名改为了certbot,以前叫letsencrypt。certbot可以自动化的申请,安装和更新证书。 OneinStack已经内置Let’s Encrypt,vhost.sh绑定域名时自动申请、绑定、自动续期(默认90天)一步到位,教程如下: 安装 wget http://mirrors.linuxeye.com/oneinstack.tar.gz tar xzf oneinstack.tar.gz cd oneinstack ./addons.sh 如下图: 出现绿色Let’s Encrypt client install successfully!即表示certbot安装成功,如下图: 使用证书 vhost.sh绑定域名ssl选择y,Let’s Encrypt选择y ./vhost.sh 注意事项 最新版oneinstack关闭Congratulations,默认跳过即成功 绑定定域名后会自动在crontab添加相应自动续期脚本 同一个ip在3小时内最多申请10个域名的证书 同一个根域名在七天内,只能注册5个证书。同一个子域名注册或更新都是要计算次数的 Mon Jun 20 23:06:17 CST 2016
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
2024-12-22
这个脚本是使用shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa(Linux、Nginx/Tengine/OpenResty、MySQL/MariaDB/Percona、PHP),适用于CentOS 6~7(包括redhat)、Debian 6~8、Ubuntu 12~16的32位和64位。 脚本特性 持续不断更新 源码编译安装,大多数源码是最新stable版,并从官方网址下载 提供多个数据库版本(MySQL-5.7, MySQL-5.6, MySQL-5.5, MariaDB-10.1, MariaDB-10.0, MariaDB-5.5, Percona-5.6, Percona-5.5, AliSQL-5.6, PostgreSQL, MongoDB) 提供多个PHP版本(PHP-7.1, PHP-7.0,PHP-5.6, PHP-5.5,PHP-5.4,PHP-5.3) 提供Nginx、Tengine、OpenResty 提供多个Apache版本(Apache-2.4,Apache-2.2) 根据自己需求安装PHP缓存加速器,提供ZendOPcache、xcache、apcu、eAccelerator。及php加解密工具ionCube、ZendGuardLoader、swoole、xdebug、Composer 根据自己需求安装Pureftpd、phpMyAdmin 根据自己需求安装memcached、redis jemalloc优化MySQL、Nginx 提供添加、删除虚拟主机脚本 提供Nginx/Tengine/OpenResty/Apache、MySQL/MariaDB/Percona、PHP、Redis、phpMyAdmin升级脚本 提供本地、远程(服务器之间rsync)、阿里云OSS、腾讯云COS和upyun备份 提供CentOS 6、7下HHVM安装 安装步骤 yum -y install wget screen curl python#for CentOS/Redhat #apt-get -y install wget screen curl python# for Debian/Ubuntu wget http://aliyun-oss.linuxeye.com/lnmp-full.tar.gz #阿里云经典网络内网下载 wget http://mirrors.linuxeye.com/lnmp-full.tar.gz # 包含源码,国内外均可下载 wget http://mirrors.linuxeye.com/lnmp.tar.gz # 不包含源码,建议仅国外主机下载 tar xzf lnmp-full.tar.gz #tar xzf lnmp.tar.gz cd lnmp # 如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件 screen -S lnmp # 如果网路出现中断,可以执行命令`screen -R lnmp`重新连接安装窗口 ./install.sh # 请勿sh install.sh或者bash install.sh这样执行 如何添加虚拟主机? ./vhost.sh 如何删除虚拟主机? ./vhost.sh del 如何管理ftp账号? ./pureftpd_vhost.sh 数据备份 cd ~/lnmp # 必须进入lnmp目录下执行 ./backup_setup.sh # 备份参数设置 ./backup.sh # 立即执行备份 crontab -e # 可添加到计划任务,如每天凌晨1点自动备份 0 1 * * * cd ~/lnmp;./backup.sh > /dev/null 2>&1 & 备份参数设置如下图: 如何管理服务? Nginx/Tengine/OpenResty: service nginx {start|stop|status|restart|reload|configtest} MySQL/MariaDB/Percona: service mysqld {start|stop|restart|reload|status} PHP: service php-fpm {start|stop|restart|reload|status} Apache: service httpd {start|restart|stop} HHVM: service supervisord {start|stop|status|restart|reload} 注:hhvm进程交给supervisord管理,了解更多请访问《Supervisor管理hhvm进程》 Pure-Ftpd: service pureftpd {start|stop|restart|status} Redis: service redis-server {start|stop|status|restart|reload} Memcached: service memcached {start|stop|status|restart|reload} 如何更新版本? ./upgrade.sh 跨大版本升级(如php):http://oneinstack.com/question/oneinstack-downgrade-if-php-version/ 如何卸载? ./uninstall.sh 如何重装? ./uninstall.sh # 请先备份数据好数据后再卸载,丢失数据概不负责 ./install.sh # 再次安装 更新日志 2018-03-18 新增阿里云COS、腾讯云COS备份;启用acme.sh支持通配符,禁用certbot;常规软件版本更新 2017-12-17 新增PostgreSQL、MongoDB、PHP7.2;Apache升级功能; 新增xdebug扩展;新增oneinstack更新;优化vhost.sh 2017-08-13 iptables可选; 新增pathinfo 2017-07-01 支持Debian9;PHP编译使用openssl1.0.2版本 2017-06-02 增加MariaDB 10.2 2017-05-15 增加腾讯云COS v4备份功能 2017-02-14 Nginx添加更多模块参数;新增Nginx magento2伪静态;Apache2.4 ssl默认开启http2 2016-11-02 增加AliSQL;默认启用jemalloc,去除tcmalloc 2016-10-15 数据库支持二进制或源码编译;PHP7支持ioncube、apcu;优化脚本格式 2016-08-21 增加./addons.sh...
高并发网站架构的核心原则其实就一句话”把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。 WordPress最好的优化方式就是尽量不安装插件,之前有分享过《wordpress启动Redis缓存加速》,Wordpress是典型的PHP-MySQL应用,去做数据库缓存,倒不如让轻量级的Nginx直接去缓存WordPress内容。 Nginx内置FastCgi缓存,但是不支持自动清除缓存。当你在Wordpress里面新建/修改一篇文章,或者访客提交评论的时候,自动清空相关的缓存是必要的!Nginx需要安装ngx_cache_purg+量身定做的WordPress缓存清理插件:Nginx Helper。 1. 安装Nginx ngx_cache_purge模块 1)查看ngx_cache_purge是否安装 nginx -V 2>&1 | grep -o ngx_cache_purge 显示ngx_cache_purge表示已经安装 2)安装ngx_cache_purge模块 《OneinStack》和《lnmp一键安装包》下安装ngx_cache_purge模块 nbsp; cd /root/oneinstack/src wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz wget http://nginx.org/download/nginx-1.9.10.tar.gz tar xzf ngx_cache_purge-2.3.tar.gz tar xzf nginx-1.9.10.tar.gz cd nginx-1.9.10 nginx -V #查看nginx编译参数,最后加上--add-module=../ngx_cache_purge-2.3 ./configure --prefix=/usr/local/nginx --user=www --group=www \ --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module \ --with-ipv6 --with-http_gzip_static_module --with-http_realip_module \ --with-http_flv_module --with-ld-opt=-ljemalloc \ --add-module=../ngx_cache_purge-2.3 make #编译 mv /usr/local/nginx/sbin/nginx{,_`date +%F`} #备份nginx cp objs/nginx /usr/local/nginx/sbin nginx -V 2>&1 | grep -o ngx_cache_purge # 显示ngx_cache_purge表示已经安装成功 2. Nginx配置 建议将fastcgi_cache_path设置tmpfs内存中,操作系统不同tmpfs路径也不同,如下: CentOS:/dev/shm Ubuntu和Debian:/run/shm 修改nginx虚拟主机配置文件/usr/local/nginx/conf/vhost/blog.linuxeye.com.conf: fastcgi_cache_path /dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m; fastcgi_cache_key “$scheme$request_method$host$request_uri”; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; server { listen 443 ssl http2; ssl_certificate /usr/local/nginx/conf/vhost/linuxeye_blog.crt; ssl_certificate_key /usr/local/nginx/conf/vhost/linuxeye_blog.key; ssl_ciphers “CHACHA20:GCM:HIGH:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS”; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; #ssl_stapling...
前言 这几天碰到几个负载过高的情况、今天整理下排除方法。供大家参考、如果有需要服务器、切不懂运维的可以找我们。QQ7271895 linux服务器出现高负载的情况下,一般都有一些具体的症状,比如cpu、内存等被耗尽,磁盘IO或者网络等出现问题,下面通过具体命令去分析解决高负载的问题 工具 centos6.5_x64 htop 、collectl、 iotop、 vmstat 方法 通过yum安装htop命令 命令行输入htop 这个是实时更新占用cpu、内存等资源的进程,可以通过分析排名最前的进程来定位问题 yum -y install htop 通过yum来安装collectl工具 yum -y install collectl 直接运行collectl命令,collectl命令可以实时监测网卡的进出口流量,系统的高负载一般与网卡流量有很大关系 通过iotop命令实时监测磁盘IO使用情况,系统高负载一般也有可能是大量的小文件的读写引起的 通过vmstat命令实时查看虚拟内存swpd、cache等使用情况,一般系统高负载的情况下 cache可能会被耗尽 总结 如果不懂运维的朋友,尽量去售后比较全面的公司购买服务器、这样能给你解决你不会的问题、不要图价格、牌子。经济实惠才是王道。 牌子适合大企业
linux越来越普及、各种面板的出现。造成了很多新手朋友都在使用linux 但是 出了问题不知道如何处理 今天把负载这块整理出来。仅供大家参考。 使用uptime命令查看机器负载。 uptime //输出 up 1 day, 23:14, 2 users, load averages: 1.69 2.21 2.09 平均负载表示1、5、15分钟进程队列中的平均进程数量。一般单核大于3的话负载就算高了。查看linux多少cpu与核的命令如下: #查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l #查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的个数 cat /proc/cpuinfo| grep "processor"| wc -l 然后使用top命令查看每个进程占用CPU,内存情况。top显示时候使用“M”进程会按内存使用排序,按“P”会按CPU使用排序。 如果没有进程占用大量CPU,内存资源的话,可能就是某个进程阻塞了。使用ps -ef, 看到哪个进程会卡住,然后去/proc/中找到这个进程对应的文件,看是否能正常打开。 找到以后杀死这个进程或者重启机器。 3. can’t lock /etc/passwd;try again later 首先查看是在/etc下否存在lock文件, $cd /etc $ls *.lock $ rm -f *.lock //删除文件锁 没有的话,使用df -i看是否 inode满了,如果是 查找每个文件下的文件数目 for i in ./*; do echo $i; find $i | wc -l |sort -n ; done 找到后删除没用的小文件。 建议去/var/spool/postfix/maildrop去看看。 科普一下df -i与df -h,一个是总共能创建多少文件,一个是总共能创建多大的文件。 在这里提醒下新手朋友。购买服务器,尽量去参考一些售后比较好的公司、而不是去追寻便宜。或者品牌的产品。
据云头条报道,VPS 服务商 Kuriko 因 rm -rf /*,宿主机上所有数据丢失了。 Kuriko 4 月 24 日在其官网刊登香港 NAT 区故障声明,内容如下:由于机房技术的rm -rf /*,导致目前宿主机上所有数据丢失,我们正在尝试恢复原有数据以及获取备份资料,但恢复可能较小。目前该区域所有主机处于 OFFLINE 中。 rm 是 linux 系统下删除文件的命令。-r 代表删除这个下面的一切,f 表示不需要用户确认,直接执行,通常这个命令都是指定文件夹用的, 比如 rm -rf /home/test/ 就是删除/home/test/这个文件夹下面的所有东西,但是如果后面的文件夹路径没有加,rm -rf / 在服务器上也就意味着…. 网友评论: @-H-E-N-G-:无言以对,这是真的大牛才干的出来的 @五柳:立马将盘卸载,挂载到其它系统,禁止一切读写行为,用extundelete命令,运气好能找回来80-90%数据,一般人我不告送他 @Jennie:机房技术现可安在? @野火:技术人员原本应该是想输入执行:rm -rf ./* 的吧 @OsXe:欲盖弥彰,这么可笑的理由不信。这个命令装完系统就禁用的
今天给大家打来一篇关于linux下rootkit后门检测工具教程 说明: 操作系统:CentOS 一、安装编译工具包 yum install gcc gcc-c++ make yum install glibc-static 二、安装chkrootkit cd /usr/local/src/ wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz #下载软件包 tar zxvf chkrootkit.tar.gz #解压 cd chkrootkit-0.52 make sense #安装 mv /usr/local/src/chkrootkit-0.52 /usr/local/chkrootkit #拷贝到安装目录 三、使用chkrootkit /usr/local/chkrootkit/chkrootkit cd /usr/local/chkrootkit ./chkrootkit | grep INFECTED 出现INFECTED就说明系统可能有问题了 ./chkrootkit | grep INFECTED 备注:CentOS 7.x 可能会出现下面的提示,原因是系统默认缺少netstat命令 chkrootkit: can’t find `netstat’. yum whatprovides *netstat #查看命令所在的安装包 yum install net-snmp-utils net-tools #安装netstat命令即可
教程目的: 使用Linux系统自带的命令logrotate对Nginx日志进行切割。 Nginx安装目录:/usr/local/nginx/ Nginx日志目录:/usr/local/nginx/logs/、/usr/local/nginx/logs/nginx_logs/ 1、添加nginx日志切割脚本 cd /etc/logrotate.d #进入目录 vi /etc/logrotate.d/nginx #编辑脚本 /usr/local/nginx/logs/*.log /usr/local/nginx/logs/nginx_logs/*.log{ missingok dateext notifempty daily rotate 7 sharedscripts postrotate if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` fi endscript } :wq! #保存退出 chmod +x /etc/logrotate.d/nginx #添加执行权限 2、执行脚本 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx 3、添加定时任务 crontab -e #添加以下代码 0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨定时执行脚本 至此,Linux下nginx日志每天定时切割教程完成。 备注:logrotate相关参数说明 missingok:忽略错误,如“日志文件无法找到”的错误提示。 dateext:切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号 notifempty:如果日志文件为空,不执行切割。 daily:按天切割日志。可用值月:monthly 周:weekly 年:yearly rotate 7:保留最近7天的日志记录 sharedscripts:只为整个日志组运行一次的脚本 postrotate和endscript:里面指定的命令将被执行。 compress::在轮循任务完成后,已轮循的归档将使用gzip进行压缩。 delaycompress::总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。 create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
前言 Nginx是一款免费的开源,高性能,可靠,可扩展且可完全扩展的Web服务器,负载均衡器和反向代理软件。 它有一个简单和易于理解的配置语言。 它还支持多种静态模块(自第一个版本开始就存在于Nginx中)和动态模块 (在1.9.11版本中引入 )。 Nginx中的一个重要模块是ngx_http_stub_status_module模块,它通过“ 状态页面 ”提供对基本Nginx状态信息的访问。 它显示活动客户端连接总数,接受和处理的总数,请求总数以及读取,写入和等待连接数等信息。 在大多数Linux发行版上, Nginx版本随ngx_http_stub_status_module启用。 您可以使用以下命令检查模块是否已启用。 # nginx -V 2>&1 | grep -o with-http_stub_status_module 检查Nginx状态模块 如果在终端中看到–with-http_stub_status_module作为输出,则表示状态模块已启用。 如果上述命令没有返回任何输出,则需要使用-with-http_stub_status_module作为配置参数从源代码编译NGINX ,如图所示。 # wget http://nginx.org/download/nginx-1.13.12.tar.gz # tar xfz nginx-1.13.12.tar.gz # cd nginx-1.13.12/ # ./configure --with-http_stub_status_module # make # make install 在验证模块之后,您还需要在NGINX配置文件/etc/nginx/nginx.conf中启用stub_status模块,以便为该模块设置一个本地可访问的URL(例如http://www.example.com/nginx_status )状态页面。 location /nginx_status { stub_status; allow 127.0.0.1; #only allow requests from localhost deny all; #deny all other hosts } 启用Nginx状态页面 确保将127.0.0.1替换为服务器的IP地址,并确保只有您可访问此页面。 更改配置后,请确保检查nginx配置是否有任何错误,并使用以下命令重新启动nginx服务以实现最近的更改。 # nginx -t # nginx -s reload 检查Nginx配置 重新加载nginx服务器后,现在您可以使用curl程序访问下面的URL中的Nginx状态页面来查看您的指标。 # curl http://127.0.0.1/nginx_status OR # curl http://www.example.com/nginx_status 检查Nginx状态页面 重要说明 : ngx_http_stub_status_module模块已被Nginx 1.13.0版本中的ngx_http_api_module模块取代。
今天给大家带来一篇ubuntu安装java8和7的教程。 前言 安装 jdk 切换 jdk 版本 前言 本机装的是 jdk7 ,无奈最近看的源码不少都已经拥抱 jdk8 了。便于调试,安装了新的 java 版本。 安装 jdk 这里简单说明下 Ubuntu 下 jdk8 的安装过程,jdk7 的类似,不再赘述。 下载安装包: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ,选择 jdk-8u162-linux-x64.tar.gz。 新建目录并解压到该目录 sudo mkdir /usr/lib/java sudo tar zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/java sudo mv /usr/lib/java/jdk1.8.0_162/ /usr/lib/java/jdk8 打开配置文件, sudo gedit /etc/profile, 在文件中加入以下内容 export JAVA_HOME=/usr/lib/java/jdk8 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 将新安装的 jdk 加入到选项里 sudo update-alternatives --install /usr/bin/java java /usr/lib/java/jdk8/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/java/jdk8/bin/javac 300 通过 sudo update-alternatives –config java 指令,选择相应的jdk即可! $ sudo update-alternatives --config java There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode * 1 /usr/lib/java/jdk7/bin/java 300 manual mode 2 /usr/lib/java/jdk8/bin/java 300 manual mode 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode Press enter...
lamp架构wordpress和discuzx教程 背景 虚拟主机 fastcgi 部署流程 部署架构 环境 架构图 编译软件 安装开发环境和必要的包 编译httpd 编译php 安装mariadb 配置文件修改 修改httpd主机 修改fast-cgi主机 配置mysql 宿主机的hosts文件修改 安装wordpress和Discuzx 背景 虚拟主机 如今服务器的配置提升明显,单一主机上部署单一网站会对主机造成大量的性能损失,因此web服务虚拟主机的技术应运而生。所谓虚拟主机指的是在一台机器上运行多个网站(如company1.example.com和company2.example.com)的做法 。虚拟主机可以是“ 基于IP的 ”,这意味着每个网站都有不同的IP地址,或者“ 基于名称 ”,这意味着每个IP地址上都有多个名称,或者“基于端口”,这意味着在同一ip的不同端口上提供不同的网站,通过这些方法使得他们在同一台物理服务器上运行的事实对最终用户来说并不明显。 Apache是第一批支持基于IP的虚拟主机的服务器之一。Apache的版本1.1及更高版本支持基于IP和基于名称的虚拟主机(虚拟主机)。虚拟主机的后一种变型有时也被称为基于主机的或非IP虚拟主机。 fastcgi FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。 部署流程 部署架构 环境 3台主机用于分别部署httpd,php和mysql,实现分离 软件版本 架构图 编译软件 这里我们需要编译的软件为httpd和php,mysql可以考虑使用二进制包或者直接官方yum安装 安装开发环境和必要的包 1.安装centos开发工具包 yum groupinstall "development tools" -y 2.安装编译httpd和php需要的包 #部分包需要epel源 #yum install epel-release -y yum install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel libmcrypt-devel -y 编译httpd 这里在192.168.99.130机器上编译httpd2.4 1.创建apache用户 useradd -r apache -s /sbin/nologin 2.解压httpd,apr,apr-util源码包,这里需要的包均可在httpd官网下到 tar xvf httpd-2.4.33.tar.bz2 tar xvf apr-1.6.2.tar.gz tar xvf apr-util-1.6.1.tar.gz 3.编译httpd #移动解压的apr和apr-util到指定的httpd源码目录可以省去分别编译3个程序 mv apr-1.6.2 httpd-2.4.33/srclib/apr mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util #编译参数,具体含义可以参考./configure的帮助文档或者官方文档 ./configure \ --prefix=/app/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-included-apr \...
Nginx配置 main模块 events 模块 http模块 sendfile keepalive 超时 map proxy openfile client buffer Gzip fastcgi cache server模块 正则 Rewrite 文件缓存 FPM HTTPS upstream模块 默认轮询(加权) 最小连接数 IP Hash FPM配置 global全局配置 进程池配置 Nginx配置 nginx的配置主要分为6个区域,main(全局设置),events(工作模式),http(http服务),upstream(负载均衡),server(主机设置),location(url规则)。 main events { } http { upstream domain { } server { location { } } } main模块 user www www; worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; error_log /home/git/logs/error_log error; pid /usr/local/var/run/nginx/nginx.pid; worker_rlimit_nofile 65535; user 用来指定worker进程运行的用户及用户组 worker_processes 来指定开启的worker进程数,如果是多核CPU,建议指定和CPU的数量一样的进程数即可,这里的CPU数量指物理核数。 worker_cpu_affinity 将不同的woker进程绑定到不同的cpu,这里指绑定到CPU[0-3],降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。 error_log 用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。 pid 指定master进程ID存储位置。 worker_rlimit_nofile 指定最多打开的文件描述符(fd),查看用户级fd限制(ulimit -n),查看系统级fd限制(cat /proc/sys/fs/file-max),系统fd与系统内存有关。 events 模块 events用来指定nginx的事件模型及连接数上限。 events { use epoll; worker_connections 65535; multi_accept on; } use 用来指定具体的事件模型,包括select、poll、epoll、kqueue、/dev/poll、eventport、rtsig,其中select、poll是标准的事件模型,epoll(用于linux平台)和kqueue(用于BSD平台)是高效的事件模型。 worker_connections 定义每个nginx进程接收的最大连接数,最大客户端连接数Max_clients = worker_processes * worker_connections / 2,而作为反向代理时,Max_clients = worker_processes * worker_connections / 4。 multi_accept 让NGINX在接收到一个新连接通知后调用accept()来接受尽可能多的连接。 http模块 负责http服务器的设置,包括虚拟主机和反向代理。 http{ server_tokens off; include mime.types; default_type application/octet-stream;...
今天宝塔突然apache启动不了.网站打不开。提示: 报错: Apache配置规则错误: [url=]httpd: Syntax error on line 501 of /www/server/apache/conf/httpd.conf: Syntax error on line 1 of /www/server/panel/vhost/apache/btwaf.conf: Cannot load modules/mod_lua.so into server: /www/server/apache/modules/mod_lua.so: cannot open shared object file: No such file or directory[/url] 系统: CentOS Linux 7.4.1708 (Core) 解决方法 卸载用编译方式重装即可, 如果有疑问可以加入我们学派吧QQ群 81885552
前言 centos 越来越普及了,通过一些面板很多小白都可以使用centos、但是安全方面却不行、今天学派吧整理下 centos安全相关的资料 发布出来、供小白学习、 设置 1 修改网卡为eth0 2 更新系统 3 给/etc/rc.local添加执行权限 4 添加用户hequan 5 禁用selinux 6 关闭防火墙安装iptables 7 修改主机名 8 查看并管理服务 9 设置字符集 10 yum 11 配置sshd 12 加大打开文件数的限制(open files) 13 优化内核 14 时间设置 15 man 中文版 16 vim基本设置 1 修改网卡为eth0 cd /etc/sysconfig/network-scripts/ vim ifcfg-eno16777729 TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.1.201 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no NAME=eth0 UUID=efd17b9a-a5ab-4c94-be62-d2c32eb48a7e DEVICE=eth0 ONBOOT=yes DNS1=202.106.0.20 mv ifcfg-eno16777729 ifcfg-eth0 vi /etc/sysconfig/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 rhgb quiet" #添加 net.ifnames=0 biosdevname=0 GRUB_DISABLE_RECOVERY="true" grub2-mkconfig -o /boot/grub2/grub.cfg #生成启动菜单 Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-e8675ae79abd41309dac42388f8d9116 Found initrd image: /boot/initramfs-0-rescue-e8675ae79abd41309dac42388f8d9116.img reboot ip addr 或者 yum install net-tools #默认centos7不支持ifconfig 需要看装net-tools包 ifconfig eth0 #再次查看网卡信息 2...