15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Linux服务器上建站指南

Linux服务器上建站指南

时间:2023-07-10 21:36:02 | 来源:网站运营

时间:2023-07-10 21:36:02 来源:网站运营

Linux服务器上建站指南:当年腾讯云做校园优惠的时候入手了每月一块钱的服务器,在Apache上搭了WordPress用来写博客。然而由于疏于维护,网站经常遭到攻击,动不动就死机。最近干脆重装了系统,打算从头建立一个注重安全的服务器。

腾讯云服务器有个安全组管理,负责处理入站和出站的流量,其默认拒绝所有流量。为了能用SSH连接服务器,并且在服务器上安装软件,这里出站选择全部放通,入站则暂时开放TCP:22端口。(与安全组相关的内容可参考:腾讯云安全组学习笔记 - 云+社区 - 腾讯云。)

搭建FTP服务器

FTP服务器可以在服务器与客户端间进行文件传输。尽管该协议是明文传输,用户名与密码有被窃取的风险,但因为其搭建简单,使用方便,想了想还是搭了一个。我选择的是比较主流的软件vsftpd,主要的任务就是修改/etc/vsftpd/vsftpd.conf这个文件,具体可参考鳥哥的 Linux 私房菜 -- 檔案伺服器之三: FTP 伺服器。

大概干了以下的事情:开放一个实体user给自己管理,享有ftp文件夹的全部权限;开放anonymous供下载;开启被动模式。

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).anonymous_enable=YES## Uncomment this to allow local users to log in.# When SELinux is enforcing check for SE bool ftp_home_dirlocal_enable=YES## Uncomment this to enable any form of FTP write command.write_enable=YES## below is some useful settingspasv_enable=YESpasv_max_port=65410pasv_min_port=65400然后安全组选择开放TCP:20,21,65400-65410入站,ftp就搭建完成了!输入命令systemctl restart vsftpd 启动!

搭建http服务器

搭建http服务器应该就是我们通常所说的建站,主流的服务器软件有两个:Apache和Nginx。我这里选择的是最近比较流行的Nginx+Lua构架的OpenResty。

这里我们根据官网安装OpenResty,并参考教程《OpenResty 最佳实践》使用OpenResty写一个hello world程序。

首先创建一个带家目录的系统帐号:

useradd www -m -r网站的主要文件将存放于/home/www目录下,该账号不能登录Bash,也没有管理员权限,这样即使网站被攻破了也不影响服务器的其它服务。

下面我们编写~/openresty-test/conf/nginx.conf文件,提供静态文件服务:

worker_processes 1; #nginx worker 数量error_log logs/error.log; #指定错误日志文件路径events { worker_connections 1024;}http { server { #监听端口,若你的80端口已经被占用,则需要修改 listen 80; # processes requests ending with the slash character # using an index file causes an internal redirect # a “/” request will actually be processed # in the second location as “/index.html”. location = / { root static; index index.html; } location ~ /.(html|txt|ico)$ { content_by_lua_block { local file, err = io.open(ngx.config.prefix() .. "static" .. ngx.var.uri, "r") if not file then ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE) end ngx.print(file:read("*a")) file:close() } } location / { content_by_lua_block { ngx.exit(ngx.HTTP_BAD_REQUEST) } } }}事实上,本身Nginx就提供了很好的静态文件的处理功能。但我们这里用content_by_lua_block模块代替Nginx输出响应体则可以做到更加灵活地处理请求。例如当找不到目标文件时,Nginx默认会返回404并在日志中记录该错误,我们在这里则可以有更多的处理。

在启动Nginx前,我们需要添加环境变量:

export PATH=/usr/local/openresty/bin:/usr/local/openresty/nginx/sbin:$PATH以及允许普通用户启动Nginx时使用1024以下的端口:

setcap cap_net_bind_service+eip /usr/local/openresty/nginx/sbin/nginx重启之后就可以启动Nginx服务了:

nginx -p ~/openresty-test如果修改了配置文件,可以执行重装载命令使用新的配置:

nginx -p ~/openresty-test -s reload使用ps命令可以查看Nginx进程:

ps -ef | grep nginx使用kill结束Nginx进程:

kill -QUIT $( cat ~/openresty-test/logs/nginx.pid )

OpenResty的特点

最后我摘取《OpenResty 最佳实践》的部分内容,帮助大家更好地理解OpenResty 是干什么的。OpenResty其实最早是Nginx的一个Lua模块,它能使我们通过Lua语言更方便地配置Nginx。

OpenResty 处理一个请求的流程可以参考下图:

它主要包含了以下阶段:

  1. set_by_lua*:流程分支处理判断变量初始化
  2. rewrite_by_lua*:转发、重定向、缓存等功能(例如特定请求代理到外网)
  3. access_by_lua*:IP 准入、接口权限等情况集中处理(例如配合 iptable 完成简单防火墙)
  4. content_by_lua*:内容生成
  5. header_filter_by_lua*:响应头部过滤处理(例如添加头部信息)
  6. body_filter_by_lua*:响应体过滤处理(例如完成应答内容统一成大写)
  7. log_by_lua*:会话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)
这几个阶段的存在,应该是 OpenResty 不同于其他多数 Web 平台编程的最明显特征了。由于 Nginx 把一个请求分成了很多阶段,这样第三方模块就可以根据自己行为,挂载到不同阶段进行处理达到目的。OpenResty 也应用了同样的特性。所不同的是,OpenResty 挂载的是我们编写的 Lua 代码。这样我们就可以根据我们的需要,在不同的阶段直接完成大部分典型处理了。

在这篇文章的配置中,我们只使用其中一个阶段 content_by_lua*。理论上靠这个阶段也可以完成所有的处理。但这样做,会让我们的代码比较臃肿,越到后期越发难以维护。把我们的逻辑放在不同阶段,分工明确,代码独立,后期发力可以有很多有意思的玩法。

在下一篇文章中,我们将介绍如何使用OpenResty的模块操作数据库以及如何开启websocket协议实现聊天室功能。

关键词:指南,服务

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