整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

蓝易云 - LNMP网站框架搭建(编译安装)

蓝易云 - LNMP网站框架搭建(编译安装)

NMP(Linux + Nginx + MySQL + PHP)编译安装详解

LNMP是一种常见的网站框架,由Linux、Nginx、MySQL和PHP组成。本指南将详细介绍如何通过编译安装各组件,搭建LNMP环境。

云服务器,高防服务器就选蓝易云,头条搜索:蓝易云


安装Linux操作系统

  1. 下载并安装Linux发行版选择适合你的Linux发行版,如Ubuntu、CentOS等。按照安装指南完成操作系统的安装。

安装Nginx

  1. 安装编译Nginx所需的依赖库
  2. sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
  3. 下载Nginx源码包
  4. wget http://nginx.org/download/nginx-1.20.1.tar.gz # 替换为最新版本号
  5. 解压源码包
  6. tar -zxvf nginx-1.20.1.tar.gz
  7. 进入解压后的目录
  8. cd nginx-1.20.1
  9. 执行配置命令
  10. ./configure
  11. 编译并安装Nginx
  12. make sudo make install
  13. 验证Nginx是否安装成功
  14. /usr/local/nginx/sbin/nginx -v

安装MySQL

  1. 安装MySQL服务器
  2. sudo apt update sudo apt install mysql-server
  3. 配置MySQL
  4. 在安装过程中会提示设置root用户密码,按照提示操作。

安装PHP

  1. 安装编译PHP所需的依赖库
  2. sudo apt install build-essential libxml2 libxml2-dev bzip2 libbz2-dev libpng-dev libjpeg-dev libonig-dev libzip-dev libcurl4-openssl-dev libssl-dev
  3. 下载PHP源码包
  4. wget http://php.net/get/php-8.0.11.tar.gz/from/this/mirror -O php-8.0.11.tar.gz # 替换为最新版本号
  5. 解压源码包
  6. tar -zxvf php-8.0.11.tar.gz
  7. 进入解压后的目录
  8. cd php-8.0.11
  9. 执行配置命令(可以根据需要自定义配置)
  10. ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir --enable-xml --enable-fpm --enable-mbstring --enable-gd-jis-conv
  11. 编译并安装PHP
  12. make sudo make install
  13. 复制PHP配置文件
  14. sudo cp php.ini-development /usr/local/php/etc/php.ini
  15. 复制PHP-FPM配置文件
  16. sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  17. 启动PHP-FPM服务
  18. sudo /usr/local/php/sbin/php-fpm

