程序部署在服务器

材料:

pycharm
服务器资源
程序

在服务器上跑程序的两种方法

1、将pycharm中的项目映射到服务器上,配置远程解释器,在本地跑程序就是在服务器上运行程序。(便于调试程序)
2、将pycharm中的项目upload到服务器上,在服务器上配置环境,运行程序。(可以在服务器上不终止的跑程序)

具体操作:

pycharm 中打开Settings/Preferences设置deployment

python 如何将本地项目部署到服务器 pycharm部署项目到服务器_标准输出

设置deployment

登录服务器

找一个未被占用的端口port

查看后台进程可以用命令

top

查看端口号占用情况:

netstat -apn |grep port

确定进程号:

ps -aux|grep pid

杀掉进程:

kill -9 pid

将程序中服务器listen()改成这个未被占用的端口上

在服务器上安装anaconda

conda create -n newenvirement python=3.6
conda activate newenvirment
pip install requiremens

设置pycharm的远程解释器

python 如何将本地项目部署到服务器 pycharm部署项目到服务器_标准输出_02

将解释器的目录设置到newenvirment上

这时在本地运行程序就是在服务器上运行程序
这时外部就可以通过http://ip:port/,来访问你的程序

要想让本地程序关闭,外部还可以访问就需要将程序upload到服务器上

pycharm中,tools/deployment/config

这个config刚才已经设置过一次了,因为要将程序upload到服务器上,所以要设置mapping

本地路径和服务器上的路径都要填写一下

python 如何将本地项目部署到服务器 pycharm部署项目到服务器_服务器_03


在tools/deployment/中还可以设置auto upload,每次更新完了就可以自动upload

然后在服务器上找到要运行的程序python一下就行了

但是此时关闭terminal,服务器上的成长就中止了,外部就访问不了了

此时就需要nohup python test.py这条命令

不中断的运行程序

例:nohup python test.py & 加&是让其转入后台运行,而不在前台显示。
当时nohup这条命令经常会报错,应为没有指定终端需要输出的东西的位置

为了方便查找结果和调试程序可以重定向输出

> test.file 2>&1 &

主要是中间的 2>&1的意思
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件test.file里面,
所以结果是标准错误和标准输出都导入文件test.file里面了。

最后谈一下/dev/null文件的作用
这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。
所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里 >/dev/null 2>&1

nohup python test.py &>/dev/null 2>&1

程序忽略了标准输入,因为是外面调用api,所以会post一个body进来