Centos 下更新和安装必须的软件包:
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel wget gcc make zip* openssl-devel libffi-devel xz-devel python-backports-lzma -y
安装python3
- 由于contos会默认安装python2.7,所以先将python2.7修改名称,避免与python3.*冲突
mv /usr/bin/python /usr/bin/python.bak
- 下载python3.6.2
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
- 解压
tar -xvJf Python-3.6.2.tar.xz
- 进入解压目录,执行安装&编译命令
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install
- 建立软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
- 由于原本centos的很多软件依赖python2.7,所以还需要进行软件依赖的修改
vi /usr/bin/yum
#把 #! /usr/bin/python 修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改为 #! /usr/bin/python2
- 最后测试安装是否成功
python -V
python2 -V
安装uwsgi
直接使用pip命令,由于刚刚安装了python3.6,会自动安装pip3,所以不用手动安装pip
- 将原本关联到python2.7的pip修改
mv /usr/bin/pip /usr/bin/pip.bak
- 建立新的pip3的软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
- 安装uwsgi,为了加快安装,这里使用了清华大学的镜像地址
pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 如果安装失败可能是缺少python的头文件和静态库,执行下面的命令安装,然后重复执行上面安装uwsgi的命令
yum install python-devel
- 设置uwsgi命令的软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
安装Django
- 这里的django版本安装的是1.11.9的版本
pip install django==1.11.9
安装nginx
- 下载nginx
wget http://101.96.10.45/nginx.org/download/nginx-1.15.6.tar.gz
- 解压
tar xf nginx-1.15.6.tar.gz
- 进入解压目录,执行安装&编译命令
cd nginx-1.15.6
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install
- 配置nignx命令的软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
配置项目settings.py文件
- 设置或修改一下属性
DEBUG = True
ALLOWED_HOSTS = ['*']
STATIC_ROOT = os.path.join(BASE_DIR, "/var/www") # /var/www是要迁移文件的目录,这里要与待会nignx的配置一致
- 执行命令进行静态文件迁移
python manage.py collectstatic
配置uwsgi
- 在项目内创建socket.xml文件,与manage.py文件同级
<uwsgi>
<socket>:8000</socket>
<!-- 这里的端口要与nginx里的配置一致 -->
<chdir>/root/django_app/OneBlog</chdir>
<!-- 项目在centos中的路径,这里的项目名就是OneBlog -->
<module>OneBlog.wsgi</module>
<!-- 只想OneBlog中的wsgi.py文件 -->
<processes>4</processes>
<!-- 进程数 -->
<daemonize>uwsgi.log</daemonize>
<!-- 日志 -->
</uwsgi>
配置nignx
- 编辑nignx.conf文件
vim /usr/local/nginx/conf/nginx.conf
在http{ }中修改以下内容
server {
listen 80;
server_name localhost;
keepalive_requests 120;
charset utf-8;
#access_log logs/host.access.log main;
access_log off;
location /static {
alias /var/www/; #要与之前django的setting.py中添加的static静态文件转移目录一致
}
location / {
uwsgi_pass 127.0.0.1:8000; # 端口与uwsgi中设置的端口一致
include uwsgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
测试运行
- 在项目目录下执行下面命令,然后在浏览器输入本机ip测试项目是否能运行
uwsgi -x socket.xml & nginx
在这里常用的几个命令
重启nginx nginx -s reload
关闭uwsgi killall -9 uwsgi