配置Nginx与PHP

  1. 打开Nginx配置文件
  2. sudo nano /usr/local/nginx/conf/nginx.conf
  3. 在http块中添加以下内容来配置PHP解析
  4. server { listen 80; server_name your_domain.com; root /path/to/your/web/root; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
  5. 将 your_domain.com 替换为你的域名或IP地址。
  6. 将 /path/to/your/web/root 替换为你的网站根目录路径。
  7. 保存并关闭文件
  8. 重启Nginx
  9. sudo /usr/local/nginx/sbin/nginx -s reload

总结与进一步配置

到这里,你已经成功搭建了LNMP网站框架。你可以将网站文件放置在指定的网站根目录中,并访问你的域名或IP地址来查看网站。

分析说明表

步骤

描述

安装Linux操作系统

选择并安装适合的Linux发行版,如Ubuntu或CentOS。

安装Nginx

下载并编译Nginx源码,安装所需的依赖库,配置并安装Nginx。

安装MySQL

使用包管理器安装MySQL服务器,配置root用户密码。

安装PHP

下载并编译PHP源码,安装所需的依赖库,配置并安装PHP及PHP-FPM。

配置Nginx与PHP

修改Nginx配置文件,配置PHP解析,设置网站根目录及服务器名称,重启Nginx服务。

思维导图

LNMP安装流程

安装Linux操作系统

安装Nginx

安装MySQL

安装PHP

安装依赖库

下载Nginx源码

解压源码包

配置和安装

安装依赖库

下载PHP源码

解压源码包

配置和安装

配置Nginx与PHP

进一步配置和安全性调整

  1. 配置防火墙:确保只开放必要的端口(如80和443)。
  2. SSL/TLS配置:为Nginx配置SSL证书,提高网站的安全性。
  3. PHP安全配置:修改 php.ini 文件,禁用危险的PHP函数,配置PHP错误日志等。

通过上述步骤,你不仅搭建了一个基本的LNMP环境,还可以根据实际需求进行进一步的配置和优化,以确保网站的安全性和性能。希望这篇指南能够帮助你顺利完成LNMP环境的搭建。

、kindeditor安装

  • 普通使用

下载编辑器kindeditor最新版本

解压文件,然后将所有文件上传到工程目录下,具体目录视不同框架而定

在html页面引入以下js文件,路径需要修改为自己的路径,保证文件能正常加载

 <script charset="utf-8" src="/editor/kindeditor.js"></script>
 <script charset="utf-8" src="/editor/lang/zh-CN.js"></script>

在页面需要的部分加入textarea控件,注意:id需要唯一

 <textarea id="editor_id" name="content" style="width:700px;height:300px;">
 这里写入内容
 </textarea>

最后需要增加以下js代码,用于初始化控件

 <script>
 //简单模式初始化
 var editor;
 var options={};
 KindEditor.ready(function(K) {
 editor=K.create('#editor_id', options);
 });
 </script>

注意:

第一个参数为css选择器,一次只能初始化一个textarea元素。

options为编辑器的配置项,具体参数请参考官网

  • rails安装

安装过程非常简单,首先在Gemfile

 gem 'rails_kindeditor'
 bundle install

然后执行命令生成相关文件

 rails g rails_kindeditor:install

修改配置文件参数config/initializers/rails_kindeditor.rb,例如文件上传路径,上传文件类型等

 RailsKindeditor.setup do |config|
 # Specify the subfolders in public directory.
 # You can customize it , eg: config.upload_dir='this/is/my/folder'
 config.upload_dir='uploads'
 # Allowed file types for upload.
 config.upload_image_ext=%w[gif jpg jpeg png bmp]
 config.upload_flash_ext=%w[swf flv]
 config.upload_media_ext=%w[swf flv mp3 wav wma wmv mid avi mpg asf rm rmvb]
 config.upload_file_ext=%w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
 
 # Porcess upload image size
 # eg: 1600x1600=> 800x800
 # 1600x800=> 800x400
 # 400x400=> 400x400 # No Change
 # config.image_resize_to_limit=[800, 800]
 # if you have config in your rails application like this:
 # /config/enviroments/production.rb
 # # config.action_controller.asset_host="http://asset.example.com"
 # # config.assets.prefix="assets_prefx"
 # then you should:
 #
 # config.asset_url_prefix="http://asset.example.com/assets_prefx/" if Rails.env.production?
 end

在view中嵌入编辑器

 <%=kindeditor_tag :content,"这里是默认内容" %>

然后编辑器就可以使用,如图:

二、填坑

  • 获取文本框内容

当表单提交时会发现,提交的数据并没有获取到文本框中的内容,这是因为输入数据时并不能实时使textarea获取到文本内容,那么我们就需要在提交表单时手动赋值

 var editor=KindEditor.instances[0];
 editor.sync();

注意,此处KindEditor.instances获取到的是一个文本框数组,根据自己需要取值

  • 生产环境使用

rails生产环境都会使用production配置启动,首先需要编译资源文件

 RAILS_ENV=production rake assets:precompile

但是当编译完之后,会发现KindEditor的样式文件并没有获取到,这是因为KindEditor需要单独编译

 rails kindeditor:assets

这时public/assets下就出现了KindEditor需要的资源文件,KindEditor也可以正常使用。

天你可能已被“fake news”欺骗无数次,

所以我们带来了一条真实的愚人新闻。



而且这些文件的 MD5 都一样……这是什么魔法?

文 | 光谱

你可能听说过格式工厂,是一个给文件转格式的工具。

但今天,硅星人见识了一个十分厉害的东西:不但一个文件可以有六种格式,而且变出来的新文件 MD5 哈希值还和源文件一样……

需要声明,不是故意要发在四月一日欺骗大家的感情:下面提到的都是真的,并非愚人节玩笑。

我们来一步一步看。


黑客圈有本期刊叫做 PoC||GTFO,全名是 The International Journal of Proof of Concept or Get The Fuck Out(译为“国际概念证明或者滚蛋期刊”?),发表在上面的都是一些文件格式、逆向工程和黑客攻击方面杂七杂八的东西。期刊的发表方式为在线 pdf,免费传阅,鼓励镜像。

而最新的 PoC||GTFO 0x19 这一期也很有意思:它本身是一个 pocorgtfo19.pdf 文件,却可以手动修改扩展名,变成三个“完全不同”(as in 文件格式),却又“完全相同”(as in MD5)的文件。


这三个相同又不同的文件,扩展名分别为 .pdf .zip .html。你可以在 GitHub [1](点击“阅读原文”) 上下载这个文件(大约65MB),然后自己修改扩展名试试。如果你无法访问,硅星人也把文件传到了百度网盘上 [2]。

如果我们对这三个文件 .pdf .zip .html 进行 MD5 校验,会发现他们的 MD5 值完全一致——这并没什么的,因为不会对文件造成任何影响,理论上它们还是同一个文件(只是扩展名不同):


但它的好玩之处就在于,三个不同扩展名都可以正常工作,并且具备各自的意义。

如果你打开 .pdf 版本,就可以阅读这本期刊:


把扩展名改成 .zip,然后进行解压,会得到这一期 PoC||GTFO 所引用作品的原始文档:



最后我们把格式改成 .html,就可以在浏览器里打开了,会得到下面这样一个静态页面:


这还没完,更有趣的还在后面呢。这个页面上写的是:drop me here so that I can parse myself(把我拽到这个地方,这样我就能解析我自己了)。这又是什么意思?

因为你现在打开的是 .html 文件,所以正确的做法是把 .html 文件再拖回到上面那段字所在的地方:


这个 html 自己解析自己,居然又解出来了四个文件????

解出来四个新文件的分别为:图像 .png、微软可执行 .ex、视频 .mp4,以及和最初的 .pdf 完全相同的另一个 .pdf 文件)。

