原文来自: https://blog.csdn.net/lovefengruoqing/article/details/79284573
新装的CentOS 7安装python3
centos7自带有python,但是确实python2版本的python,如果你想安装个python3怎么办呢?难道要从github上把源码clone下来进行编译安装么?这么做对于我们个人用户来说,完全没必要嘛。- 首先,你要知道系统现在的python的位置在哪儿:
[root@root ~]# whereis python python: /usr/bin/python2.7 /usr/bin/python /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
可以知道我们的python在 /usr/bin目录中[root@root ~]# cd /usr/bin/ [root@root bin]# ll python* lrwxrwxrwx. 1 root root 7 2月 7 09:30 python -> python2 lrwxrwxrwx. 1 root root 9 2月 7 09:30 python2 -> python2.7 -rwxr-xr-x. 1 root root 7136 8月 4 2017 python2.7
可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。 - 因为我们要安装python3,所以要先安装相关包,用于下载编译python3:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
运行了以上命令以后,就安装了编译python3所用到的相关依赖如果在centos 7 下安装python3.7,还需要多安装一个依赖,否则报找不到_ctype错误:
#yum install libffi-devel -y
- 默认的,centos7也没有安装pip,不知道是不是因为我安装软件的时候选择的是最小安装的模式。
#运行这个命令添加epel扩展源
yum -y install epel-release
#安装pipyum install python-pip
- 用pip装wget
pip install wget
- 用wget下载python3的源码包
python -m wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
- 编译python3源码包
#解压
xz -d Python-3.7.0.tar.xz tar -xf Python-3.7.0.tar
#进入解压后的目录,依次执行下面命令进行手动编译./configure prefix=/usr/local/python3 make && make install
如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录 - 添加软链接
#将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak
#添加python3的软链接ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
#测试是否安装成功了python -V
- 更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用
vi /usr/bin/yum
把第一行#! /usr/bin/python
修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把第一行#! /usr/bin/python
修改为#! /usr/bin/python2
- 注意系统默认pip是python2里的PIP,需要安装python3.7的包,就需要更换链接:
mv /usr/bin/pip /usr/bin/pip.bak
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
pip -V
- 之后如果出现firewall-cmd无法工作,修改:
vi /usr/bin/firewall-cmd
将第一行也按照上边修改成python2vi /usr/sbin/firewalld
做同样修改即可。
因为是开发服务器,关闭firewall
# 停止防火墙 systemctl stop firewalld.service # 禁止防火墙开机启动 systemctl disable firewalld.service # 允许防火墙开机启动 systemctl enable firewalld.service # 查看防火墙状态 firewall-cmd --state
PIP的使用
pip --upgrade批量更新过期的python库 今天看了下系统环境,不少python库都有了更新,再用旧版本库可能已经不适合了,就想把所有的库都更新到最新版本。
查看系统里过期的python库,可以用pip命令
pip list
#列出所有安装的库
pip list --outdated
#列出所有过期的库
对于列出的过期库,pip也提供了更新的命令
pip install --upgrade
库名
但此命令不支持全局全部库升级。
在stackoverflow上有人提供了批量更新的办法,一个循环就搞定(注意--upgrade后面的空格)
import pip from subprocess import call for dist in pip.get_installed_distributions(): call(""pip install --upgrade "" + dist.project_name, shell=True)
另外的也有人提到用 pip-review ,不想安装就没用
pip install pip-review pip-review --local --interactive
安装PostgreSQL 10
要编辑vi /var/lib/pgsql/10/data/postgresql.conf
修改#listen_addresses = ‘localhost’ 为 listen_addresses=’’
当然,此处‘’也可以改为任何你想开放的服务器IP,注意这一行原来是注释的,必须要去掉注释才能生效。
vi /var/lib/pgsql/10/data/pg_hba.conf
修改如下内容,信任指定服务器连接
在第一行之后增加
host all all 0.0.0.0/0 md5
之后把每一行最后的ident 或者其他单词,都改成truest或者md5,就可以了,这里又是一个坑。
即可让postgres接受远程连接,然后需要为postgres用户指定一个密码。
如果启动服务的地方提示初始化服务错误,已经存在data目录,就到 /var/lib/pgsql/10/data 把这个data目录删掉,再
/usr/pgsql-10/bin/postgresql10-setup init db 即可
由于重新初始化了,先确定服务是否正常,正常的话把上边的两个配置重新做一下,然后:
su - postgres psql postgres=# \password postgres
即先切换到系统用户postgres(安装时生成),然后进入PostgreSQL,之后为postgres设置密码,用alter没有用,必须如此设置。
之后即可用pgAdmin 4 来 远程连接该数据库了。
也可以试验一下django 是否可以正常工作。
virtualenv的使用:
virtualenv env/mysite source env/educa/bin/activate
这个目录代表一个环境的名称,和实际项目文件放在哪里没有关系。
修改PATH
在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。[root@CentOS ~]# vi /etc/profile
在文件末尾加上如下两行代码
PATH=/usr/local/python3/bin:$PATH
export PATH
然后执行
source /etc/profile
天虹服务器的部署方法
简单一点采用 uwsgi, 不使用nginxnohup uwsgi --http=0.0.0.0:80 --file=cms/wsgi.py --static-map=/static=static &这个前提条件是静态文件的地址以及collectstatic都执行完毕, 然后要在cms目录下执行, 因为cms/wsgi.py 以及/static = static 都是相对路径, 执行完之后就可以不用管了 备份的话:
pg_dump -U contract -d contract -f 20200427.sql