Web技术最重要的载体便是服务器,服务器运行在公共的网络环境下,为广大的用户提供网页浏览、信息通讯、消息推送等服务,从最开始的硬件服务器到虚拟主机技术,再到虚拟化技术的出现和云概念的兴起,绝大部分都是基于Linux操作系统的,因此web工程中,Linux也是一枚举足轻重的角色,不过掌握一门Linux技术也是重中之重,个人认为《Linux就该这么学》这本书拿来入门还是挺不错的,下面将开始介绍Linux作为web技术的重要角色的几个要点。

图:WEB技术栈

1、 应用部署

绝大多数Web应用都承载在各大Linux发行版(如ubuntu 、redhat、centos)上,因此掌握Linux环境下的应用部署和日常维护尤为重要。下面列举一些典型的应用部署解决方案:

PHP:Nginx/LAMP(Linux+Apache+Mysql+PHP),提供HTTP(S)服务并提供PHP解析的Fastcgi;

JAVA WEB:Tomcat/Jboss,提供HTTP(S)服务、Servlet和JSP容器;

Node.js:pm2/nodemon:提供守护进程和集群管理服务,Node.js应用本身即可开启Server;

那么我们需要如何进行应用部署的技能补充呢?事实上,学习WEB应用部署并不难,首先我们需要扎实Linux的基本功:了解Linux操作系统概念和发行版、掌握基本的命令和程序安装的方法(通常我们会通过包管理器或者源码安装的方式进行)。接下来的步骤简化来说就是安装应用部署所需的环境、进行环境的配置、拉取项目代码、启动应用。

或许我们可以再前卫一些,通过虚拟化或者容器等技术去进行web应用的部署,都是依赖于上述这些最基本的套路。至于一些技术上细节和进阶的内容,可以通过相关的专业网站或书籍参考。

2、 日常维护

往往我们的Web应用在运行状态下,偶有意外发生,如服务不可用、性能瓶颈等,这时候我们便需要对应用的生产环境进行现场勘查。

通常情况下,我们首先会进行系统运行状态的检查,通过工具或命令采集和查看机器运行状态指数(CPU利用率、物理内存占用率、网络、IOPS等)、服务运行状态(服务可用性、响应速度、最大并发数等),基于以上的参数,我们可以建立监控系统和可视化平台,通过脚本收集参数信息,再通过WEB前端进行可视化的展示(nagios、zabbix等)。

接下来的重头戏则是日志系统,web应用中日志里保存了用户的操作和结果反馈,可以快速进行场景和行为的还原。一般我们会将日志分为两类:结构化日志和非结构化日志。非结构化日志(如log4j)主要是提供给开发者和维护者人工审阅和快速查询的,往往当用户量和数据量达到一定数量级时,会变得不利于阅读和分析,因此并不适合大规模的web应用场景。结构化日志(如bunyan)通过代码生成和序列化之后进行持久化存储,我们可以通过相应的工具进行海量日志的分析和挖掘,甚至可以直接和业务耦合,进行集中化的日志分析(如ELK的日志实时分析),缺点是需要通过工具转换成人工可阅读的文档。

基于日志分析和实时监控,我们可以从而建立警报系统,(当然监控以上提及的监控平台均提供了警报功能)通过邮件等方式将服务器运行状态、故障、意外事件等进行推送。

3、 性能优化和架构

一款好的产品总不会一成不变,web产品在发展过程中通常会遇到性能瓶颈,这时候我们便需要对应用进行优化,甚至对整体架构进行升级。

撇开Web应用本身的业务代码和逻辑上的优化点不说,且讲一下在Linux环境下的优化策略,而其最重要的便是参数调优,主要解决Linux默认配置带来的性能问题,其中主要的一些调优点为:打开文件树(limits)、内核参数调优(协议栈中的各参数、网络接口队列等),通常情况下,我们需要对实际的服务环境进行参数的调整。

当我们的web应用在不断的遇到性能瓶颈和升级优化之后,整体架构也会随之演化,从最开始的单机的架构到横向扩展(升级硬件配置、增加机器数量)架构,再到纵向扩展(数据库读写分离、业务切分等)架构,然后成为面向服务的分布式集群,甚至结合新兴的大数据等技术建立高可用的集群。