如果你再去对这四个新文件检查 MD5 值,可能世界观会崩塌:它们的 MD5 值跟原始的 .pdf 仍然一样。


而且你需要注意到:新出来的其中三个文件(.png .ex 和 .mp4)并不是从原文件直接改扩展名得到的,而是那个 .html 文件作为一个解析器,对自己进行解析,所得到的次生文件。

因为在 macOS 上,硅星人就不打开 .ex 文件了;如果我们打开 mp4 文件,会得到一段很短赛车视频:


在解析后的页面里,这个小玩意的作者如此解释:这个文件是一个 HTML,但同时它也是一个 PDF polyglot.

Polyglot 的字面意义是通晓多种语言。在计算机科学上,它描述的是多种计算机语言写在一个文件里得到的“杂交体”,可以被这些语言对应的编译器编译。

用普通程序员的话来讲,Polyglot 就是一个程序可以同时用 PDF 和 HTML 编译器通过。用人话翻译一遍,就是一个文件,它可以被当做图片、视频和文档打开,也可以当做可执行程序运行……

作者继续解释道:它不仅仅是一个 HTML 和 PDF 的 polyglot,还同时和另外四个文件(也就是刚才解析出的 .png .ex .mp4 和 .pdf)实现了 MD5 碰撞。

这究竟是什么魔法???

刚才我们还有一个文件没打开,也就是 .png。如果你用 Chrome 浏览器打开它,能看到下面这张图:


它其实描述的就是这个文件的结构。简单来说:对一个文件的编码“排版”进行刻意的修改,在里面同时加入 html、png、mp4、pe 的文件头 (header) 和内容。

基因学有个词叫做嵌合体,描述的是一个生物体同时拥有多套 DNA,体现出不同的特征。比如杂交,如果成功,得到的就是一种最典型的生物嵌合体。

而这个 html/pdf 文件,就像是计算机上的嵌合体。它看起来是一种文件,实际上还包含了其他多种文件的“特征”……

网友对这个小玩意给出了很高的评价:


无限接近魔法了Twitter @suburbsec



哈哈非常酷!向着 SHA-2 进发!Twitter @_unwriter



笑翻了。MD5 别着急,你到不是完全没用,只是变成梗了 :-)Twitter @037



