如何让你的 Python 代码在腾讯云 Linux 中一直运行着

3 篇文章 0 订阅

📢博客主页:https://blog.csdn.net/mukes
📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!
📢本文由 mukes 原创,首发于 csdn

一、背景

最近写了一些爬取数据的 Python 代码,每次爬取都要打开电脑运行,睡觉时也要开着,这东西占据我笔记本大量的使用时间,于是寻求更好的替代方法,遂入手了腾讯云,花了半个小时部署到腾讯云上,让它在云服务器上一直运行,把部署过程总结一下。


二、准备
1.购买腾讯云

腾讯云有学生优惠,只要你年龄在 25 以下不需要学生认证就可购买,我花了 27 块买了三个月的 CPU 1 核,内存 2GB,系统盘 60GB,带宽 5Mbps,流量包 1000GB/月 的套餐,我选的系统是 CentOS 7.6.
g14r6K.jpg

购买成功后

  • 在服务器页面直接点击登录即可直接登录 CentOS。
    g3xDb9.jpg

  • 点击重置密码 可 设置密码 或 创建新用户和密码。
    g3z95q.jpg
    g3zgds.jpg

  • 点击密钥创建密钥,并在服务器管理页面绑定密钥。(这步可先不设置)
    注:如果你绑定了密钥,那么将不能通过密码登录,通过密码登录会出现出现错误:PuTTY error: "No supported authentication methods available"
    这个问题的解决方法参考我另一篇博客:腾讯云设置密钥后无法通过 ssh 账号密码登录

2.安装 PuTTY 和 WinSCP

我们需要把本地代码上传到 CentOS 中,因而要下载 PuTTY WinSCP

并把 PuTTY 设置为 WinSCP 的 集成应用程序(只要先安装 PuTTY,再装 WinSCP,系统会自行配置好,当然绿色版就需要手动配置了。)
g3zqoR.jpg

配置完后打开 WinSCP 远程登录云服务器。
g3xyU1.jpg


三、部署步骤

开始安装之前先查看一下操作系统环境和 Python 版本。

