在上期文章中代码就已经完成了,接下来需要租一个服务器,并部署我们的网页了。
先说说目前常用的一些服务器或主机。
首先,虚拟主机我们是用不了的,虚拟主机往往是通个一个面板(cPanel)来部署控制,可玩性不强,往往不能通过shell来控制后台,即使有也没有root权限。而我们需要更自由的linux环境来操作。
目前只有选择VPS服务器或者云服务器,具体租用过程就不详细分享了。
租服务器时会让选择系统,我用的是CentOS 7(我平时工作时环境都是CentOS 6.9,用起来比较习惯,选择自己熟悉的linux系统就好),服务器租到了后,windows需要下载一个Xshell,linux直接打开终端ssh就可以了,然后输入账号密码(Xshell 的连接端口为22),就进入后台了。
接下来安装Anaconda:
wget https://Anaconda的下载链接
sh 你刚刚下载的Anaconda,一路回车
装好Anaconda后先python一下tornado脚本,然后根据报错提示安装缺少的模块或lib文件。
python website.py --port=8080
如果提示XXlib.so.1 这类就需要安装对应的lib文件:
yum install XX # 具体是哪个可以百度一下
如果提示的是python里的模块,则pip安装,比如我遇到的两个:
pip install markdown
pip install xlrd
然后安装supervisor:
yum install supervisor
安装好后,运行
echo_supervisord_conf > /etc/supervisord.conf
然后再末尾添加
[group:web_server]
programs=tornado_web
[program:tornado_web]
numprocs=4
numprocs_start=1
command=/home/anaconda3/bin/python /home/website/website.py --port=80%(process_num)02d
process_name=%(program_name)s%(process_num)d
directory=/home/website
autorestart=true
redirect_stderr=true
stdout_logfile=/home/website/log/tornado.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=50
stderr_logfile=/home/website/log/tornado.log
loglevel=info
这里意思是使用四个线程运行website.py,分别运行在8001、8002、8003、8004端口
然后启动supervisor:
supervisord -c /etc/supervisord.conf
启动后ps -xv一下,查看是否有四个不同端口的进程在运行
ps -xv
不出意外可以看到
/home/anaconda3/bin/python /home/website/website.py --port=8001
/home/anaconda3/bin/python /home/website/website.py --port=8002
/home/anaconda3/bin/python /home/website/website.py --port=8003
/home/anaconda3/bin/python /home/website/website.py --port=8004
以下是surpervisor的常用操作:
supervisorctl -c /etc/supervisord.conf start all
# 启动所有进程
supervisorctl -c /etc/supervisord.conf status
# 查看状态
supervisorctl -c /etc/supervisord.conf stop all
# 结束所有进程
supervisorctl -c /etc/supervisord.conf update
# 配置更新
接下来要安装nginx:
yum install nginx
nginx配置文件一般在以下路径
/etc/nginx/nginx.conf
在改文件中对应位置添加如下代码:
upstream tornadoes {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
server 127.0.0.1:8004;
}
server {
listen 80;
server_name localhost;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_read_timeout 300s;
proxy_pass http://tornadoes;
}
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/tiff;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
}
这里把nginx压缩网页的也一起写进来了,server里gzip开头的都是压缩网页的代码,后面还会添加ssl部分。
以下是nginx常用的一些命令:
service nginx restart
# 重启nginx
service nginx reload
# 重新加载
service nginx start
# 启动
service nginx stop
# 结束
成功启动nginx后在本地的浏览器输入远程的IP地址,看能否出现网页,如果看到有网页就可以愉快的申请域名,然后解析到你的IP地址上了。