[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"site-data":3,"article-66":143,"article-show-hot-66":172,"article-show-new-66":262},{"settings":4,"categorys":35,"tree":97,"models":118,"search_model_select":128,"nav_list":130},{"changefreq":5,"changyan_app_id":6,"changyan_app_key":6,"copy":7,"description":8,"editor":9,"file":6,"guest_feedback":10,"head_html":6,"icp":11,"index_banner":12,"index_banner_bg":13,"is_excel":14,"is_watermark":10,"keywords":15,"links":16,"logo":17,"lzcms_banner":6,"lzcms_banner_link":18,"member_register_enabled":14,"qq_app_id":6,"qq_app_key":6,"qr_code":6,"search_model":19,"site_closedreason":6,"site_idea":6,"site_idea1":20,"site_idea2":21,"site_idea3":22,"site_name":23,"site_statistice":6,"site_status":14,"site_url":18,"sitemap_model":19,"stationmaster_motto":24,"stationmaster_name":25,"stationmaster_occupation":26,"stationmaster_qq":27,"stationmaster_qqnet":28,"stationmaster_qqnet_code":29,"threshold":14,"title_add":30,"watermark":6,"watermark_alpha":31,"watermark_height":32,"watermark_locate":33,"watermark_width":34},"weekly","","版权所有 © \u003Ca class=\"site_url\" href=\"https://zhl123.com\">2026 zhl123.com\u003C/a>","linux、Python、mysql、docker、k8s技术交流","layedit","0","粤ICP备15054664号-1","/uploads/images/20181109/7a86191de8b8bb60e9c6b54d8b27c5cc.jpg","#xe604","1","linux、Python、mysql、docker、k8s","{\"1\":{\"id\":\"1\",\"link_url\":\"https://linux.org\",\"logo\":\"\",\"name\":\"linux\",\"sort\":\"0\",\"status\":\"1\"}}","/uploads/images/20181109/e7305012448aed257176dd591846f50a.png","https://zhl123.com","2","学无止境\n学习，探索，研究，从不了解到了解，从无知到掌握，到灵活运用，在不断的学习中加深认识。由浅入深，由表及里。","业精于勤\n“业精于勤荒于嬉”，精深的业技靠的是勤学、刻苦努力，靠的是争分夺秒的勤学苦练才会有精深的技术。得在认真，失在随便。","工匠精神\n精益求精，注重细节，追求完美和极致，不惜花费时间精力，孜孜不倦，反复改进产品，把99%提高到99.99%。","linux","业精于勤、学无止境、工匠精神","廖地金","高级Linux运维工程师","1256636645","592958303","\u003Ca target=\"_blank\" href=\"//shang.qq.com/wpa/qunwpa?idkey=09be7d1a682073783fd636102e666393169b8a8aac8f3393da1de57bcaa821a0\">\u003Cimg border=\"0\" src=\"//pub.idqqimg.com/wpa/images/group.png\" alt=\"Linux技术\" title=\"Linux技术\">\u003C/a>"," | Python | mysql | docker | k8s 技术交流","100","300","9","500",{"0":36,"17":51,"18":60,"19":63,"20":67,"21":71,"22":76,"25":80,"26":83,"27":89,"29":94},{"children":37},{"0":38,"25":43,"26":48},[39,40,41,42],25,21,22,26,[44,45,46,47],17,18,19,20,[49,50],27,29,{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},"index",1,"list","article",2,"文章模型","show","/article/lists?category_id=17",{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},"python","/article/lists?category_id=18",{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},"容器技术",3,"/article/lists?category_id=19",{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},"负载均衡",4,"/article/lists?category_id=20",{"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},"分享无价",0,5,"/article/lists?category_id=21",{"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},"随笔",6,"/article/lists?category_id=22",{"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},"学无止境","/article/lists?category_id=25",{"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},"picture","图集模型","关于",8,"/picture/lists?category_id=26",{"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},"page","单页模型","关于博主","/page/27",{"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},"留言","/feedback",[98,108,110,112],{"children":99,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[100,102,104,106],{"children":101,"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},[],{"children":103,"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},[],{"children":105,"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},[],{"children":107,"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},[],{"children":109,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":111,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":113,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[114,116],{"children":115,"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},[],{"children":117,"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},[],{"1":119,"2":120,"3":121,"4":122,"5":125},{"id":53,"index_template":52,"list_template":54,"name":91,"show_template":58,"status":73,"tablename":90},{"id":56,"index_template":52,"list_template":54,"name":57,"show_template":58,"status":73,"tablename":55},{"id":65,"index_template":52,"list_template":54,"name":85,"show_template":58,"status":73,"tablename":84},{"id":69,"index_template":52,"list_template":54,"name":123,"show_template":58,"status":73,"tablename":124},"链接模型","link",{"id":74,"index_template":52,"list_template":54,"name":126,"show_template":58,"status":73,"tablename":127},"下载模型","download",[129],{"id":56,"name":57,"tablename":55},[131,137,139,141],{"children":132,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[133,134,135,136],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"children":138,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":140,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":142,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[],{"article":144,"breadcrumb":155,"category":159,"next":160,"prev":163,"second_categorys":166,"seo":171},{"id":145,"category_id":44,"title":146,"keywords":147,"description":148,"image_url":6,"content":149,"content_md":150,"url":151,"hits":152,"is_recommend":73,"is_top":73,"create_time":153,"update_time":154},66,"在 CentOS 7 中 使用HHVM 替换php-fpm","使用,替换","HHVM （HipHop Virtual Machine） 是一个用于执行以 PHP 和 Hack 语言编写的代码的虚拟环境。它是由 Facebook 开发的，提供了当前 PHP 7 的大多数功能。要在你的服务器上运行 HHVM，你需要使用 FastCGI 来将 HHVM 和 Nginx 或 Apache 衔接起来，或者你也可以使用 HHVM 中的内置 Web 服务器 Proxygen。在这篇教程中，我将展示给你如何在 Nginx Web 服务器的 HHVM 上安装 phpinfo。这里我使用 ","\u003Cdiv class=\"entry-content\">\u003Cp>HHVM （HipHop Virtual Machine） 是一个用于执行以 PHP 和 Hack 语言编写的代码的虚拟环境。它是由 Facebook 开发的，提供了当前 PHP 7 的大多数功能。要在你的服务器上运行 HHVM，你需要使用 FastCGI 来将 HHVM 和 Nginx 或 Apache 衔接起来，或者你也可以使用 HHVM 中的内置 Web 服务器 Proxygen。\u003C/p>\u003Cp>在这篇教程中，我将展示给你如何在 Nginx Web 服务器的 HHVM 上安装 phpinfo。这里我使用 CentOS 7 作为操作系统，所以你需要懂一点 CentOS 操作的基础。\u003C/p>\u003Cp>\u003Cstrong>先决条件\u003C/strong>\u003C/p>\u003Cul>\u003Cli>CentOS 7 – 64位\u003C/li>\u003Cli>Root 权限\u003C/li>\u003C/ul>\u003Ch3 id=\"toc_1\">步骤 1 – 配置 SELinux 并添加 EPEL 仓库\u003C/h3>\u003Cp>在本教程中，我们将使用 SELinux 的强制模式，所以我们需要在系统上安装一个 SELinux 管理工具。这里我们使用&nbsp;\u003Ccode>setools\u003C/code>&nbsp;和&nbsp;\u003Ccode>setrobleshoot\u003C/code>&nbsp;来管理 SELinux 的各项配置。\u003C/p>\u003Cp>CentOS 7 已经默认启用 SELinux，我们可以通过以下命令来确认：\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;sestatus\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;getenforce\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp class=\"article_img\">\u003Cimg src=\"/uploads/layedit/20181022/e129f54b9fe0993b521827232d1fc3e6.png\" alt=\"31.png\">\u003Cbr>\u003C/p>\u003Cp class=\"article_img_desc\">\u003Cem>验证 SELinux 运行状态\u003C/em>\u003C/p>\u003Cp>如图，你能够看到，SELinux 已经开启了强制模式。\u003C/p>\u003Cp>接下来就是使用&nbsp;\u003Ccode>yum\u003C/code>&nbsp;来安装&nbsp;\u003Ccode>setools\u003C/code>&nbsp;和&nbsp;\u003Ccode>setroubleshoot\u003C/code>&nbsp;了。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">yum\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">y install setroubleshoot setools net\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">tools\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>安装好这两个后，再安装 EPEL 仓库。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">yum\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">y install epel\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">release\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Ch3 id=\"toc_2\">步骤 2 – 安装 Nginx\u003C/h3>\u003Cp>Nginx (发音：engine-x) 是一个高性能、低内存消耗的轻量级 Web 服务器软件。在 CentOS 中可以使用&nbsp;\u003Ccode>yum\u003C/code>命令来安装 Nginx 包。确保你以 root 用户登录系统。\u003C/p>\u003Cp>使用&nbsp;\u003Ccode>yum\u003C/code>&nbsp;命令从 CentOS 仓库中安装 nginx。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">yum\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">y install nginx\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>现在可以使用&nbsp;\u003Ccode>systemctl\u003C/code>&nbsp;命令来启动 Nginx，同时将其设置为跟随系统启动。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;start nginx\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;enable nginx\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>为确保 Nginx 已经正确运行于服务器中，在浏览器上输入服务器的 IP，或者如下使用&nbsp;\u003Ccode>curl\u003C/code>&nbsp;命令检查显示结果。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;curl&nbsp;\u003C/span>\u003Cspan class=\"lit\">192.168\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"lit\">1.110\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>我这里使用浏览器来验证。\u003C/p>\u003Cp class=\"article_img\">\u003Cimg src=\"/uploads/layedit/20181022/3c98e999240695baa9c0945ea7b02a3c.png\" alt=\"32.png\">\u003Cbr>\u003C/p>\u003Cp class=\"article_img_desc\">\u003Cem>Nginx 正确运行\u003C/em>\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Ch3 id=\"toc_4\">步骤 3 – 安装 HHVM\u003C/h3>\u003Cp>对于 HHVM，我们需要安装大量的依赖项。作为选择，你可以从 GitHub 下载 HHVM 的源码来编译安装，也可以从网络上获取预编译的包进行安装。在本教程中，我使用的是预编译的安装包。\u003C/p>\u003Cp>为 HHVM 安装依赖项：\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">yum\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">y install cpp&nbsp;\u003C/span>\u003Cspan class=\"kwd\">gcc\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">c\u003C/span>\u003Cspan class=\"pun\">++\u003C/span>\u003Cspan class=\"pln\">&nbsp;cmake&nbsp;\u003C/span>\u003Cspan class=\"kwd\">git\u003C/span>\u003Cspan class=\"pln\">&nbsp;psmisc&nbsp;\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003Cspan class=\"pln\">binutils\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">boost\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">jemalloc\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">numactl\u003C/span>\u003Cspan class=\"pun\">}-\u003C/span>\u003Cspan class=\"pln\">devel \\\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"pun\">&gt;\u003C/span>&nbsp;\u003Cspan class=\"pun\">{\u003C/span>\u003Cspan class=\"typ\">ImageMagick\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">sqlite\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">tbb\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">bzip2\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">openldap\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">readline\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">elfutils\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">libelf\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">gmp\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">lz4\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">pcre\u003C/span>\u003Cspan class=\"pun\">}-\u003C/span>\u003Cspan class=\"pln\">devel \\\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"pun\">&gt;\u003C/span>\u003Cspan class=\"pln\">&nbsp;lib\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003Cspan class=\"pln\">xslt\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">event\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">yaml\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">vpx\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">png\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">zip\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">icu\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">mcrypt\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">memcached\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">cap\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">dwarf\u003C/span>\u003Cspan class=\"pun\">}-\u003C/span>\u003Cspan class=\"pln\">devel \\\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>\u003Cspan class=\"pun\">&gt;\u003C/span>&nbsp;\u003Cspan class=\"pun\">{\u003C/span>\u003Cspan class=\"pln\">unixODBC\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">expat\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">mariadb\u003C/span>\u003Cspan class=\"pun\">}-\u003C/span>\u003Cspan class=\"pln\">devel lib\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003Cspan class=\"pln\">edit\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">curl\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">xml2\u003C/span>\u003Cspan class=\"pun\">,\u003C/span>\u003Cspan class=\"pln\">xslt\u003C/span>\u003Cspan class=\"pun\">}-\u003C/span>\u003Cspan class=\"pln\">devel \\\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L4\">\u003Ccode>\u003Cspan class=\"pun\">&gt;\u003C/span>\u003Cspan class=\"pln\">&nbsp;glog\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">devel oniguruma\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">devel ocaml gperf enca libjpeg\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">turbo\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">devel openssl\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">devel \\\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L5\">\u003Ccode>\u003Cspan class=\"pun\">&gt;\u003C/span>\u003Cspan class=\"pln\">&nbsp;mariadb mariadb\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">server libc\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">client&nbsp;\u003C/span>\u003Cspan class=\"kwd\">make\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>然后是使用&nbsp;\u003Ccode>rpm\u003C/code>&nbsp;安装从&nbsp;\u003Ca class=\"ext\" href=\"http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/\" target=\"_blank\" rel=\"external nofollow noopener\">HHVM 预编译包镜像站点\u003C/a>&nbsp;下载的 HHVM 预编译包。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;rpm&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"typ\">Uvh&nbsp;\u003C/span>\u003Ca href=\"http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.3-1.el7.centos.x86_64.rpm\">\u003Cspan class=\"pln\">http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.3-1.el7.centos.x86_64.rpm&nbsp;\u003C/span>\u003C/a>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">ln\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">s&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">usr\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">local\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">bin\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">bin\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>安装好 HHVM 之后使用如下命令按了验证：\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;hhvm&nbsp;\u003C/span>\u003Cspan class=\"pun\">--\u003C/span>\u003Cspan class=\"pln\">version\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>为了能使用 PHP 命令，可以把&nbsp;\u003Ccode>hhvm\u003C/code>&nbsp;命令设置为&nbsp;\u003Ccode>php\u003C/code>。这样在 shell 中输入&nbsp;\u003Ccode>php\u003C/code>&nbsp;命令的时候，你会看到和输入&nbsp;\u003Ccode>hhvm\u003C/code>&nbsp;命令一样的结果。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">sudo\u003C/span>\u003Cspan class=\"pln\">&nbsp;update\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">alternatives&nbsp;\u003C/span>\u003Cspan class=\"pun\">--\u003C/span>\u003Cspan class=\"pln\">install&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">usr\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">bin\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">php php&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">usr\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">bin\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm&nbsp;\u003C/span>\u003Cspan class=\"lit\">60\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;php&nbsp;\u003C/span>\u003Cspan class=\"pun\">--\u003C/span>\u003Cspan class=\"pln\">version\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp class=\"article_img\">\u003Cimg src=\"/uploads/layedit/20181022/ea97d77fb9c9573b29ea99963096d5ac.png\" alt=\"33.png\">\u003Cbr>\u003C/p>\u003Cp class=\"article_img_desc\">\u003Cem>安装 HHVM\u003C/em>\u003C/p>\u003Ch3 id=\"toc_5\">步骤 4 – 配置 HHVM\u003C/h3>\u003Cp>这一步中，我们来配置 HHVM 以系统服务来运行。我们不通过端口这种常规的方式来运行它，而是选择使用 unix socket 文件的方式，这样运行的更快速一点。\u003C/p>\u003Cp>进入 systemd 配置目录，并创建一个&nbsp;\u003Ccode>hhvm.service\u003C/code>&nbsp;文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">cd\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">systemd\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">system\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">vim\u003C/span>\u003Cspan class=\"pln\">&nbsp;hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">service\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>复制粘贴如下配置到文件中去。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"pun\">[\u003C/span>\u003Cspan class=\"typ\">Unit\u003C/span>\u003Cspan class=\"pun\">]\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"typ\">Description\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"pln\">HHVM&nbsp;\u003C/span>\u003Cspan class=\"typ\">HipHop\u003C/span>&nbsp;\u003Cspan class=\"typ\">Virtual\u003C/span>&nbsp;\u003Cspan class=\"typ\">Machine\u003C/span>&nbsp;\u003Cspan class=\"pun\">(\u003C/span>\u003Cspan class=\"pln\">FCGI\u003C/span>\u003Cspan class=\"pun\">)\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"typ\">After\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"pln\">network\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">target nginx\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">service mariadb\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">service\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>\u003C/code>\u003C/li>\u003Cli class=\"L4\">\u003Ccode>\u003Cspan class=\"pun\">[\u003C/span>\u003Cspan class=\"typ\">Service\u003C/span>\u003Cspan class=\"pun\">]\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L5\">\u003Ccode>\u003Cspan class=\"typ\">ExecStart\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"str\">/usr/\u003C/span>\u003Cspan class=\"kwd\">local\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">bin\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm&nbsp;\u003C/span>\u003Cspan class=\"pun\">--\u003C/span>\u003Cspan class=\"pln\">config&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">server\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">ini&nbsp;\u003C/span>\u003Cspan class=\"pun\">--\u003C/span>\u003Cspan class=\"pln\">user nginx&nbsp;\u003C/span>\u003Cspan class=\"pun\">--\u003C/span>\u003Cspan class=\"pln\">mode daemon&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">vServer\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"typ\">Type\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"pln\">fastcgi&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">vServer\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"typ\">FileSocket\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"str\">/var/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">sock\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L6\">\u003Ccode>\u003C/code>\u003C/li>\u003Cli class=\"L7\">\u003Ccode>\u003Cspan class=\"pun\">[\u003C/span>\u003Cspan class=\"typ\">Install\u003C/span>\u003Cspan class=\"pun\">]\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L8\">\u003Ccode>\u003Cspan class=\"typ\">WantedBy\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"pln\">multi\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">user\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">target\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>保存文件退出 vim。\u003C/p>\u003Cp>接下来，进入&nbsp;\u003Ccode>hhvm\u003C/code>&nbsp;目录并编辑&nbsp;\u003Ccode>server.ini\u003C/code>&nbsp;文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">cd\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">vim\u003C/span>\u003Cspan class=\"pln\">&nbsp;server\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">ini\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>将第 7 行&nbsp;\u003Ccode>hhvm.server.port\u003C/code>&nbsp;替换为 unix socket，如下：\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">server\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">file_socket&nbsp;\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>&nbsp;\u003Cspan class=\"str\">/var/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">sock\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>保存文件并退出编辑器。\u003C/p>\u003Cp>我们已在 hhvm 服务文件中定义了 hhvm 以&nbsp;\u003Ccode>nginx\u003C/code>&nbsp;用户身份运行，所以还需要把 socket 文件目录的属主变更为&nbsp;\u003Ccode>nginx\u003C/code>。然后我们还必须在 SELinux 中修改 hhvm 目录的权限上下文以便让它可以访问这个 socket 文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">chown\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">R nginx\u003C/span>\u003Cspan class=\"pun\">:\u003C/span>\u003Cspan class=\"pln\">nginx&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;semanage fcontext&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">a&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">t&nbsp;\u003C/span>\u003Cspan class=\"typ\">httpd_var_run_t\u003C/span>&nbsp;\u003Cspan class=\"str\">\"/var/run/hhvm(/.*)?\"\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;restorecon&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"typ\">Rv\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>服务器重启之后，hhvm 将不能运行，因为没有存储 socket 文件的目录，所有还必须在启动的时候自动创建一个。\u003C/p>\u003Cp>使用 vim 编辑&nbsp;\u003Ccode>rc.local\u003C/code>&nbsp;文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">vim\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">rc\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"kwd\">local\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>将以下配置粘贴到文件末行。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">mkdir\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">p&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">chown\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">R nginx\u003C/span>\u003Cspan class=\"pun\">:\u003C/span>\u003Cspan class=\"pln\">nginx&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;semanage fcontext&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">a&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">t&nbsp;\u003C/span>\u003Cspan class=\"typ\">httpd_var_run_t\u003C/span>&nbsp;\u003Cspan class=\"str\">\"/var/run/hhvm(/.*)?\"\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;restorecon&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"typ\">Rv\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>保存文件并退出 vim。然后给文件赋予执行权限。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">chmod\u003C/span>&nbsp;\u003Cspan class=\"pun\">+\u003C/span>\u003Cspan class=\"pln\">x&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">rc\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"kwd\">local\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>重新加载 systemd 服务，启动 hhvm 并设置为随系统启动。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;daemon\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">reload\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;start hhvm\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;enable hhvm\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>要确保无误，使用&nbsp;\u003Ccode>netstat\u003C/code>&nbsp;命令验证 hhvm 运行于 socket 文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">netstat\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">pl&nbsp;\u003C/span>\u003Cspan class=\"pun\">|\u003C/span>&nbsp;\u003Cspan class=\"kwd\">grep\u003C/span>\u003Cspan class=\"pln\">&nbsp;hhvm\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp class=\"article_img\">\u003Cimg src=\"/uploads/layedit/20181022/a33762de9ebc001d012ca90e8c81fdb5.png\" alt=\"34.png\">\u003Cbr>\u003C/p>\u003Cp class=\"article_img_desc\">\u003Cem>Check the HHVM socket file\u003C/em>\u003C/p>\u003Ch3 id=\"toc_6\">步骤 5 – 配置 HHVM 和 Nginx\u003C/h3>\u003Cp>在这个步骤中，我们将配置 HHVM 已让它运行在 Nginx Web 服务中，这需要在 Nginx 目录创建一个 hhvm 的配置文件。\u003C/p>\u003Cp>进入&nbsp;\u003Ccode>/etc/nginx\u003C/code>&nbsp;目录，创建&nbsp;\u003Ccode>hhvm.conf\u003C/code>&nbsp;文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">cd\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">vim\u003C/span>\u003Cspan class=\"pln\">&nbsp;hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>粘贴以下内容到文件中。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"pln\">location&nbsp;\u003C/span>\u003Cspan class=\"pun\">~\u003C/span>\u003Cspan class=\"pln\">&nbsp;\\.\u003C/span>\u003Cspan class=\"pun\">(\u003C/span>\u003Cspan class=\"pln\">hh\u003C/span>\u003Cspan class=\"pun\">|\u003C/span>\u003Cspan class=\"pln\">php\u003C/span>\u003Cspan class=\"pun\">)\u003C/span>\u003Cspan class=\"pln\">$&nbsp;\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"pln\">root&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">usr\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">share\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">html\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_keep_conn on\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_pass unix\u003C/span>\u003Cspan class=\"pun\">:\u003C/span>\u003Cspan class=\"str\">/var/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">sock\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L4\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_index index\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">php\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L5\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L6\">\u003Ccode>\u003Cspan class=\"kwd\">include\u003C/span>\u003Cspan class=\"pln\">&nbsp;fastcgi_params\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L7\">\u003Ccode>}\u003C/code>\u003C/li>\u003C/ol>\u003Cp>然后，保存并退出。\u003C/p>\u003Cp>接下来，编辑&nbsp;\u003Ccode>nginx.conf\u003C/code>&nbsp;文件，添加 hhvm 配置文件到&nbsp;\u003Ccode>include\u003C/code>&nbsp;行。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">vim\u003C/span>\u003Cspan class=\"pln\">&nbsp;nginx\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>添加配置到第 57 行的&nbsp;\u003Ccode>server\u003C/code>&nbsp;指令中。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"kwd\">include\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>保存并退出。\u003C/p>\u003Cp>然后修改 SELinux 中关于 hhvm 配置文件的权限上下文。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;semanage fcontext&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">a&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">t&nbsp;\u003C/span>\u003Cspan class=\"typ\">httpd_config_t\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;restorecon&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">v&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>测试 Nginx 配置并重启服务。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;nginx&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">t\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;restart nginx\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>记住确保测试配置没有错误。\u003C/p>\u003Ch3 id=\"toc_7\">步骤 6 – 通过 HHVM 和 Nginx 创建虚拟主机\u003C/h3>\u003Cp>在这一步中，我们要为 Nginx 和 hhvm 创建一个新的虚拟主机配置文件。这里我使用域名&nbsp;\u003Ccode>zhl123.com\u003C/code>&nbsp;来作为例子，你可以使用你主机喜欢的域名，并在配置文件中相应位置以及 phpinfo 安装过程中进行替换。\u003C/p>\u003Cp>进入 nginx 的&nbsp;\u003Ccode>conf.d\u003C/code>&nbsp;目录，我们将在该目录存储虚拟主机文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">cd\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">d\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>使用 vim 创建一个名为&nbsp;\u003Ccode>vps.conf\u003C/code>&nbsp;的配置文件。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">vim\u003C/span>\u003Cspan class=\"pln\">&nbsp;vps\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>粘贴以下内容到虚拟主机配置文件中。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"pln\">server&nbsp;\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"pln\">listen&nbsp;\u003C/span>\u003Cspan class=\"lit\">80\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"pln\">server_name zhl123.com\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>\u003C/code>\u003C/li>\u003Cli class=\"L4\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;note that these lines are originally&nbsp;\u003C/span>\u003Cspan class=\"kwd\">from\u003C/span>\u003Cspan class=\"pln\">&nbsp;the&nbsp;\u003C/span>\u003Cspan class=\"str\">\"location /\"\u003C/span>\u003Cspan class=\"pln\">&nbsp;block\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L5\">\u003Ccode>\u003Cspan class=\"pln\">root&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">www\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">html\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L6\">\u003Ccode>\u003Cspan class=\"pln\">index index\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">php index\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">html index\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">htm\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L7\">\u003Ccode>\u003C/code>\u003C/li>\u003Cli class=\"L8\">\u003Ccode>\u003Cspan class=\"pln\">location&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>&nbsp;\u003Cspan class=\"pun\">{\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L9\">\u003Ccode>\u003Cspan class=\"pln\">try_files $uri $uri\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>&nbsp;\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"lit\">404\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L0\">\u003Ccode>}\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"pln\">error_page&nbsp;\u003C/span>\u003Cspan class=\"lit\">404\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"lit\">404.html\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>\u003Cspan class=\"pln\">location&nbsp;\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"lit\">50x\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">html&nbsp;\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>\u003Cspan class=\"pln\">root&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">www\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">html\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L4\">\u003Ccode>}\u003C/code>\u003C/li>\u003Cli class=\"L5\">\u003Ccode>\u003C/code>\u003C/li>\u003Cli class=\"L6\">\u003Ccode>\u003Cspan class=\"pln\">location&nbsp;\u003C/span>\u003Cspan class=\"pun\">~\u003C/span>\u003Cspan class=\"pln\">&nbsp;\\.php$&nbsp;\u003C/span>\u003Cspan class=\"pun\">{\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L7\">\u003Ccode>\u003Cspan class=\"pln\">try_files $uri&nbsp;\u003C/span>\u003Cspan class=\"pun\">=\u003C/span>\u003Cspan class=\"lit\">404\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L8\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_pass unix\u003C/span>\u003Cspan class=\"pun\">:\u003C/span>\u003Cspan class=\"str\">/var/\u003C/span>\u003Cspan class=\"pln\">run\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">hhvm\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">sock\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L9\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_index index\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">php\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"pln\">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"kwd\">include\u003C/span>\u003Cspan class=\"pln\">&nbsp;fastcgi_params\u003C/span>\u003Cspan class=\"pun\">;\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L2\">\u003Ccode>}\u003C/code>\u003C/li>\u003Cli class=\"L3\">\u003Ccode>}\u003C/code>\u003C/li>\u003C/ol>\u003Cp>保存并退出。\u003C/p>\u003Cp>在这个虚拟主机配置文件中，我们定义该域名的 Web 根目录为&nbsp;\u003Ccode>/var/www/html\u003C/code>。目前该目录还不存在，所有我们要创建它，并变更属主为 nginx 用户和组。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">mkdir\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">p&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">www\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">html\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">chown\u003C/span>&nbsp;\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">R nginx\u003C/span>\u003Cspan class=\"pun\">:\u003C/span>\u003Cspan class=\"pln\">nginx&nbsp;\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"kwd\">var\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">www\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">html\u003C/span>\u003C/code>\u003C/li>\u003Cli># vim /var/www/html/phpinfo.php\u003C/li>\u003C/ol>\u003Cp>接下来，为该文件和目录配置 SELinux 上下文。\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;semanage fcontext&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">a&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">t&nbsp;\u003C/span>\u003Cspan class=\"typ\">httpd_config_t\u003C/span>&nbsp;\u003Cspan class=\"str\">\"/etc/nginx/conf.d(/.*)?\"\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;restorecon&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"typ\">Rv\u003C/span>&nbsp;\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">etc\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">nginx\u003C/span>\u003Cspan class=\"pun\">/\u003C/span>\u003Cspan class=\"pln\">conf\u003C/span>\u003Cspan class=\"pun\">.\u003C/span>\u003Cspan class=\"pln\">d\u003C/span>\u003C/code>\u003C/li>\u003C/ol>\u003Cp>最后，测试 nginx 配置文件以确保没有错误后，重启 nginx：\u003C/p>\u003Col class=\"linenums\">\u003Cli class=\"L0\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>\u003Cspan class=\"pln\">&nbsp;nginx&nbsp;\u003C/span>\u003Cspan class=\"pun\">-\u003C/span>\u003Cspan class=\"pln\">t\u003C/span>\u003C/code>\u003C/li>\u003Cli class=\"L1\">\u003Ccode>\u003Cspan class=\"com\">#\u003C/span>&nbsp;\u003Cspan class=\"kwd\">systemctl\u003C/span>\u003Cspan class=\"pln\">&nbsp;restart nginx\u003C/span>\u003C/code>\u003C/li>\u003Cli>\u003C/li>\u003C/ol>\u003C/div>","HHVM （HipHop Virtual Machine） 是一个用于执行以 PHP 和 Hack 语言编写的代码的虚拟环境。它是由 Facebook 开发的，提供了当前 PHP 7 的大多数功能。要在你的服务器上运行 HHVM，你需要使用 FastCGI 来将 HHVM 和 Nginx 或 Apache 衔接起来，或者你也可以使用 HHVM 中的内置 Web 服务器 Proxygen。\n\n在这篇教程中，我将展示给你如何在 Nginx Web 服务器的 HHVM 上安装 phpinfo。这里我使用 CentOS 7 作为操作系统，所以你需要懂一点 CentOS 操作的基础。\n\n**先决条件**\n\n- CentOS 7 – 64位\n- Root 权限\n\n### 步骤 1 – 配置 SELinux 并添加 EPEL 仓库\n\n在本教程中，我们将使用 SELinux 的强制模式，所以我们需要在系统上安装一个 SELinux 管理工具。这里我们使用 `setools` 和 `setrobleshoot` 来管理 SELinux 的各项配置。\n\nCentOS 7 已经默认启用 SELinux，我们可以通过以下命令来确认：\n\n1. # sestatus\n2. # getenforce\n\n![31.png](/uploads/layedit/20181022/e129f54b9fe0993b521827232d1fc3e6.png)\n\n*验证 SELinux 运行状态*\n\n如图，你能够看到，SELinux 已经开启了强制模式。\n\n接下来就是使用 `yum` 来安装 `setools` 和 `setroubleshoot` 了。\n\n1. # yum -y install setroubleshoot setools net-tools\n\n安装好这两个后，再安装 EPEL 仓库。\n\n1. # yum -y install epel-release\n\n### 步骤 2 – 安装 Nginx\n\nNginx (发音：engine-x) 是一个高性能、低内存消耗的轻量级 Web 服务器软件。在 CentOS 中可以使用 `yum`命令来安装 Nginx 包。确保你以 root 用户登录系统。\n\n使用 `yum` 命令从 CentOS 仓库中安装 nginx。\n\n1. # yum -y install nginx\n\n现在可以使用 `systemctl` 命令来启动 Nginx，同时将其设置为跟随系统启动。\n\n1. # systemctl start nginx\n2. # systemctl enable nginx\n\n为确保 Nginx 已经正确运行于服务器中，在浏览器上输入服务器的 IP，或者如下使用 `curl` 命令检查显示结果。\n\n1. # curl 192.168.1.110\n\n我这里使用浏览器来验证。\n\n![32.png](/uploads/layedit/20181022/3c98e999240695baa9c0945ea7b02a3c.png)\n\n*Nginx 正确运行*\n\n \n\n### 步骤 3 – 安装 HHVM\n\n对于 HHVM，我们需要安装大量的依赖项。作为选择，你可以从 GitHub 下载 HHVM 的源码来编译安装，也可以从网络上获取预编译的包进行安装。在本教程中，我使用的是预编译的安装包。\n\n为 HHVM 安装依赖项：\n\n1. # yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \\\n2. > {ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \\\n3. > lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \\\n4. > {unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \\\n5. > glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \\\n6. > mariadb mariadb-server libc-client make\n\n然后是使用 `rpm` 安装从 [HHVM 预编译包镜像站点](http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/) 下载的 HHVM 预编译包。\n\n1. # rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.3-1.el7.centos.x86_64.rpm \n2. # ln -s /usr/local/bin/hhvm /bin/hhvm\n\n安装好 HHVM 之后使用如下命令按了验证：\n\n1. # hhvm --version\n\n为了能使用 PHP 命令，可以把 `hhvm` 命令设置为 `php`。这样在 shell 中输入 `php` 命令的时候，你会看到和输入 `hhvm` 命令一样的结果。\n\n1. # sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60\n2. # php --version\n\n![33.png](/uploads/layedit/20181022/ea97d77fb9c9573b29ea99963096d5ac.png)\n\n*安装 HHVM*\n\n### 步骤 4 – 配置 HHVM\n\n这一步中，我们来配置 HHVM 以系统服务来运行。我们不通过端口这种常规的方式来运行它，而是选择使用 unix socket 文件的方式，这样运行的更快速一点。\n\n进入 systemd 配置目录，并创建一个 `hhvm.service` 文件。\n\n1. # cd /etc/systemd/system/\n2. # vim hhvm.service\n\n复制粘贴如下配置到文件中去。\n\n1. [Unit]\n2. Description=HHVM HipHop Virtual Machine (FCGI)\n3. After=network.target nginx.service mariadb.service\n4.\n5. [Service]\n6. ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock\n7.\n8. [Install]\n9. WantedBy=multi-user.target\n\n保存文件退出 vim。\n\n接下来，进入 `hhvm` 目录并编辑 `server.ini` 文件。\n\n1. # cd /etc/hhvm/\n2. # vim server.ini\n\n将第 7 行 `hhvm.server.port` 替换为 unix socket，如下：\n\n1. hhvm.server.file_socket = /var/run/hhvm/hhvm.sock\n\n保存文件并退出编辑器。\n\n我们已在 hhvm 服务文件中定义了 hhvm 以 `nginx` 用户身份运行，所以还需要把 socket 文件目录的属主变更为 `nginx`。然后我们还必须在 SELinux 中修改 hhvm 目录的权限上下文以便让它可以访问这个 socket 文件。\n\n1. # chown -R nginx:nginx /var/run/hhvm/\n2. # semanage fcontext -a -t httpd_var_run_t \"/var/run/hhvm(/.*)?\"\n3. # restorecon -Rv /var/run/hhvm\n\n服务器重启之后，hhvm 将不能运行，因为没有存储 socket 文件的目录，所有还必须在启动的时候自动创建一个。\n\n使用 vim 编辑 `rc.local` 文件。\n\n1. # vim /etc/rc.local\n\n将以下配置粘贴到文件末行。\n\n1. # mkdir -p /var/run/hhvm/\n2. # chown -R nginx:nginx /var/run/hhvm/\n3. # semanage fcontext -a -t httpd_var_run_t \"/var/run/hhvm(/.*)?\"\n4. # restorecon -Rv /var/run/hhvm\n\n保存文件并退出 vim。然后给文件赋予执行权限。\n\n1. # chmod +x /etc/rc.local\n\n重新加载 systemd 服务，启动 hhvm 并设置为随系统启动。\n\n1. # systemctl daemon-reload\n2. # systemctl start hhvm\n3. # systemctl enable hhvm\n\n要确保无误，使用 `netstat` 命令验证 hhvm 运行于 socket 文件。\n\n1. # netstat -pl | grep hhvm\n\n![34.png](/uploads/layedit/20181022/a33762de9ebc001d012ca90e8c81fdb5.png)\n\n*Check the HHVM socket file*\n\n### 步骤 5 – 配置 HHVM 和 Nginx\n\n在这个步骤中，我们将配置 HHVM 已让它运行在 Nginx Web 服务中，这需要在 Nginx 目录创建一个 hhvm 的配置文件。\n\n进入 `/etc/nginx` 目录，创建 `hhvm.conf` 文件。\n\n1. # cd /etc/nginx/\n2. # vim hhvm.conf\n\n粘贴以下内容到文件中。\n\n1. location ~ \\.(hh|php)$ {\n2. root /usr/share/nginx/html;\n3. fastcgi_keep_conn on;\n4. fastcgi_pass unix:/var/run/hhvm/hhvm.sock;\n5. fastcgi_index index.php;\n6. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n7. include fastcgi_params;\n8. }\n\n然后，保存并退出。\n\n接下来，编辑 `nginx.conf` 文件，添加 hhvm 配置文件到 `include` 行。\n\n1. # vim nginx.conf\n\n添加配置到第 57 行的 `server` 指令中。\n\n1. include /etc/nginx/hhvm.conf;\n\n保存并退出。\n\n然后修改 SELinux 中关于 hhvm 配置文件的权限上下文。\n\n1. # semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf\n2. # restorecon -v /etc/nginx/hhvm.conf\n\n测试 Nginx 配置并重启服务。\n\n1. # nginx -t\n2. # systemctl restart nginx\n\n记住确保测试配置没有错误。\n\n### 步骤 6 – 通过 HHVM 和 Nginx 创建虚拟主机\n\n在这一步中，我们要为 Nginx 和 hhvm 创建一个新的虚拟主机配置文件。这里我使用域名 `zhl123.com` 来作为例子，你可以使用你主机喜欢的域名，并在配置文件中相应位置以及 phpinfo 安装过程中进行替换。\n\n进入 nginx 的 `conf.d` 目录，我们将在该目录存储虚拟主机文件。\n\n1. # cd /etc/nginx/conf.d/\n\n使用 vim 创建一个名为 `vps.conf` 的配置文件。\n\n1. # vim vps.conf\n\n粘贴以下内容到虚拟主机配置文件中。\n\n1. server {\n2. listen 80;\n3. server_name zhl123.com;\n4.\n5. # note that these lines are originally from the \"location /\" block\n6. root /var/www/html;\n7. index index.php index.html index.htm;\n8.\n9. location / {\n10. try_files $uri $uri/ =404;\n11. }\n12. error_page 404 /404.html;\n13. location = /50x.html {\n14. root /var/www/html;\n15. }\n16.\n17. location ~ \\.php$ {\n18. try_files $uri =404;\n19. fastcgi_pass unix:/var/run/hhvm/hhvm.sock;\n20. fastcgi_index index.php;\n21. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n22. include fastcgi_params;\n23. }\n24. }\n\n保存并退出。\n\n在这个虚拟主机配置文件中，我们定义该域名的 Web 根目录为 `/var/www/html`。目前该目录还不存在，所有我们要创建它，并变更属主为 nginx 用户和组。\n\n1. # mkdir -p /var/www/html\n2. # chown -R nginx:nginx /var/www/html\n3. # vim /var/www/html/phpinfo.php\n\n接下来，为该文件和目录配置 SELinux 上下文。\n\n1. # semanage fcontext -a -t httpd_config_t \"/etc/nginx/conf.d(/.*)?\"\n2. # restorecon -Rv /etc/nginx/conf.d\n\n最后，测试 nginx 配置文件以确保没有错误后，重启 nginx：\n\n1. # nginx -t\n2. # systemctl restart nginx\n3.","/article/66",4667,"2018-05-22 14:01:39","2018-10-22 14:04:42",[156,157,158],{"id":39,"name":81,"url":82},{"id":44,"name":23,"url":59},{"id":145,"name":146,"url":151},{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"title":161,"url":162},"网络监控smokeping","/article/67",{"title":164,"url":165},"网络性能测试工具Iperf/Jperf","/article/65",[167,168,169,170],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"description":148,"keywords":147,"title":146},[173,182,191,200,209,218,227,236,245,253],{"id":174,"category_id":44,"title":175,"keywords":176,"description":177,"image_url":6,"url":178,"hits":179,"is_recommend":73,"is_top":73,"create_time":180,"update_time":181},101,"开启 HTTPS 并获得 ssllabs 满分的过程","开启,获得,满分,过程","准备工作确保你要申请证书的域名都解析到了这台服务器上，且能直接通过域名访问。使用官网推荐的CertBot获取证书。在CertBot官网选择一下环境(比如我选Nginx on Ubuntu 17.04)就可以看到入门教程了。安装CertBot12345apt-get updateapt-get install software-properties-commonadd-apt-repository ppa:certbot/certbotapt-get updateapt-get","/article/101",18546,"2019-11-26 16:12:11","2019-11-26 16:23:16",{"id":183,"category_id":44,"title":184,"keywords":185,"description":186,"image_url":6,"url":187,"hits":188,"is_recommend":73,"is_top":73,"create_time":189,"update_time":190},113,"在CentOS 7中添加命令自动补全功能","命令自动补全,centos","在CentOS 7中，默认情况下并不会安装命令补全包，需要手动安装才能使用命令补全功能。以下是在CentOS 7中安装命令补全包的方法：1. bash-completion：这是一个针对Bash shell的命令补全软件包，可以提供对系统命令、用户自定义命令和文件路径的自动补全功能。可以通过以下命令安装：```sudo yum install bash-completion```安装完成后，需要在/etc/profile配置文件中添加以下内容：```if [ -f /etc/bash_compl","/article/113",14948,"2023-05-16 10:54:01","2023-05-16 10:57:28",{"id":192,"category_id":44,"title":193,"keywords":194,"description":195,"image_url":6,"url":196,"hits":197,"is_recommend":53,"is_top":73,"create_time":198,"update_time":199},94,"Centos7 安装 openvas ","openvas,开放式漏洞评估系统，installing openvas centos-7","一、描述OpenVAS，即开放式漏洞评估系统，是一个用于评估目标漏洞的杰出框架。功能十分强大，最重要的是，它是“开源”的——就是免费的意思啦～它与著名的Nessus“本是同根生”，在Nessus商业化之后仍然坚持开源，号称“当前最好用的开源漏洞扫描工具”。最新版的Kali Linux(kali 3.0)不再自带OpenVAS了，所以我们要自己部署OpenVAS漏洞检测系统。其核心部件是一个服务器，包括一套网络漏洞测试程序，可以检测远程系统和应用程序中的安全问题。但是它的最常用用途是检测目标网络或","/article/94",14690,"2019-01-14 17:43:42","2019-01-14 18:16:36",{"id":201,"category_id":44,"title":202,"keywords":203,"description":204,"image_url":6,"url":205,"hits":206,"is_recommend":73,"is_top":73,"create_time":207,"update_time":208},99,"Centos7 利用iptables防止nmap工具防端口扫描","iptables","一、Nmap介绍       Nmap（NetworkMapper）是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口，还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多扫描技术，例如：UDP、TCPconnect()、TCPSYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(XmasTree)、SYN扫描和null扫描。Nmap最初是用于Unix系统","/article/99",14415,"2019-07-09 21:27:00","2019-07-09 21:57:53",{"id":210,"category_id":46,"title":211,"keywords":212,"description":213,"image_url":6,"url":214,"hits":215,"is_recommend":73,"is_top":73,"create_time":216,"update_time":217},61,"Docker 推荐的启动方式","推荐,启动,方式","# cat DockerfileFROM openjdk:8-alpineWORKDIR /ADD ./target/*.jar app.jarEXPOSE 9999COPY docker-entrypoint.sh /RUN chmod +x /docker-entrypoint.shENTRYPOINT [“/docker-entrypoint.sh”]CMD [“java”,”-server”,”-Duser.timezone=GMT+08″,”-jar”,”/app.jar”]# cat","/article/61",14347,"2018-10-22 13:55:47","2018-10-22 13:56:10",{"id":219,"category_id":44,"title":220,"keywords":221,"description":222,"image_url":6,"url":223,"hits":224,"is_recommend":73,"is_top":73,"create_time":225,"update_time":226},107,"Acme.sh 给 SSL 证书自动续期失败的解决方法","HTTP/1.1 200 OK,Server: Bayou Tech Web Srv 1.0,Content-Encoding: none,Content-Length: 5,Content-Type","一、Acme.sh 自动续期失败的症状问题描述如下，续期的时候，提示如下错误：root@dc:~# \"/data/acme.sh\"/acme.sh --cron --home \"/data/acme.sh\" &gt; /dev/null[Sun Nov 10 23:52:17 CST 2020] Error, can not get domain token entry example.com[Sun Nov 10 23:52:17 CST 2020] Please check log file","/article/107",12618,"2021-09-03 10:44:18","2021-09-03 10:46:23",{"id":228,"category_id":44,"title":229,"keywords":230,"description":231,"image_url":6,"url":232,"hits":233,"is_recommend":53,"is_top":73,"create_time":234,"update_time":235},93,"ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台","Filebeat,Kafka","一、说明1.Filebeat是一个日志文件托运工具，在你的服务器上安装客户端后，filebeat会监控日志目录或者指定的日志文件，追踪读取这些文件（追踪文件的变化，不停的读）2.Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者规模的网站中的所有动作流数据3.Logstash是一根具备实时数据传输能力的管道，负责将数据信息从管道的输入端传输到管道的输出端；与此同时这根管道还可以让你根据自己的需求在中间加上滤网，Logstash提供里很多功能强大的滤网以满足你的各种应用场景4.El","/article/93",12190,"2018-12-24 16:40:08","2018-12-26 11:53:38",{"id":237,"category_id":46,"title":238,"keywords":239,"description":240,"image_url":6,"url":241,"hits":242,"is_recommend":53,"is_top":73,"create_time":243,"update_time":244},81,"kubernetes 1.12.1 高可用安装之部署Dashboard","安装Dashboard","创建Dashboard需要CoreDNS部署成功之后再安装Dashboard。[root@master01 ~]# wget https://zhl123.com/download/k8s/Dashboard.tgz[root@master01 ~]# tar xf Dashboard.tgz[root@master01 ~]# kubectl create -f Dashboard/[root@master01 Dashboard]# kubectl get svc -n kube-syste","/article/81",12037,"2018-10-26 09:54:41","2018-10-26 16:59:19",{"id":246,"category_id":44,"title":247,"keywords":6,"description":248,"image_url":6,"url":249,"hits":250,"is_recommend":73,"is_top":73,"create_time":251,"update_time":252},100,"用 Nginx 给 Cookie 增加 Secure 和 HttpOnly","在 nginx 的 location 中配置12# 只支持 proxy 模式下设置，SameSite 不需要可删除，如果想更安全可以把 SameSite 设置为 Strictproxy_cookie_path / \"/; httponly; secure; SameSite=Lax\";示例1234567891011121314151617181920212223242526server {    listen 443 ssl http2;    server_name www.zhl123.cn","/article/100",11848,"2019-11-26 16:10:57","2019-11-26 16:23:45",{"id":254,"category_id":44,"title":255,"keywords":256,"description":257,"image_url":6,"url":258,"hits":259,"is_recommend":73,"is_top":73,"create_time":260,"update_time":261},41,"Tomcat 安全配置与性能优化","tomcat，性能优化","1. JVM&nbsp;1.1. 使用 Server JRE 替代JDK。&nbsp;服务器上不要安装JDK，请使用 Server JRE. 服务器上根本不需要编译器，代码应该在Release服务器上完成编译打包工作。&nbsp;理由：一旦服务器被控制，可以防止在其服务器上编译其他恶意代码并植入到你的程序中。&nbsp;1.2. JAVA_OPTS&nbsp;export JAVA_OPTS=\"-server -Xms512m -Xmx4096m &nbsp;-XX:PermSize=64M -","/article/41",11623,"2016-09-01 17:06:36","2018-10-18 17:06:58",[263,271,279,287,295,303,311,319,328,337],{"id":264,"category_id":40,"title":265,"keywords":6,"description":266,"image_url":6,"url":267,"hits":268,"is_recommend":73,"is_top":73,"create_time":269,"update_time":270},123,"Agent Skill 精选集：最值得收藏的 Agent Skills Top 10","如果你正在用 Claude Code 或 Codex，一定对&nbsp;Agent Skills&nbsp;不陌生。通过安装&nbsp;Agent Skills，你可以让这些 AI 助手变得更强——不用每次都解释你的需求，它们直接就知道该怎么做。最近有人在 GitHub 上做了一个采样调查，统计了哪些 Skills 的质量最佳和最受欢迎。我整理了这份&nbsp;Top 10 榜单，加上使用场景和适合人群，帮你快速找到最有用的那几个。Top 10 最受欢迎的 Agent Skills1. Skil","/article/123",270,"2026-01-19 18:49:12","2026-01-19 18:52:01",{"id":272,"category_id":44,"title":273,"keywords":6,"description":274,"image_url":6,"url":275,"hits":276,"is_recommend":73,"is_top":73,"create_time":277,"update_time":278},122,"Nginx性能调优18条黄金法则：支撑10万并发的配置模板","一、概述1.1 背景介绍说实话，Nginx调优这事儿我踩过无数坑。记得2019年双11，我们电商平台流量暴涨，Nginx直接扛不住了，QPS从平时的2万飙升到8万，响应时间从50ms飙到了2秒，最后还是靠临时加机器扛过去的。那次事故之后，我花了大半年时间专门研究Nginx的性能极限，总结出了这20条黄金法则。Nginx作为目前最流行的Web服务器和反向代理，官方数据显示单机可以轻松处理10万+的并发连接。但实际生产环境中，很多同学拿到默认配置就直接上了，结果发现连1万并发都扛不住。问题不在Ngi","/article/122",337,"2026-01-12 11:11:50","2026-01-12 11:12:28",{"id":280,"category_id":46,"title":281,"keywords":6,"description":282,"image_url":6,"url":283,"hits":284,"is_recommend":73,"is_top":73,"create_time":285,"update_time":286},121,"Docker 镜像优化与安全扫描：将镜像体积压缩 70%","1. 适用场景 & 前置条件项目要求适用场景容器化应用镜像体积过大（> 500MB），构建时间长（> 10分钟），存在安全漏洞（CVE高危）OSRHEL/CentOS 7.9+ 或 Ubuntu 20.04+内核Linux Kernel 3.10+软件版本Docker 20.10+ 或 Podman 3.0+，Trivy 0.40+（安全扫描工具）资源规格2C4G（最小）/ 4C8G（推荐），磁盘 50GB+（存储镜像与缓存）网络可访问 Docker Hub/阿里云镜像仓库（","/article/121",309,"2026-01-06 11:54:35","2026-01-06 12:01:59",{"id":288,"category_id":44,"title":289,"keywords":6,"description":290,"image_url":6,"url":291,"hits":292,"is_recommend":73,"is_top":73,"create_time":293,"update_time":294},120,"用 Prometheus Recording Rules 把告警噪声砍掉 70%(二)","五、故障排查和监控5.1 故障排查◆ 5.1.1 日志查看# 查看 Prometheus 日志中的规则评估错误journalctl -u prometheus | grep -i&nbsp;\"rule\"&nbsp;|&nbsp;tail&nbsp;-50# 查看规则评估耗时curl -s http://localhost:9090/api/v1/rules | jq&nbsp;'.data.groups[].rules[] | select(.health != \"ok\")'# Kubernet","/article/120",282,"2026-01-06 11:53:50","2026-01-06 11:54:33",{"id":296,"category_id":44,"title":297,"keywords":6,"description":298,"image_url":6,"url":299,"hits":300,"is_recommend":73,"is_top":73,"create_time":301,"update_time":302},119,"用 Prometheus Recording Rules 把告警噪声砍掉 70%(一)","一、概述1.1 背景介绍在大规模微服务架构下，Prometheus 告警系统往往会陷入一个尴尬的境地：告警太多，运维团队开始选择性忽略；告警太少，真正的故障又可能漏掉。我在某电商平台负责监控体系建设时，团队每天要处理超过 2000 条告警，其中 70% 以上是重复的、关联的或者短暂抖动产生的噪声。Recording Rules 是 Prometheus 提供的预计算机制，可以将复杂的查询表达式预先计算并存储为新的时间序列。通过合理设计 Recording Rules，我们不仅能显著降低 Prom","/article/119",301,"2026-01-06 11:51:58","2026-01-06 11:53:45",{"id":304,"category_id":44,"title":305,"keywords":6,"description":306,"image_url":6,"url":307,"hits":308,"is_recommend":73,"is_top":73,"create_time":309,"update_time":310},118,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(二)","四、最佳实践和注意事项4.1 最佳实践4.1.1 性能优化优化点一：减少 Git 轮询频率# argocd-cm ConfigMapapiVersion:&nbsp;v1kind:&nbsp;ConfigMapmetadata:&nbsp;&nbsp;name:&nbsp;argocd-cm&nbsp;&nbsp;namespace:&nbsp;argocddata:&nbsp;&nbsp;timeout.reconciliation:&nbsp;300s&nbsp;&nbsp;# 默认 180","/article/118",305,"2026-01-06 11:49:00","2026-01-06 11:49:34",{"id":312,"category_id":44,"title":313,"keywords":6,"description":314,"image_url":6,"url":315,"hits":316,"is_recommend":73,"is_top":73,"create_time":317,"update_time":318},117,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(一)","一、概述1.1 背景介绍GitOps 作为云原生时代的运维范式，将 Git 作为基础设施和应用配置的单一事实来源，通过声明式配置和自动化同步机制，实现了配置管理的版本控制、审计追溯和快速回滚。ArgoCD 作为 CNCF 毕业项目，提供了完整的 GitOps 工作流，支持多集群管理、RBAC 权限控制、SSO 集成等企业级特性。结合 Kustomize 的配置管理能力，能够优雅地解决多环境配置差异、敏感信息管理、配置复用等问题。在传统的 CI/CD 流程中，往往由 CI 工具直接执行 kubec","/article/117",310,"2026-01-06 11:45:03","2026-01-06 11:48:56",{"id":320,"category_id":40,"title":321,"keywords":322,"description":323,"image_url":6,"url":324,"hits":325,"is_recommend":73,"is_top":73,"create_time":326,"update_time":327},116,"运维部门年度2025工作总结与2026工作规划应该如何写？","运维部门年度2025工作总结,2026工作规划","2025年，运维部在公司“数字化转型深化”战略引领下，以“稳定为基、效率为纲、安全为盾、创新为翼”为核心导向，全面支撑核心业务系统运行、推动技术架构迭代、强化团队能力建设。 全年实现核心业务系统可用性99.985%，较2024年提升0.02个百分点；故障平均恢复时间（MTTR）从42分钟压缩至29分钟，下降31%；云资源成本同比降低16.8%，自动化运维覆盖率从65%提升至83%，未发生重大生产安全事故，圆满完成年度目标。现将全年工作及2026年规划汇报如下：2025年核心工作成果（数","/article/116",297,"2026-01-06 11:20:58","2026-01-06 11:44:04",{"id":329,"category_id":40,"title":330,"keywords":331,"description":332,"image_url":6,"url":333,"hits":334,"is_recommend":73,"is_top":73,"create_time":335,"update_time":336},115,"Kubernetes 100个常用命令","100 个 Kubectl 命令","这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令，这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于：•&nbsp;集群信息•&nbsp;Pod 诊断•&nbsp;服务诊断•&nbsp;部署诊断•&nbsp;网络诊断•&nbsp;持久卷和持久卷声明诊断•&nbsp;资源使用情况•&nbsp;安全和授权•&nbsp;节点故障排除•&nbsp;其他诊断命令：文章还提到了许多其他命令，如资源扩展和自动扩","/article/115",3642,"2023-11-02 14:09:30","2023-11-02 14:10:05",{"id":183,"category_id":44,"title":184,"keywords":185,"description":186,"image_url":6,"url":187,"hits":188,"is_recommend":73,"is_top":73,"create_time":189,"update_time":190},1784716029256]