网址参考:https://www.cnblogs.com/djangocn/p/9538551.html
一、python虚拟环境中安装uwsgi:
workon mypython3
pip install uwsgi 或者 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
安装uwsgi注意事项:
从yum源上下载安装对应python版本的python-devel,如果不清楚的话先用 python --version 命令查看python版本,然后yum search python3,Tab键搜索出来下载。
[root@VM_0_13_centos ~]# yum install python36u-devel
解决uwsgi安装失败问题:
1./mnt/udisk/project/myenv/myfirstenv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip #升级pip到最新
2.centos8安装依赖命令:
yum -y install python3-devel libevent-devel libjpeg-devel
centos7安装依赖命令:
yum -y install python-devel libevent-devel libjpeg-devel
3.重新安装uwsgi:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
二、安装完成后,为uwsgi建立软连接
cd //
find . -name mypython3 :找到虚拟环境所在目录
ln -s /root/.virtualenvs/mypython3/bin/uwsgi /usr/bin/uwsgi :建立软连接
三、在django项目的根目录下创建项目的创建文件:wanwenyc.xml,用于uwsgi连接nginx
cd /usr/local/mydjangoweb/wanwenyc
touch wanwenyc.xml #wanwenyc.xml中的“wanwenyc”对应django项目的名字,例如django项目名为"mysite",则此处应该为mysite.xml
vim wanwenyc.xml:
wanwenyc.xml内容如下:
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
<chdir>/usr/local/mydjangoweb/wanwenyc</chdir><!-- 项目路径 -->
<module>wanwenyc.wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
:wq! :保存
uwsgi -x wanwenyc.xml #运行wanwenyc.xml文件
四、将所有静态文件整合到一个目录下
进入项目的settings.py文件中,将所需所有的静态文件整合到一个静态目录中
1.在项目中创建文件夹“staticall”;
2.在settings中配置静态文件路径
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticall') #将"staticall"文件夹作为总的静态文件的根目录,需要运行python manage.py collectstatic才能使用 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), os.path.join(BASE_DIR,'extra_apps/xadmin', 'static'), #将xadmin下的静态文件加到总的静态文件路径下 ] #将static加入python根搜索路径,总的静态文件路径
其中STATIC_URL与STATIC_ROOT不同,不能用同一个文件夹,否则会混乱
STATIC_ROOT:运行manage.py collectstatic后静态文件将复制到的目录。注意:不要把你项目的静态文件放到这个目录。
这个目录只有在运行collectstatic时才会用到。我最开始想当然的以为这个目录和MEDIA_ROOT的作用是相同的,
致使在开发环境下一直无法找到静态文件。
STATIC_URL:设置的static file的起始url,这个只可以在template里面引用到。这个参数和MEDIA_URL的含义差不多。
STATICFILES_DIRS:除了各个app的static目录以外还需要管理的静态文件位置,比如项目公共的静态文件差不多。和TEMPLATE_DIRS的含义差不多。
3. 运行python manage.py collectstatic,将所有静态文件收集到“staticall”文件夹中,以便nginx静态文件配置使用
五、安装nginx并配置:
1. wget http://nginx.org/download/nginx-1.13.7.tar.gz #下载nginx-1.13.7.tar.gz
2. tar -zxvf nginx-1.13.7.tar.gz #解压nginx-1.13.7.tar.gz
3. mv nginx-1.13.7 /opt/nginx #将解压后的文件移动到/opt/nginx的路径下
4.cd /opt/nginx #进入/opt/nginx路径下
5. 依次执行以下命令:
./configure
make
make install
或者 ./configure && make && make install
centos8安装nginx:yum install nginx
配置文件路径:/etc/nginx
6.执行完成后,nginx一般默认安装好的路径为/usr/local/nginx
在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。
cp nginx.conf nginx.conf.bak
然后打开nginx.conf,把原来的内容删除,直接加入以下内容:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 62061; #服务器启动的端口 server_name www.django.cn; #服务器的名字,没有则用127.0.0.1 charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; uwsgi_param UWSGI_SCRIPT wanwenyc.wsgi; uwsgi_param UWSGI_CHDIR /usr/local/mydjangoweb/wanwenyc; #djang项目的根路径 } location /static/ { alias /usr/local/mydjangoweb/wanwenyc/staticall/; #django项目的静态文件路径,alias为别名的意思,即指定/static/路径为/usr/local/mydjangoweb/wanwenyc/staticall/ } } }
注意:
1. 此处 uwsgi_pass 后的内容“127.0.0.1:8997”一定要与wanwenyc.xml中的<socket>127.0.0.1:8997</socket>中的内容一致。
2. location /static/ {
alias /usr/local/mydjangoweb/wanwenyc/staticall/; #django项目的静态文件路径,alias为别名的意思,即指定/static/路径为/usr/local/mydjangoweb/wanwenyc/staticall/
} 中配置的静态目录“/usr/local/mydjangoweb/wanwenyc/staticall/”一定不要是root用户下的路径,因为nginx访问不到(如果django项目的路径在root用户的用户目录下,即“/root/”目录下,要把django的项目移动到非root目录下,如此处将djang项目由“/root/PycharmProjects/wanwenyc”移动到“/usr/local/mydjangoweb/wanwenyc/”)
六、运行nginx:
1.cd /usr/local/nginx/sbin/ #进入/usr/local/nginx/sbin/路径
2. ./nginx -t #运行nginx,查看/usr/local/nginx/conf/中的配置文件(nginx.conf文件)是否有错
3. 无错后, ./nginx 运行nginx
4.如果有修改内容,需要重新运行uwsgi和nginx:
运行uwsgi:
cd /usr/local/mydjangoweb/wanwenyc/ #进入项目根目录
uwsgi -x wanwenyc.xml
云心nginx:
cd /usr/local/nginx/sbin/
./nginx -s reload #重新加载运行nginx
七、访问网址:http://192.168.100.198:62061/ (本机IP+端口号),也可以为:http://127.0.0.1:62061/
八、root用户下的django项目也可以,但是要把静态文件放到一个nginx能访问的目录,例如:/ usr/local/djangostatefile/路径下:
cd /usr/local
mkdir djangostatefile
cd /root/PycharmProjects/wanwenyc #/root/PycharmProjects/wanwenyc为root根目录下的django项目根路径
cp -r staticall /usr/local/djangostatefile/ #将staticall文件复制放到 /usr/local/djangostatefile/路径下
然后在/usr/local/nginx/conf/下的nginx.conf文件的配置如下:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 62061; server_name www.django.cn; charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; uwsgi_param UWSGI_SCRIPT wanwenyc.wsgi; uwsgi_param UWSGI_CHDIR /root/PycharmProjects/wanwenyc; #root目录下的项目 } location /static/ { alias /usr/local/djangostatefile/staticall/; #非root目录下的django静态文件目录 } } }
cd /usr/local/nginx/sbin/
./nginx -s reload #重新加载运行nginx
九、nginx设置开机启动:https://www.cnblogs.com/gimin/p/8893559.html
十、nginx 使用使用memcached:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; upstream memcacheds { server 127.0.0.1:11211; } #使用memcached server { listen 62060; server_name www.django.cn; charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; uwsgi_param UWSGI_SCRIPT wanwenyc.wsgi; uwsgi_param UWSGI_CHDIR /root/PycharmProjects/wanwenyc; #root目录下的项目 } location /static/ { alias /usr/local/djangostatefile/staticall/; #非root目录下的django静态文件目录 } } }
十一、不使用/usr/local/nginx/ 下的ngixn配置,使用 /usr/sbin/nginx (配置文件在/etc/nginx/路径下)部署:
cp -r staticall /mydjango/ :把staticall路径下的文件放到 /mydjango路径下