如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624 商祺云-阿里代理、景安代理、西部代理 CentOS 7上安装Jenkins Jenkins 安装 步骤1:更新CentOS 7 Linux系统管理员的最佳做法之一是使系统保持最新。安装最新的稳定包,然后重新启动。 123 sudo yum install epel–releasesudo yum updatesudo reboot 步骤2:安装Java 在安装Jenkins之前,需要在系统上设置一个Java虚拟机。在这里,让我们使用YUM安装最新的OpenJDK Runtime Environment 1.8.0: 12 yum install java–1.8.0–openjdk.x86_64 安装完成后,可以通过运行以下命令进行确认: 12 java–version 此命令将告诉您有关您安装的Java运行时环境: 1234 openjdk version“1.8.0_91”OpenJDK Runtime Environment(build1.8.0_91–b14)OpenJDK64–Bit Server VM(build25.91–b14,mixed mode) 为了帮助基于Java的应用程序正确定位Java虚拟机,需要设置两个环境变量:“JAVA_HOME”和“JRE_HOME”。 12345 cp/etc/profile/etc/profile_backupecho‘export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk’|sudo tee–a/etc/profileecho‘export JRE_HOME=/usr/lib/jvm/jre’|sudo tee–a/etc/profilesource/etc/profile 最后,测试 123 echo$JAVA_HOMEecho$JRE_HOME 步骤3:Jenkins 使用官方YUM回购安装最新的稳定版本的Jenkins 12345 cd~wget–O/etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.reporpm—import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.keyyum install jenkins 启动Jenkins服务并将其设置为在启动时运行: 123 systemctl start jenkins.servicesystemctl enable jenkins.service 为了允许访问者访问Jenkins,您需要允许端口8080上的入站流量: 123 <span style=“color: #008000;”>firewall–cmd—zone=public—permanent—add–port=8080/tcp</span><span style=“color: #008000;”>firewall–cmd—reload</span> 现在,通过从您的网络浏览器访问以下地址来测试Jenkins: http://<your-Vultr-server-IP>:8080 访问成功如下图 查看密码如下 完事了 就这么简单 以上就是CentOS 7上安装Jenkins实例教程的详细内容,更多请关注学派吧其它相关文章! 如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624 商祺云-阿里代理、景安代理、西部代理
mysql最流行的关系型数据库之一,目前隶属于oracle公司,因体积小、速度快、总体拥有成本低,开放源代码这一特点,所以是我们日常开发的首选。下面我们来看看如何在Linux下安装配置MySQL 系统:Ubuntu 16.04LTS 1\官网下载mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2\建立工作组: $su #groupadd mysql #useradd -r -g mysql mysql 3\创建目录 #mkdir /usr/local/mysql #mkdir /usr/local/mysql/data 4\解压mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz,并拷贝至/usr/local/mysql #tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #cp -r /home/jieyamulu/mysql-5.7.18-linux-glibc2.5-x86_64/* /usr/local/mysql 5\修改mysql用户对mysql以下及其子文件夹以下文件的权限,修改后可使用ll查看权限 root@Ice-***:/usr/local# chown -R mysql:mysql mysql root@Ice-***:/usr/local# ll 总用量 44 drwxr-xr-x 11 root root 4096 5月 19 07:39 ./ drwxr-xr-x 11 root root 4096 2月 16 04:30 ../ drwxr-xr-x 2 root root 4096 2月 16 04:19 bin/ drwxr-xr-x 2 root root 4096 2月 16 04:19 etc/ drwxr-xr-x 2 root root 4096 2月 16 04:19 games/ drwxr-xr-x 2 root root 4096 2月 16 04:19 include/ drwxr-xr-x 4 root root 4096 2月 16 04:23 lib/ lrwxrwxrwx 1 root root 9 3月 29 14:11 man -> share/man/ drwxr-xr-x 10 mysql mysql 4096 5月 19 07:48 mysql/ drwxr-xr-x...
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
2024-12-21
本篇文章给大家带来的内容是关于Redis是什么?有哪些应用场景?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一丶Redis介绍 1 Redis是一个开源的 key—value型 单线程 数据库,支持string、list、set、zset和hash类型数据。 默认端口:6379 默认数据库数量:16 二、优点: 1.nosql数据库没有关联关系,数据结构简单,拓展表比较容易 2.nosql读取速度快,对较大数据处理快 三、适用场景: 1.数据高并发的读写 2.海量数据的读写 对扩展性要求高的数据 四、不适场景: 1.需要事务支持(非关系型数据库) 2.基于sql结构化查询储存,关系复杂 五、应用场景 下面这些作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览: 1.取最新N个数据的操作 比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取 使用LPUSH latest.comments<ID>命令,向list集合中插入数据 插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID 然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码) FUNCTION get_latest_comments(start,num_items): id_list = redis.lrange("latest.comments",start,start+num_items-1) IF id_list.length < num_items id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...") END RETURN id_list END 如果你还有不同的筛选维度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的。 2.排行榜应用,取TOP N操作 这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。 3.需要精准设定过期时间的应用 比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis中的过期数据,你完全可以把Redis里这个过期时间当成是对数据库中数据的索引,用Redis来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。 4.计数器应用 Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命令来构建计数器系统。 5.Uniq操作,获取某段时间所有数据排重值 这个使用Redis的set数据结构最合适了,只需要不断地将数据往set中扔就行了,set意为集合,所以会自动排重。 6.实时系统,反垃圾系统 通过上面说到的set功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。没有做不到,只有想不到。 7.Pub/Sub构建实时消息系统 Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子。 8.构建队列系统 使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。 以上就是Redis是什么?有哪些应用场景?的详细内容,更多请关注学派吧其它相关文章!
Linux在4.9版本的内核新增了一款TCP拥塞控制技术:BBR,Linode最新内核也更新到4.9,但是没有把BBR编译进去,下面是教程是替换Linode CentOS7内核,并开启Google TCP-BBR优化算法方法。 注意:Linode、阿里云测试OK,Ucloud测试加载4.9变为只读系统。 1. 安装elrepo提供的kernel4.9 增加elrepo源 cat > /etc/yum.repos.d/elrepo.repo << EOF [elrepo-kernel] name=ELRepo.org Community Enterprise Linux Kernel Repository - el7 baseurl=http://elrepo.org/linux/kernel/el7/\$basearch/ http://mirrors.coreix.net/elrepo/kernel/el7/\$basearch/ http://jur-linux.org/download/elrepo/kernel/el7/\$basearch/ http://repos.lax-noc.com/elrepo/kernel/el7/\$basearch/ http://mirror.ventraip.net.au/elrepo/kernel/el7/\$basearch/ enabled=1 gpgcheck=0 EOF 可能存在yum更新内核时候找不到升级包,请检查/etc/yum.conf是否过滤了kernel 找到改文件将exclude=kernel* centos-release*注销,再尝试安装 安装elrepo替换4.9内核及grub2 yum -y install kernel-ml grub2 查看4.9内核是否安装成功 [root@linode1495332 ~]# ls -l /boot/vmlinuz* -rwxr-xr-x 1 root root 6037696 Dec 22 10:16 /boot/vmlinuz-0-rescue-72863e389b584a4dab36fae7f3bffda2 -rwxr-xr-x 1 root root 6037696 Dec 12 05:37 /boot/vmlinuz-4.9.0-1.el7.elrepo.x86_64 2. 替换CentOS7内核 Linode内核切换方法: [root@linode1495332 etc]# mkdir /boot/grub [root@linode1495332 etc]# grub2-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file … Found linux image: /boot/vmlinuz-4.9.0-1.el7.elrepo.x86_64 Found initrd image: /boot/initramfs-4.9.0-1.el7.elrepo.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-72863e389b584a4dab36fae7f3bffda2 Found initrd image: /boot/initramfs-0-rescue-72863e389b584a4dab36fae7f3bffda2.img done 点击Linode后台面板Dashboard,点击Edit按钮: 在Kernel下拉菜单,选择GRUB 2启动: 非Linode切换内核方法: [root@oneinstack ~]# awk -F\’ ‘$1==”menuentry ” {print $2}’ /etc/grub2.cfg CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core) CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-7d26c16f128042a684ea474c9e2c240f) 7 (Core) grub2-set-default 0,切换到新内核 [root@oneinstack ~]# grub2-set-default 0 重启服务器: reboot 查看内核版本 [root@linode1495332 ~]# uname -a Linux linode1495332.members.linode.com 4.9.0-1.el7.elrepo.x86_64 #1 SMP Sun Dec 11 15:43:54 EST 2016 x86_64 x86_64 x86_64 GNU/Linux 3. 开启TCP-BBR cat >>/etc/sysctl.conf << EOF net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr EOF 内核参数生效: sysctl -p 查看bbr是否生效: [root@linode1495332 ~]# sysctl net.ipv4.tcp_available_congestion_control net.ipv4.tcp_available_congestion_control = bbr cubic reno [root@linode1495332 ~]# lsmod | grep bbr tcp_bbr 16384 70 Thu Dec 22 11:17:53 CST 2016
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
高并发网站架构的核心原则其实就一句话”把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问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...
最近很多主题用户提到安装完WordPress后中文标签出现404的情况,出现这种情况一般修改固定链接设置是没有效果的,多数是windows主机带来的麻烦。网上多数人说要修改核心文件class-wp.php来实现,这种方法不适合没有代码意识的同学,而且在WordPress升级的时候很有可能被遗忘,下面themebetter就给大家介绍几种方法供选择。 方法一:更改每个标签的别名为英文或数字 此法适合大部分小站点,没有很多标签,一般发现问题的时候也都是新站,所以一个个更改起来比较容易,同样对后续的SEO也会有所帮助,毕竟链接中出现一串中文有点很low的感觉。不要感觉很麻烦的样子,因为更改过程很快,可能最多几分钟的样子。 操作方法:后台 – 文章 – 标签,快速编辑某标签,更改其别名为英文或数字即可。 方法二:使用插件 此法适合懒人或者标签量数百以上的站点,原理就是通过批量修改标签的别名或者拦截处理,这种方法一般可以做到一劳永逸,但很有可能意味着以后站点就离不开它了。 推荐插件:Auto Tag Slug 或 IIS Chinese Tag Permalink 操作方法:后台 – 插件 – 搜索插件名 – 安装并启用插件,后面的设置就很简单了。 方法三:更改服务器rewrite规则 此法适合有服务器管理权限且知道如何修改rewrite的站长,很多站长看到这里就pass了,但想折腾的你为何不多走一步呢? 之前的规则RewriteRule /tag/(.*)$ /index\.php\?tag=$1 更改后的规则RewriteRule /tag/(.*)/$ /index\.php\?tag=$1 以上几种方法都能有效解决WordPress访问中文标签出现404的问题,选择适合自己和站点的才是最合适的,不过themebetter建议使用第一种方法。
随着现在各种小视频的风靡,不少使用WordPress程序的站点都在自己的网站中插入视频,考虑到视频的加载体验,themebetter推荐大家使用第三方视频网站的分享代码。顾及到手机端也正常观看视频,分享视频的时候请大家使用通用代码 iframe 形式的代码。 WordPress文章内容中插入外链视频 WordPress后台添加或编辑文章的时候,将编辑器切换到文本模式(编辑器右上角),然后粘贴入你复制过来的 iframe 代码,如下图。 代码中的 width=600 和 height=400 分别指的是视频的宽度600和高度400,一般不需要额外调整。themebetter的主题都对视频做了自适应处理,电脑端看起来很大,到了手机端是等比例尺寸缩小。 下面以国内各大视频网站为例themebetter教大家怎么获取到 iframe 代码。 获取视频的 iframe 代码 注:点击以下图片中的黑色框即可看到分享视频的代码,红色框表示的是 iframe 代码,复制即可。 优酷视频的 iframe 代码获取 腾讯视频的 iframe 代码获取 爱奇艺视频的 iframe 代码获取
很多新手在初遇WordPress时比较迷茫,其实只要明白其运行原理就能很好的驾驭。 如果你看此文时还没有安装WordPress程序,请先看这里:WordPress程序的快速安装。 一个很好的比喻:WordPress程序是身体、WordPress主题是衣服。只有传上合适的衣服,你的WordPress站点才算是真正开始。如果你还没有合适主题,可以看看themebetter为大家准备的WordPress主题。 WordPress主题安装方法一: 进入网站后台(一般是:域名/wp-admin),点击左侧菜单中的外观,然后点击主题,右侧会有“添加”按钮,点击“上传主题”并选择你要安装的主题压缩包,然后点击启用即可,操作如下: WordPress主题安装方法二: 将解压后的主题文件夹上传到网站空间/wp-content/themes/文件夹下,进入后台 – 主题,找到你的主题并点击启用即可,操作步骤如下: 以上就是wordpress主题的安装方法了。 PS:一般情况下,主题安装好后都要进行初始化设置,如果你的后台左侧菜单-外观中有“xxx主题设置”的字眼,点开设置一下,然后保存设置,至此才算真的安装好主题了。
WordPress是一个注重美学、易用性和网络标准的个人信息发布平台。WordPress虽为免费的开源软件,但其价值无法用金钱来衡量。 使用WordPress可以搭建功能强大的网络信息发布平台,但更多的是应用于个性化的博客。针对博客的应用,WordPress能让您省却对后台技术的担心,集中精力做好网站的内容。 WordPress最新版下载 1、下载以上WordPress最新版压缩包到本地,解压缩,将所有解压的文件上传至服务器相应目录,然后通过浏览器访问该目录,即可进行快速安装,这个过程只需5分钟。 2、如果之前没有配置文件,你需要点击“创建配置文件”,然后就到了这里。 注意: 以上内容的正确性,表前缀一般不必修改,如果数据库和文件在同一个主机或服务器,那么数据库主机也可默认为 localhost; 如果数据库相关信息不明确,可以咨询主机商或云服务器商; 数据库名需要先存在于你的数据库中。 3、提交后,如无异常会提醒“进行安装”,点击即可。 4、最后是填写网站标题、管理员登录邮箱密码等信息,填写完成即可登录进后台了。 写在最后: 强烈建议各位站长选择靠谱服务器商,不懂运维的朋友建议寻找一个售后比较好的。商祺云 www.sq9.cn;待网站建成,内容将是你取胜的关键,珍惜生命和时间,请不要随意做垃圾站。 选择一个好的WordPress主题,开启一篇新的天空。
tob主题用户反馈一个问题,文章点赞时总是没有反应,经测试发现是POST请求的文件报错了,具体报错信息如下: Internal Server Error Directory “/wp-content/themes” is writeable by group 这是由于主题所在目录被设置为群组可写权限,但是PHP环境的设置是不能访问才导致报错的发生。 解决报错:Directory “xxxxx” is writeable by group 的具体方法 要解决这个问题的方法其实很简单,将报错目录的权限改为755即可。 具体操作方法:用管理员账户登入FTP软件,如 Filezilla,进入wp-content目录下,右键themes目录,然后更改权限为755。 当然你还可以使用SSH登入服务器用命令修改目录权限。
利用WordPress搭建一些定制或特殊站点时会需要移除WordPress的相关更新提示,但网上有很多是不能够正常解决问题,所以在这里告诉大家下面比较简单的方法。 只需要将下面的代码块复制到主题下的 functions.php 文件中,最好连注释一起复制,方便日后阅读和使用代码: // 移除wordpress核心更新提示 add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) ); // 移除wordpress插件更新提示 remove_action( 'load-update-core.php', 'wp_update_plugins' ); add_filter( 'pre_site_transient_update_plugins', create_function( '$b', "return null;" ) );
不得不说WordPress的菜单功能对于新手有些复杂,读完此文,希望可以解决你对WordPress菜单的所有疑惑。 进入后台“外观 – 菜单”,大部分主题都会对菜单功能进行设计,一般主题会有1-2个位置的菜单,如果下图中的第5处没有主题位置,就说明你使用的主题不支持WordPress菜单功能。 1、你可以直接“编辑菜单”或“创建新菜单”,菜单的名称只是用来区分菜单的,不会在前台显示出来。 2和3、左侧栏目的所有项都可以勾选后点击添加到菜单,可以混合使用,比如1个分类、2个页面,还可以自定义一个网址的菜单。 4、被选择的菜单会显示在右侧的这个区域,可以随意拖动其上下位置进行排序,也可以拖动到某个菜单的下面为其子菜单;菜单右侧的箭头下拉展开后会有更为详细的设置,但一般不用设置。 5、被选择的菜单在主题的那个位置显示,你只需要选择主题位置即可,如果需要显示到多个位置,也可以多选,这个步骤很重要,如果没有选择,那么主题中是不会出现你选择的菜单。 6、所有设置完毕,记得保存。 此时网站前台应该有效果出现了, 如果没有效果,可能是以下几种问题: 安装了缓存插件,设置数据没有及时更新,解决办法就是清除缓存插件带来的缓存,如果没有地方清除,请先关闭插件后再保存一次菜单; 主题的菜单位置有问题,这个需要联系主题开发者; 手抖了,没有点住保存,哈哈。
前言 一、什么是配置虚拟主机 二、通过端口区分虚拟主机 三、通过域名区分虚拟主机 阅读本文需要安装Nginx:https://www.cnblogs.com/huangyi-427/p/9229645.html 一、什么是配置虚拟主机 就是在一台服务器启动多个网站 二、通过端口区分虚拟主机 复制一份静态页面 cd /usr/local/nginx cp -r html html81 修改部分内容以示区分 vim /usr/local/nginx/html81/index.html 查看配置文件 more /usr/local/nginx/conf/nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root...
为什么用 Nginx? 第一种方案: 使用 Docker 文档中的方法 使用另一个 Docker 镜像,差点成功 最终解决方案 在使用 Docker 容器来开发 PHP 微服务套件的过程中,作者遇到了容器数量过多的问题。 最近,我一直在使用 Docker 容器来开发 PHP 微服务套件。一个问题是 PHP 应用已经搭建,可以与 PHP-FPM 还有 Nginx(取代了简单的 Apche/PHP 环境)一起工作,因此每个 PHP 微服务需要两个容器(以及两个 Docker 镜像):一个 PHP-FPM 容器和一个 Nginx 容器。 这个应用运行了 6 个以上的服务,做个乘法就知道,在开发和生产之间会有约 30 个容器。于是我决定构建一个单独的 Nginx Docker 镜像,它可以使用 PHP-FPM 的主机名作为环境变量并运行单独的配置文件,而不用为每个容器构建单独的 Nginx 镜像。 在本文中,我介绍了自己从上图中的方法 1 到方法 2 的转换,最后采用的方案中采用了一种新的定制 Docker 镜像。该镜像的代码是开源的,如果读者碰到类似问题,可以提供给大家参考。 为什么用 Nginx? Nginx 和 PHP-FPM 配合使用能使 PHP 应用的性能更好,但不好的地方在于,和 PHP Apache 镜像不同,PHP-FPM Docker 镜像默认不是和和 Nginx 绑定在一起的。如果需要通过 Nginx 容器和 PHP-FPM 连接,需要在 Nginx 配置里为该后端增加 DNS 记录。比如,如果名为 php-fpm-api 的 PHP-FPM 容器正在运行,Nginx 配置文件应该包含下面部分: location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # This line passes requests through to the PHP-FPM container fastcgi_pass php-fpm-api:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } 如果只服务于单独的 Nginx 容器,Nginx 配置中容器名字写死还可以接受,但如上所述,需要允许多个 Nginx 容器,每个对应于一个 PHP 服务。创建一个新的 Nginx...
前言 配置 1. 在nginx的主配置文件 2. 站点配置 3.验证 4. 遇到问题 前言 fastcgi_cache是一个nginx的插件,用于缓存fastcgi接口的执行结果,例如缓存php的执行结果。特别是php网站的首页与一些非交互页面,利用fastcgi_cache可以大幅度提升访问速度,并且降低php的执行压力。 配置 1. 在nginx的主配置文件 在主配置文件(nginx.conf)中添加缓存域 fastcgi_cache_path /dev/shm/nginx-cache levels=1:2 keys_zone=cgi_wpcache:200m inactive=1d; fastcgi_cache_path:缓存文件的路径,/dev/shm/为tmfs缓存文件系统, 实际储存在内存中,所以读写IO性能更高。 levels:缓存目录的结构层次,例如1:2,缓存文件会就生成在指定目录的再下两层目录中。 keys_zone:缓存域名称,在vhost内进行缓存时需要调用。 inactive:缓存不活动时间,若缓存内容在指定时间内未被访问将会被清理出缓存域。 2. 站点配置 location /archives/ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /data/webroot/$fastcgi_script_name; include fastcgi_params; fastcgi_cache cgi_wpcache; fastcgi_cache_methods GET HEAD; fastcgi_cache_key $request_method$host$request_uri; fastcgi_cache_valid 200 2d; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; add_header X-Cache “$upstream_cache_status”; } fastcgi_cache:指定缓存域 fastcgi_cache_methods:指定缓存的请求方式 fastcgi_cache_key:指定缓存文件的标识,这个标识会MD5转码存储在缓存域的目录下 fastcgi_cache_valid:指定缓存状态,例如上文中只缓存响应状态码为200的请求所产生的返回页面两天 fastcgi_ignore_headers:默认情况下fastcgi_cache会忽略有特殊header的请求,并不进行缓存,官网说明。但当我们添加这个参数后,这些限制将不在存在。 add_header 将会在返回请求的response的header中添加一个X-Cache字段表示是否进行了缓存。如果需要也可以在nginx日志中通过log_format添加$upstream_cache_status字段 ·MISS 未命中,请求被传送到后端 ·HIT 缓存命中 ·EXPIRED 缓存已经过期请求被传送到后端 ·UPDATING 正在更新缓存,将使用旧的应答 ·STALE 后端将得到过期的应答 3.验证 配置完成后重新加载nginx后通过curl -I 访问如下: [root@localhost local]# curl -I localhost/archives/1.php HTTP/1.1 200 OK Server: nginx/1.14.0 Date: Mon, 25 Jun 2018 06:48:05 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding X-Powered-By: PHP/7.0.30 Expires: Tue, 26 Jun 2018 06:48:05 GMT Cache-Control: max-age=86400 X-Cache: MISS 第一次访问 X-Cache: MISS 说明还未进行缓存。 [root@localhost local]# curl...
阿里云午夜在官网、微博发布了故障公告: 6月27日下午,我们在运维上的一个操作失误,导致一些客户访问阿里云官网控制台和使用部分产品功能出现问题,引发了大量吐槽。故障于北京时间2018年6月27日16:21左右开始,16:50分开始陆续恢复。 经过紧急技术复盘,故障原因如下: 当天下午,工程师团队在上线一个自动化运维新功能中,执行了一项变更验证操作。这一功能在测试环境验证中并未发生问题,上线到自动化运维系统后,触发了一个未知代码bug。错误代码禁用了部分内部IP,导致部分产品访问链路不通。 后续人工介入后,工程师团队快速定位问题进行了恢复。 受影响范围包括阿里云官网控制台,以及MQ、NAS、OSS等产品功能。 对于这次故障,没有借口,我们不能也不该出现这样的失误!我们将认真复盘改进自动化运维技术和发布验证流程,敬畏每一行代码,敬畏每一份托付。 下午 16:30 左右,微信朋友圈、微信群、微博出现阿里云故障消息,故障原因主要体现在阿里云官网、控制台无法访问,尝试登陆阿里云官网,显示如下: 官网有时候可以访问,有时候显示502错误的网关,即使官网可以访时,点击登陆,页面只会刷新,登陆不了。 一位行业从业者发推称:阿里云的函数计算挂了,导致线上故障。打算马上降级到本地计算,结果阿里云的 Kubernetes 也挂了。想着挨个机器手工改一下,发现 OSS 也挂了…整个过程没有报警,因为 SLS 也挂了…(备注:未得到阿里云官方确认) 官网公告称16:21左右开始,阿里云官网的部分管控功能,及MQ、NAS、OSS等产品的部分功能出现故障,以下为全文: 阿里云官网通告:6月27日阿里云部分产品及账号登录访问异常通告 【阿里云】【网络】【异常通告】 异常时间:北京时间2018年6月27日16:21左右。 异常概述:于北京时间2018年6月27日16:21左右开始,阿里云官网的部分管控功能,及MQ、NAS、OSS等产品的部分功能出现访问异常,阿里云工程师正在紧急处理中,请您稍后重试。 【异常更新】 北京时间2018年6月27日 16:50 目前受影响的业务正在逐步恢复中,若遇到异常,请您稍等后重试。 【异常更新】 北京时间2018年6月27日 17:30 目前受影响的业务大部分已经恢复正常,请您确认。若还有异常,请您跟我们反馈,谢谢。 故障时间 50 分钟左右,故障原因,阿里云尚未披露。
前言 前段时间有网友跟学派吧反馈问题说。WordPress上传文件提示HTTP错误,我们将排查处理过程进行记录。分享出来 原因排查 1. 上传一个十几兆mp4的文件上传进度到达百分之百,会媒体提示http错误 2. 刚开始怀疑是PHP、Nginx的上传大小限制了。但是查看PHP、Nginx配置均配置了1000M vim /etc/nginx/conf.d/default.conf location / { root /data/web; index index.php index.html index.htm; client_max_body_size 000M; } vim /etc/php.ini upload_max_filesize = 000M post_max_size = 000M max_execution_time = 300 3. 查看Nginx erro日志 tail /var/log/nginx/error.log 2018/02/14 09:32:07 [error] 87522#87522: *1 client intended to send too large body: 35016434 bytes, client: 36.111.88.33, server: localhost, request: "POST /wp-admin/async-upload.php HTTP/1.1", host: "117.66.240.116:81", referrer: "http://117.66.240.116:81/wp-admin/media-new.php" 只有下面这一行是最主要的保存信息。以下错误就是body限制大小的问题 client intended to send too large body 4. 将限制大小的设定在http中后上串资源就不会在有限制 vim /etc/nginx/nginx.conf http{ client_max_body_size 1000M; keepalive_timeout 300; } 语录 如果网友遇到问题,也一定不要着急,可以先百度进行查找下资料。QQ群进行咨询、 可以加我们的QQ群 进行一起教程