1.查看操作系统环境:
[root@VM-12-13-centos ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
2.查看 Python 版本
[root@VM-12-13-centos ~]# python -V
Python 2.7.5
[root@VM-12-13-centos ~]# python3 -V
Python 3.6.8

可以看到操作系统是 7.6,Python 有 Python2 也有 Python3,因此就不需要安装了。

3.查看 pip3 版本
[root@VM-12-13-centos ~]# pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
4.更新 pip3(此步可跳过)
[root@VM-12-13-centos ~]# pip3  install --upgrade pip
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting pip
  Downloading http://mirrors.tencentyun.com/pypi/packages/cd/6f/43037c7bcc8bd8ba7c9074256b1a11596daa15555808ec748048c1507f08/pip-21.1.1-py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.6MB 3.8MB/s
Installing collected packages: pip
Successfully installed pip-21.1.1
5.安装代码运行所需要的库,比如 beautifulsoup4,lxml(根据自己的需要安装)
[root@VM-12-13-centos ~]# pip3 install beautifulsoup4
Looking in indexes: http://mirrors.tencentyun.com/pypi/simple
Collecting beautifulsoup4
  Downloading http://mirrors.tencentyun.com/pypi/packages/d1/41/e6495bd7d3781cee623ce23ea6ac73282a373088fcd0ddc809a047b18eae/beautifulsoup4-4.9.3-py3-none-any.whl (115 kB)
     |████████████████████████████████| 115 kB 1.1 MB/s
Collecting soupsieve>1.2
  Downloading http://mirrors.tencentyun.com/pypi/packages/36/69/d82d04022f02733bf9a72bc3b96332d360c0c5307096d76f6bb7489f7e57/soupsieve-2.2.1-py3-none-any.whl (33 kB)
Installing collected packages: soupsieve, beautifulsoup4
Successfully installed beautifulsoup4-4.9.3 soupsieve-2.2.1

[root@VM-12-13-centos ~]# pip3 install lxml
Looking in indexes: http://mirrors.tencentyun.com/pypi/simple
Collecting lxml
  Downloading http://mirrors.tencentyun.com/pypi/packages/53/b2/2fb24ff277d35182                                                                                                             2a3087e18aea41a20942f6557a3c864dda67ebecf8c7/lxml-4.6.3-cp36-cp36m-manylinux2014                                                                                                             _x86_64.whl (6.3 MB)
     |████████████████████████████████| 6.3 MB 1.9 MB/s
Installing collected packages: lxml
Successfully installed lxml-4.6.3

这些第三方库一般会安装在 /usr/local/lib/python3.6/site-packages 下(不同版本 Python 带的后缀不一样,Python 3.7 就是 python3.7)。

6.上传本地代码到云服务器

打开 WinSCP,登录远程云服务器

/home 下新建一个 pythonproject 目录

[root@VM-12-13-centos ~]# mkdir /home/pythonproject #创建 pythonproject 目录
[root@VM-12-13-centos ~]# cd /home/pythonproject    #切换到 pythonproject 目录
[root@VM-12-13-centos pythonproject]#

在 WinSCP 中把本地写好的 Python 代码直接复制粘贴到 pythonproject 目录下即可
g3xyU1.jpg

7.运行 Python 程序

运行程序有两种,一种是前台运行,一种是后台运行。

前台运行 就是直接在当前窗口运行,运行日志也会打印在当前窗口,按 ctrl + c 就会停止运行,退出终端时也会停止。
后台运行 通过后台执行,就算是当前终端关闭或者执行其他程序,也不影响。
注:以下代码的运行均在 /home/pythonproject 目录下运行,若在其他目录下,则需添加绝对路径,如:python3 /home/pythonproject/test.py

1.前台运行 Pyhon 代码命令
[root@VM-12-13-centos ~]# python3 test.py

可以先用前台运行测试一下 Python 代码能否正确运行,再用后台运行命令。

2.后台运行 Python 代码命令
[root@VM-12-13-centos ~]# nohup python3 -u test.py > test.log 2>&1 &

含义解释:

  • nohup 是 no hang up 的缩写,就是不挂起的意思,不断地运行。

  • -u 代表程序不启用缓存,也就是把输出直接放到 log 中,没这个参数的话,python 的输出进行了缓冲,导致 test.log 并不能够马上看到输出结果。

  • > test.log 将输出日志保存到这个 log 中

  • 2>&1
    0 表示 stdin 标准输入,用户键盘输入的内容
    1 表示 stdout 标准输出,输出到显示屏的内容
    2 表示 stderr 标准错误,报错内容

    2>&1 是一个整体,> 左右不能有空格,即将错误内容重定向输入到标准输出中去。就是说把报错内容和 test.py 脚本的正确输出内容都保存在 test.log 里面。

  • 为啥不用 2>1 而是用 2>&1 呢?
    因为该命令 nohup python3 -u test.py > test.log 2>&1 & 可以拆分为
    nohup python3 -u test.py 2> test.log &
    nohup python3 -u test.py 1> test.log &
    2>1 的话会把 1 当作一个文件,把报错内容保存到 1 文件中,故用 2>&1.

  • & 最后一个 & ,代表该命令在后台执行

命令运行后会有提示,示例:

[1]   14052
代表进程 14052 中运行。

3.终止运行程序

前台运行的代码按 ctrl + c 和退出终端时即可停止运行。

后台运行的代码则需要终止进程:

  • 查看后台运行的所有进程:
    [root@VM-12-13-centos ~]# ps -aux

  • 查看后台运行的所有 python 进程:


[root@VM-12-13-centos ~]# ps aux |grep python
root      1042  0.0  0.9 574288 17464 ?        Ssl  14:43   0:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root     14052  1.5  2.0 244248 38168 pts/2    S    19:52   1:41 python3 -u spiderbot.py
root     29009  0.0  0.0 112812   972 pts/0    R+   21:42   0:00 grep --color=auto python

 或者

[root@VM-12-13-centos ~]# ps -ef | grep python
root      1042     1  0 14:43 ?        00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root     14052  9773  1 19:52 pts/2    00:01:43 python3 -u spiderbot.py
root     29319 28340  0 21:44 pts/0    00:00:00 grep --color=auto python

  • 删除进程
    [root@VM-12-13-centos ~]# kill -9 [进程 id]
    -9 的意思是强制删除



参考资料


  1. 如何把 python 项目部署到 linux 服务器上 [https://www.cnblogs.com/huanghanyu/p/12921842.html]
  2. 大学生选择云服务器,腾讯云?阿里云?还是华为云?[https://smileyan.blog.csdn.net/article/details/96209253]
  3. Python 后台运行 —nohup 及 2>&1 详解 [https://blog.csdn.net/weixin_42840933/article/details/85780125]
  4. Centos 后台运行 python 程序 [https://www.cnblogs.com/liangblog/p/12762674.html]
  • 19
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
Linux 下安装 PyConcrete 加密 Python 代码的步骤如下: 1. 安装 Python 和 pip PyConcrete 是一个 Python 模块,因此需要安装 Python 和 pip。在 Ubuntu 上,可以使用以下命令安装: ``` sudo apt update sudo apt install python3 python3-pip ``` 2. 安装 PyConcretee 使用 pip 安装 PyConcretee: ``` pip3 install pyconcrete ``` 3. 创建加密脚本 创建一个 Python 脚本,将要加密和保护。例如,我们可以创建一个名为 `my_script.py` 的文件,其包含以下内容: ``` def my_function(): print("Hello, world!") if __name__ == '__main__': my_function() ``` 4. 创建加密配置文件 创建一个名为 `pyconcrete.cfg` 的文件,并将以下内容添加到其: ``` [pyconcrete] key = my_secret_key mode = encrypt ``` 其,`key` 是一个用于加密和解密文件的密钥,`mode` 是指定 PyConcretee 运行模式的选项。在此示例,我们将使用 `encrypt` 模式加密文件。 5. 加密脚本 使用 PyConcretee 加密脚本: ``` pyconcrete-tool.py encrypt my_script.py -c pyconcrete.cfg -o my_script_encrypted.py ``` 这将使用 `pyconcrete.cfg` 指定的密钥和模式,将 `my_script.py` 文件加密,并将结果保存到 `my_script_encrypted.py` 文件。 6. 运行加密脚本 使用 Python 运行加密脚本: ``` python3 my_script_encrypted.py ``` 这将运行已加密的 `my_script_encrypted.py` 文件,并输出 `Hello, world!`。 在以上步骤,我们使用 PyConcretee 加密了一个 Python 脚本,并在 Linux运行了加密后的脚本
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值