服务器配置

centos安装python3

参考 centos下安装python3详细教程

1.python位置

使用whereis python得到python位置

1
2
[root@iz2ze3g6pyat2fqpma7zdvz django_test]# whereis python
python: /usr/bin/python /usr/bin/python.config /usr/bin/python2.7 /usr/bin/python.bak /usr/bin/python2.7-config /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz

得到python的位置在 /usr/bin目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@iz2ze3g6pyat2fqpma7zdvz ~]# cd /usr/bin
[root@iz2ze3g6pyat2fqpma7zdvz bin]# ll python*
lrwxrwxrwx 1 root root 32 Dec 22 19:40 python -> /usr/local/python3/bin/python3.9
lrwxrwxrwx 1 root root 9 Dec 22 18:30 python2 -> python2.7
-rwxr-xr-x 1 root root 7144 Nov 17 06:23 python2.7
-rwxr-xr-x 1 root root 1835 Nov 17 06:23 python2.7-config
lrwxrwxrwx 1 root root 16 Dec 22 18:30 python2-config -> python2.7-config
lrwxrwxrwx 1 root root 32 Dec 23 18:43 python3 -> /usr/local/python3/bin/python3.9
lrwxrwxrwx 1 root root 7 Dec 22 18:30 python.bak -> python2
lrwxrwxrwx 1 root root 39 Dec 22 19:36 python.config -> /usr/local/python3/bin/python3.9-config
lrwxrwxrwx 1 root root 14 Dec 22 18:30 python-config.bak -> python2-config

python_django:
total 20
drwxr-xr-x 2 root root 4096 Dec 23 15:33 bin
drwxr-xr-x 2 root root 4096 Dec 23 15:33 include
drwxr-xr-x 3 root root 4096 Dec 23 15:33 lib
drwxr-xr-x 3 root root 4096 Dec 23 15:33 lib64
-rw-r--r-- 1 root root 201 Dec 23 15:33 pyvenv.cfg

进入/usr/bin目录使用ll python*我们可以得到python的各种版本

->是软连接,意味这个文件是后面文件的软链接,这个python也可以看成命令

2 python3的依赖

1
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

3 安装pip

centos7没有安装pip

1
2
3
4
5
#运行这个命令添加epel扩展源
yum -y install epel-release

#安装pip
yum install python-pip

4 用pip安装wget

1
pip install wget

5 用wget下载python3

官网找到想要的版本链接

1
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz

6 编译python3源码包

1
2
3
4
5
6
7
8
9
10
11
#解压
xz -d Python-3.6.4.tar.xz
tar -xf Python-3.6.4.tar
#进入解压后的目录,依次执行下面命令进行手动编译
cd Python-3.6.4
./configure prefix=/usr/local/python3
make && make install
# 如果出现can't decompress data; zlib not available这个错误,则需要安装相关库
#安装依赖zlib、zlib-devel
yum install zlib zlib
yum install zlib zlib-devel

7 添加软连接

1
2
3
4
5
6
7
8
#将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak

#添加python3的软链接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

#测试是否安装成功了
python -V

如果本身没有python3的软链接,可以再

1
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3

8 更改yum配置

因为yum使用python2,所以需要更改一个yum的配置

1
2
3
4
5
vi /usr/bin/yum
把#! /usr/bin/python修改为#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down
把#! /usr/bin/python 修改为#! /usr/bin/python2

virtualenvvirtualenvwrapper

python虚拟环境

简单点说python的虚拟环境就是给每个项目一个独立的python配置,各个项目之间的配置不影响,

1 下载virtualenv

1
pip install virtualenv

2 创建新项目

1
virtualenv env

3 使用虚拟环境

1
source env/bin/activate

4 退出虚拟环境

1
deactivate

5 virtualenvwrapper安装

virtualenvwrapper 可以对虚拟环境进行集中管理

1
pip install virtualenvwrapper

6 添加~/.bashrc

~/.bashrc添加

1
2
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh

读入配置文件

1
source ~/.bashrc    #读入配置文件,立即生效

7 virtualenvwrapper基本使用

  • 创建虚拟环境 mkvirtualenv
1
mkvirtualenv venv

 这样会在WORKON_HOME变量指定的目录下新建名为venv的虚拟环境。

  • 指定python版本

    --python指定python解释器

1
mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv
  • 查看当前虚拟环境目录
1
workon
  • 切换到虚拟环境
1
workon xxx
  • 退出虚拟环境
1
deactivate
  • 删除虚拟环境
1
rmvirtualenv xxx

8 出错处理

出现 ModuleNotFoundError: No module named '_ctypes'

  • 安装libffi-devel
1
yum install libffi-devel -y
  • 重装python
  • 使用make && make install

django

1 下载

使用pip install django

2 创建django项目

django-admin startproject xxx

3 启动django

1
python manage.py runserver 0.0.0.0:80

4 配置文件

进入setting.py文件

在allowHost中添加自己的ip

1
2
3
4
5
ALLOWED_HOSTS = [
'123.56.252.111',
'localhost',
'0.0.0.0:8000', '127.0.0.1'
]

这样在运行后就可以用http://123.56.252.111:8000/来访问

5 报错处理

参考

出现

1
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
  • 官网找到想要版本的链接

  • 使用wget下载

1
2
#链接最好重新获取,否则可能不是最新版本
wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
  • 解压安装
1
2
3
4
[root@localhost home]# tar zxvf sqlite-autoconf-3300100.tar.gz
[root@localhost home]# cd sqlite-autoconf-3300100/
[root@localhost sqlite-autoconf-3300100]# ./configure
[root@localhost sqlite-autoconf-3300100]# make & make install
  • 查看版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#检查新安装的sqlite3版本
[root@localhost home]# /usr/local/bin/sqlite3 --version
3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b

#检查旧的sqlite3版本
[root@localhost home]# /usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

# 把旧的sqlite3改个名字
[root@localhost home]# mv /usr/bin/sqlite3 /usr/bin/sqlite3_old

# 设置软链接
[root@localhost home]# ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

#查看sqlite3版本
[root@localhost home]# sqlite3 --version
3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b
  • 添加到bashrc文件

~/.bashrc中添加

1
export LD_LIBRARY_PATH="/usr/local/lib"
  • 检查sqlite3版本
1
2
3
4
5
6
7
8
9
[root@localhost home]# python3
Python 3.6.5 (default, Jul 9 2019, 20:03:55)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.30.1'
>>> exit()
[root@localhost home]#

nginx

参考

1 安装

添加Nginx 存储库

1
sudo yum -y install epel-release

安装nginx

1
sudo yum -y install nginx

2 启动

启动nginx

1
sudo systemctl start nginx

3 防火墙

允许http通信

1
sudo firewall-cmd --permanent --zone=public --add-service=http

允许https通信

1
sudo firewall-cmd --permanent --zone=public --add-service=https

重启防火墙

1
sudo firewall-cmd --reload

4 测试

在浏览器输入地址

5 卸载

停止nginx

1
2
3
service nginx stop
// centos 7
sysyemcyl stop nginx

删除自启动

1
chkconfig nginx off

从源头删除nginx

1
2
3
rm -rf /usr/sbin/nginx
rm -rf /etc/nginx
rm -rf /etc/init.d/nginx

使用yum清理

1
yum remove nginx

修改root@后面的名字

centos7

1
2
3
4
5
hostnamectl set-hostname dhl #
hostname #查看
vim /etc/hosts # 编辑hosts文件,给127.0.0.1添加hostname

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 dhl

重启shell生效

---------Thanks for your attention---------