@Mr-13
2020-01-02T04:51:15.000000Z
字数 1742
阅读 56
Linux
前言:
环境变量这个东西一直是没怎么理解的,在win下做开发的时候,.net包办了一切;到了CentOS,绝大部分使用的软件用YUM安装也基本上都包办了。作为一个纯粹瞎折腾的渣渣,觉得实在是有点脸红。也巧,配置Flask+Gunicorn的时候,一直提示找不到命令参数。
折腾出来了时候,权且做笔记。也作为个人理解。不充分的地方后面再慢慢补充(路漫漫啊......)
用python3做resetful接口服务(测试),用了Flask + Gunicorn,初次运行gunicorn的时候一直报错,如下:
# api_test是自己写的*.py格式的可执行脚本
[root@mr13 ~] gunicorn -w 4 -b 0.0.0.0:8000 api_test:app
-bash: gunicorn: command not found
我就很郁闷啊,不是说gunicorn安装超级简单么,直接用就行了么,咋还这么事儿呢。
百度了一下,发现了两篇有指导性意见的文章:
这两篇文章内容就不贴了;参照引用文章的状况,我也试了一下:gunicorn安装成功后,找到安装目录就;引用时以路径方式调用,是没有问题的:
[root@mr13 myflask]# /usr/local/python3/bin/gunicorn -w 4 -b 0.0.0.0:8000 api_test:app
那既然安装成功了,命令不能直接使用,就属于环境变量的问题了。稍加引用下两篇文章的内容:
首先就要考虑root 的$PATH里是否已经包含了这些环境变量。
主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。
个人理解,环境变量就是把安装的应用文件或者快捷方式(软连接),路径声明清楚,让系统能够找到。
那我们直接把 /usr/local/python3/bin/gunicorn
通过建立软链接的方式,配置到 /usr/bin
路径下是不是就可以了呢,试一下:
# ln -s f2 f1 是创建软连接,删除软连接文件,原始文件不受影响
# ln f2 f1 是创建硬链接,删除硬链接文件,原始文件同时被删除
# 无论软连接还是硬链接,原始文件与连接文件发生变化,另一处同时发生变化
[root@mr13 ~] ln -s /usr/local/python3/bin/gunicorn /usr/bin
软链接创建完成后,查一下文件:
[root@mr13 ~] find / -name gunicorn
/usr/bin/gunicorn # 这是创建的软链接文件
/usr/local/python3/bin/gunicorn # 这是实际安装目录的文件(被创建软链的文件)
/usr/local/python3/lib/python3.7/site-packages/gunicorn # 这是pip3下载安装的文件
OK,软链接床架成功,不带路径,用软连接执行命令试一下:
[root@mr13 ~] gunicorn -w 4 -b 0.0.0.0:8000 api_test:app
[2020-01-02 09:18:43 +0800] [31752] [INFO] Starting gunicorn 20.0.4
[2020-01-02 09:18:43 +0800] [31752] [INFO] Listening at: http://0.0.0.0:8000 (31752)
[2020-01-02 09:18:43 +0800] [31752] [INFO] Using worker: sync
[2020-01-02 09:18:43 +0800] [31755] [INFO] Booting worker with pid: 31755
[2020-01-02 09:18:44 +0800] [31756] [INFO] Booting worker with pid: 31756
[2020-01-02 09:18:44 +0800] [31757] [INFO] Booting worker with pid: 31757
[2020-01-02 09:18:44 +0800] [31758] [INFO] Booting worker with pid: 31758
OK,搞定!