linux搭建web服务器

1.准备工作
为了让用户都可以访问我们的网站,我们需要有一台可以通过外网访问的服务器,这里选用的是腾讯云的服务器,安装的是Ubuntu16.04的系统。这里我们同时注册了域名,这样子用户就可以直接通过域名访问服务器,而不用输入一串生涩难记,毫无规则的IP地址。

2.使用ssh连接远程服务器
SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。我们使用ssh连接我们的远端腾讯云服务器,并在远端服务器上进行我们的web应用部署。在这里我们进行连接的本地机器也是Ubuntu16.04系统。ssh分为客户端和服务端,Ubuntu内置了ssh的客户端,通过在远端机器运行ssh服务端,本地就可以通过ssh客户端进行连接了。以下介绍ssh配置的具体操作。首先我们需要在远端服务器上通过命令“sudo apt-get install openssh-server”安装ssh服务端。那么问题来啦,现在我们不是还没有办法连接远端服务器,那又怎么在上面进行操作?其实,我们仍然是可以连接远端服务器的,只是不能通过ssh的方法,虽然不足够安全但是也可以进行操作的。如果购买的是腾讯云服务器,我们可以在腾讯云服务器的控制台登录上服务器,使用我们购买时设置的账号密码即可成功登录。成功在远端服务器上安装ssh后,我们回到我们本地的机器,通过命令“su - user”切换为我们以后想要用来连接远端服务器的本地用户,如果现在本地机器的用户是你想要连接远端机器的用户则不用执行该命令。接着输入命令“ssh-keygen -t rsa”生成密钥文件,在生成的过程中会提示你输入密码,此时我们按Enter键即可。这里设置的密码是用来读取密钥文件的密码,如果设定了之后每次进行ssh连接都需要输入密码才能读取密钥文件,这样就比较麻烦了。命令执行完之后会生成一个公钥文件和一个私钥文件,我们需要将生成的公钥文件拷贝到远端服务器,使用如下命令完成“scp.ssh/id_rsa.pubuser@192.168.1.100:/home/user/”。这里“.ssh/id_rsa.pub”是公钥文件的路径,“user@192.168.1.100”是远端服务器的ip地址和用户名。这里我们又回到了远程机器上,可以发现已经有了公钥文件,这时候我们在远端服务器以下命令“mv/home/user/id_rsa.pub/home/user/.ssh/authorized_keys”,如果没有相应的文件夹则要提前建立。这样子,一切配置就算完成了,我们在远端服务器执行以下命令来开启ssh服务“service sshd start” 
然后我们回到本地机器,通过执行命令“ssh user@192.168.1.100”我们就可以成功连接上远端服务器了。这时候我们就可以在本地使用ssh安全地对远程服务器进行操作了,我们首先要做的就是将我们的项目源码拷贝到远端服务器上。 
这里要注意远端服务器上的文件夹和文件的权限问题。可以通过以下命令正确设置权限“#chmod700 .ssh”“#chmod 600 authorized_keys”

3.使用Nginx服务
Nginx是一个高性能的HTTP和反向代理服务器,使用Nginx能更好地帮我们处理静态资源文件。使用命令“$ sudo apt-get install nginx”安装Nginx。安装完成之后,需要我们手动编写配置文件并置于“/etc/nginx/sites-available/”文件夹下,然后在/etc/nginx/sites-enabled/目录下创建软链接,使用如下命令链接到我们的配置文件$sudo ln -s /etc/nginx/sites-available/cffilename .。每次修改完配置文件后,使用命令$ sudo /etc/init.d/nginx reload即可重新开启Nginx服务。Nginx配置文件的编写这里就不赘述了,可以查看相关文档学习。主要是编写一个处理静态资源文件还有一个处理动态请求转发的。在设定文件路径时,请使用绝对路径,否则会无法找到文件。Nginx有一个默认的配置文件default,需要把default文件下的root路径注释掉。 
使用Nginx同样要注意文件和文件夹的权限问题,否则Nginx可能没有办法读取所需要的静态资源文件。需要读取的文件夹需要有可执行的权限,否则无法进入文件夹进行读文件的操作,对于文件则要有对应的读取权限。

4.使用supervisor管理进程
supervisor是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,而不需要我们自己写脚本控制。对于一个长期运行的web服务器,我们的服务端代码应该一直处于正常运行的状态,使用supervisor来管理我们的服务端代码,能够很好地做到这一点。Supervisor是一个Python工具,通过执行命令“pip install supervisor”来安装,不过在此之前我们的服务器上应该安装有Python和pip包管理工具。安装完成后,我们可以使用命令“supervisord -c /etc/supervisord.conf”来启动服务。 
Supervisor安装完成后每次服务器开机时都会自动启动的,不需要我们重复开启,如果重复开启多个运行时会出错,而且报错的信息也多种多样,可能提示端口被占用。supervisor会把配置文件中的进程全部运行。我们可以通过使用命令“ps aux|grep superviosrd”或“ps -ef|grep superviosrd”查看当前运行的服务,如果有重复则使用kill命令杀掉该进程。每次修改完配置文件后要通过命令“sudo supervisorctl reload ”来重新加载服务。正确配置完成后,可以通过命令“netstat -lpnt”来查看监听端口。Supervisor配置文件的编写如果需要路径也要注意采用绝对路径。

5.使用Fabric实现自动化部署
通过ssh连接远程服务器进行操作,使用Nginx和supervisor部署应用,这样子一个能够稳定运行的web服务器就搭建起来了。但是,我们的web应用在运行过程中可能会遇到各种各样的问题,程序员需要对代码进行不断地完善。如果每次修改代码后都要重新手动拷贝一份文件到服务器,然后再重新部署,那这过程一定是相当低效繁琐的,并且大大增加了出错的可能性。聪明的程序员是不会把时间花在重复的机械性操作上的。因此,自动化部署工具应运而生,Fabric则是其中的一个典型代表,Fabric目前只支持Python2,使用命令“pip install fabric”进行安装,Fabric使用了ssh直接登录服务器进行操作。Fabric脚本的编写可以查看相关文档学习,主体的思想便是将在部署时在本地执行的和远程执行的命令写进不同的函数中,每次重新部署时只需要在本地运行函数即可。本地运行的指令和服务器运行的指令对应着不同的命令格式,以此作为区分。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值