一个环境部署搞了一天.特此写这篇文章长长记性
首先切换到root目录下
[cheng@bogon ~]$ sudo su
[root@bogon cheng]#
然后查看yum列表 如果有的话kill -9 pid 杀死进程
[root@bogon cheng]# yum list
[root@bogon cheng]# kill -9
安装python需要的依赖包
[root@bogon cheng]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
Unix系统默认安装了python
Centos 6 安装 python2.6版本
Centos 7 安装 python2.7版本
输入python查看版本
[root@bogon ~]# python
我们需要的版本是python 3.6.2,在centos上进行python2和3并存
下载python 3.6.2的包
[root@bogon /]# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
解压安装包
[root@bogon /]# tar -xvJf Python-3.6.2.tar.xz
切换进Python-3.6.2目录
[root@bogon Python-3.6.2]#
编译安装
[root@bogon Python-3.6.2]# ./configure prefix=/usr/local/python3
[root@bogon Python-3.6.2]# make && make install
配置软连接(环境变量)
软连接 --> 快捷方式
[root@bogon Python-3.6.2]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@bogon Python-3.6.2]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
然后测试一下安装完的python
[root@bogon Python-3.6.2]# python3
安装python的扩展包
[root@bogon Python-3.6.2]# yum install python-devel
安装python 开发包 Pymysql ,Pillow ,Django==2.1.5 ,django-ckeditor
[root@bogon Python-3.6.2]# pip3 install pymysql && pip3 install pillow && pip3 install django==2.1.5 &&pip3 install django-ckeditor
Python 的web项目,本身很难和Apache或者Nginx进行结合,为了让python web项目更加方便的被部署,开发出了uwsgi。
用pip安装uwsgi
[root@bogon Python-3.6.2]# pip3 install uwsgi
切换目录
[root@bogon local]# cd /usr/local/python3/
创建软连接
[root@bogon python3]# ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
然后把项目复制到虚拟机桌面
切换目录到opt
[root@bogon python3]# cd /opt
然后将项目复制到opt项目下
[root@bogon opt]# cp -r /home/cheng/Desktop/Qshop/ /opt/Qshop
我们需要清除所有的pycharm的配置文件,初始的导入文件
[root@bogon Buyer]# rm -rf __pycache__/
测试项目
[root@bogon Buyer]# python3 manage.py runserver 0.0.0.0:8000
关闭防火墙
[root@bogon opt]# systemctl stop firewalld
用uwsgi启动django
切换到opt目录
[root@bogon Qshop]# cd ..
[root@bogon opt]#
创建uwsgi文件的配置文件目录和文件
[root@bogon opt]# mkdir script
[root@bogon opt]# ls
Qshop rh script
切换到script目录
[root@bogon opt]# cd script
然后创建uwsgi.ini
[root@bogon script]# vim uwsgi.ini
编辑文本
[uwsgi]
chdir=/opt/OurBlog #项目目录
module=OurBlog.wsgi:application #指定项目的application
socket=/opt/script/uwsgi.sock #指定sock的文件路径
workers=5 #进程个数
pidfile=/opt/script/uwsgi.pid
http=192.168.2.69:8000 #指定IP端口
static-map=/static=/opt/OurBlog/static #指定静态文件
uid=root #用户
gid=root #组
master=true #启用主进程
vacuum=true #自动移除unix Socket和pid文件当服务停止的时候
enable-threads=true #启用线程
thunder-lock=true #序列化接受的内容,如果可能的话
harakiri=30 #设置自中断时间
post-buffering=4096 #设置缓冲
daemonize=/opt/script/uwsgi.log #设置日志目录
启动uwsgi查权限,并授予权限
[root@bogon script]# chmod 777 uwsgi.ini
[root@bogon script]# ll uwsgi.ini
-rwxrwxrwx. 1 root root 330 Jan 18 22:27 uwsgi.ini
[root@bogon script]#
[root@bogon script]# uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
[uwsgi-static] added mapping for /static => /opt/Qshop/static
查看进程并杀死进程
[root@bogon script]# netstat -lnp|grep 8000
tcp 0 0 10.10.16.149:8000 0.0.0.0:* LISTEN 30882/uwsgi
[root@bogon script]# kill -9 30882
Python uwsgi+nginx部署
下载nginx压缩包
[root@bogon script]# wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
解压nginx压缩包
[root@bogon script]# tar -zxvf nginx-1.12.2.tar.gz
切换到nginx目录并编译安装
[root@bogon script]# cd nginx-1.12.2/
[root@bogon nginx-1.12.2]#
[root@bogon script]# ./configure \
[root@bogon nginx-1.12.2]# make && make install
切换到sbin目录
[root@bogon nginx-1.12.2]# cd /sbin/
创建软连接
[root@bogon sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
Nginx通讯uwsgi
修改Nginx的配置文件
切换目录
[root@bogon sbin]# cd /usr/local/nginx/
[root@bogon nginx]# ls
conf html logs sbin
[root@bogon nginx]# cd conf
[root@bogon conf]# ls
fastcgi.conf koi-win scgi_params
fastcgi.conf.default mime.types scgi_params.default
fastcgi_params mime.types.default uwsgi_params
fastcgi_params.default nginx.conf uwsgi_params.default
koi-utf nginx.conf.default win-utf
[root@bogon conf]# pwd
/usr/local/nginx/conf
[root@bogon conf]#
备份配置文件
[root@bogon conf]# cp nginx.conf nginx.conf.bak
开始配置,注意括号的问题,并且千万要自己写不要copy
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; 日志的格式
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name Qshop; 服务的名称
charset utf-8; 编码格式
access_log logs/host.access.log main; 访问日志
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; 访问内容的类型
error_log /var/log/nginx/error.log error; 错误日志,默认没有,需要手动创建
location / {
include uwsgi_params; 加载uwsgi_params
uwsgi_connect_timeout 30; 连接的超时时间 不要加冒号不要加冒号不要加冒号
uwsgi_pass unix:/opt/script/uwsgi.sock; uwsgi.sock通讯的文件地址
}
location = /static/{
alias /opt/Qshop/static; 静态文件的目录
index index.html index.htm;
}
最后就是启动服务了
[root@bogon conf]# nginx
[root@bogon opt]# cd /opt/script/
[root@bogon opt]# uwsgi --ini uwsgi.ini
好了…到此就全部部署完成了