小心这些碰撞的碎片(双关梗,碎片-弹片-弹壳-壳-shell)Twitter @dntlookbehindu

这个小玩意的主要作者是 Ange Albertini 和 Marc Stevens。

Albertini 是 PoC||GTFO 的编辑之一,以及期刊 GitHub“官方页面”的所有者。他在 Google 的瑞典苏黎世办公室担任安全工程师,在这个小玩意里主要负责逆向工程的工作。

Marc Stevens 为该项目提供了哈希碰撞方面的重要帮助。他在荷兰国家研究机构 CWI 从事加密科学研究,于2017年和 Google 合作首次完成了 SHA-1 碰撞破解,也就是著名的 SHAttered 事件。

前面提到,MD5 在多年前就被证明可以碰撞破解,但是碰撞起来很费时费力。而Albertini 和 Stevens 共同开发出了一个“一键脚本”,能够轻松实现两个(甚至更多)文件的 MD5 碰撞。

“碰撞任何两个文件多年前就实现了,问题是每次都需要几个小时,没有捷径。 我们在此提供一种技巧,面向特定文件格式和预先计算好的碰撞前缀,让碰撞即可完成。

这一技术的工作原理大致是这样的:通过预先计算,了解 JPG, PNG, PDF, MP4 这样的常用文件格式的 prefix(可以被理解为文件内容的“目录”)可以怎样兼容,然后在一个单独的文件 A 上做文章,使得 A 文件可以包含 b.jpg、c.png、d.pdf 和 e.mp4 四个不同文件的数据。

现在,这些研究者可以在 JPG, PNG, PDF, MP4, GIF 这些常用格式的文件之间快速实现碰撞——不仅他们可以,你也行。他们已经在 GitHub - corkami/Collision [3]上开源了这些技术,“git clone,运行,搞定。”Albertini 写道。

说实话这个技术没太多创造价值的用途……无非是 1)证明了 MD5 真的太不安全了,建议弃用;2)可以被用于黑客攻击。

安全研究员晨月举了一个哈希碰撞攻击的简单例子:“比方杀毒软件对可执行文件很严格,但有个 exe 文件伪装成了 jpg 文件,图片看起来也没什么问题,就被通过了,然后进入系统展开攻击。”(当然,现在的杀软也没那么傻,安全行业也一直对哈希碰撞保持高度关注。)

这种攻击造成的伤害,可能更多是社会意义上的。

比如,某政客的网站上有一段视频总结了他的政治理念和纲领,而黑客制作了一段哈希值和原视频完全相同,但意义完全相反的视频,再注入到网站上,让政客丢脸,使其失去选民的信任。

这样看的话,基于这一技术的黑客攻击就大有潜力了……


两个不同的视频,MD5 值一致[4]

这个小玩意的其他贡献者者还有 Rafa? Hirsz,他跟 Albertini 是同事,负责 JavaScript;Kurt Pfeifle,一位 PDF 文件/PostScript语言方面的专家,PDF Association 成员;Philippe Teuwen,比利时安全公司 QuarksLab 研究员,为项目提供文件格式帮助;以及 .mp4 视频的作者是 Gustavo Torres,一位独立视觉艺术家。

因为文件格式和哈希算法确实不是硅星人的专业,我们就不深入探讨了……

如果你感兴趣的话,可以下载 PoC||GTFO 的0x19期,然后自己动手该扩展名玩一玩,然后到 GitHub - corkami/Collision 上了解技术详情。

Have fun.

[1] https://github.com/angea/pocorgtfo/blob/master/releases/pocorgtfo19.pdf

[2] https://pan.baidu.com/s/1D4elZHUzg5vvzvfqLrgf4A 提取码: jx77

[3] https://github.com/corkami/collisions

[4] 视频1 https://github.com/corkami/collisions/blob/master/examples/collision1.mp4;视频2 https://github.com/corkami/collisions/blob/master/examples/collision2.mp4




喜欢这篇文章?

1)点击右下角的“好看”,让更多人看到这篇文章

2)分享到你的朋友圈和群里

3)赶快关注硅星人吧!

硅星人:(ID:guixingren123)

从科技到文化,从深度到段子,硅星人为你讲述关于硅谷的一切。