对于web开发者而言,Linux的知识和技能掌握是非常重要的,我们尤其需要一套渐进式的学习路径去熟悉和巩固,其中为代表的书籍《Linux就该这么学》提供了大部分的Linux基础学习和实战教程,非常值得阅读几番。当遇到一些难以处理的场景,需提高自身解决问题的能力,合理利用Linux开源社区的资源快速找到解决方案。

web技术栈中不可或缺的Linux技术的更多相关文章

  1. 细数Javascript技术栈中的四种依赖注入

    作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道 ...

  2. TICK技术栈(一)TICK技术栈介绍

    1.什么是TICK技术栈? 1.1 简介 TICK 是由 InfluxData开发的一套开源工具栈,由 Telegraf, InfluxDB, Chronograf, Kapacitor 四个工具的首 ...

  3. .Net 微服务架构技术栈的那些事

    一.前言 大家一直都在谈论微服务架构,园子里面也有很多关于微服务的文章,前几天也有一些园子的朋友问我微服务架构的一些技术,我这里就整理了微服务架构的技术栈路线图,这里就分享出来和大家一起探讨学习,同时 ...

  4. 快速了解Scala技术栈

    http://www.infoq.com/cn/articles/scala-technology/ 我无可救药地成为了Scala的超级粉丝.在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为 ...

  5. Parcel:常见技术栈的集成方式

    前言 Parcel 是什么 Parcel 是一个前端构建工具,Parcel 官网 将它定义为极速零配置的Web应用打包工具.没错,又是一个构建工具,你一定会想,为什么前端的构建工具层出不穷,搞那么多工 ...

  6. 【Scala】Scala技术栈

    快速了解Scala技术栈 我无可救药地成为了Scala的超级粉丝.在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为一个巨大的黑洞,吸引力使我不得不飞向它,以至于开始背离Java.固然Java ...

  7. 聊聊真实的 Android TV 开发技术栈

    智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ...

  8. 为什么新的5G标准将为技术栈带来更低的 TCO

    ​ 摘要 新5G标准和边缘计算对低延迟的要求,给那些试图将一堆不同组件组装成一个不会出现故障且仍具有低延迟的高成本效益应用程序公司带来了严峻的挑战.事实上,这个问题非常严重,以至于需要重新考虑架构. ...

  9. 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

随机推荐

  1. 学习笔记53—Wilcoxon检验和Mann-whitney检验的区别

    Wilcoxon signed-rank test应用于两个related samples Mann–Whitney U test也叫Wilcoxon rank-sum test,应用于两个indep ...

  2. ubuntu vscode chrome 显示color emoji

    win10 下vscode默认就可以显示color emoji, 真是亲儿子啊. 但linux下默认是显示黑白的. 绕了一些弯路之后,发现最简单的办法是: 1 下载google noto字体全集    ...

  3. git 先创建本地仓库,再关联远程

    之前都是先在GitHub或者bitbucket上创建repo,然后在本地直接git clone下来. 如果一定需要先在本地创建好文件夹,然后再关联远程仓库. 是这样: 1在远程创建仓库这步不变. 2 ...

  4. cocos2dx spine之一 :spine缓存 (c++ & lua)

    cocos2dx版本为3.10 1.在使用spine的过程中,发现了一个比较严重的问题:每次创建SkeletonAnimation的时候都会很卡,即使是使用同一个骨骼数据skeletonData. 跟 ...

  5. Codeforces 797E - Array Queries

    E. Array Queries 题目链接:http://codeforces.com/problemset/problem/797/E time limit per test 2 seconds m ...

  6. lua中pairs 和 ipairs 的区别

    1.table中存储值的时候,是按照顺序存储的,存储 k-v 的时候,是按照 k 的哈希值存储的. 2.ipairs --- 只能输出 table 中的值,并且不可输出nil,遇到 ni l就退出 p ...

  7. redhat 7.0 配置Bond

    把/etc/sysconfig/network-scripts/目录下的ifcfg-bond*文件手动移动到/tmp目录. 重启网络:systemctl restart NetworkManager ...

  8. Selenium自动化测试框架入门整理

    ​​关注嘉为科技,获取运维新知 本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明.作为开发人员.测试人员入门参考. 本文参考:Se ...

  9. p1518 The Tamworth Two

    #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...

  10. vue.js如何实现点击按钮动态添加li

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...