# cloudcomputing 一,克隆储存库 git clone https://github.com/justdjango/django-ecommerce.git 然后按网站上的方法设置虚拟环境,下载requirement,我这里是先安装虚拟环境,再在虚拟环境文件夹内克隆库。 二,更改配置,将django-ecommerce/djecommerce/settings文件夹下的base.py文件中的SECRET_KEY值修改成自己指定的(可以设置为: `SECRET_KEY = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'` 然后修改production.py文件的ALLOWED_HOSTS和数据库,改为云数据库,公钥和私钥可以随便找一对写上去。 `ALLOWED_HOSTS = ['*']` 或者*改成外网ip地址or域名,星号表示全都能访问。 将原来的数据库改为云数据库: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #使用mysql作为数据库 'NAME': 'your database name', 'USER': 'your mysql user name', 'PASSWORD':'your mysql user password', 'HOST':'云数据库ip地址', 'PORT':'3306', #mysql默认端口号 } } ``` 然后在django-ecommerce文件夹下执行python mange.py collectstatic(若没有文件夹就在django-ecommerce文件夹下创建一个名为static_root的文件夹) 再将djecommerce文件下的wsgi.py更改为 ``` import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djecommerce.settings.production') application = get_wsgi_application() ``` 接下来就是配置nginx和uwsgi 下载nginx和uwsgi 然后配置一个uwsgi的文件,起名叫uwsgi.ini,可以放在django-ecommerce文件夹下新建一个uwsgi_conf文件夹。 里面内容是: ``` # uwsig使用配置文件启动 [uwsgi] # 项目所在的根目录 chdir=/root/env/django-ecommerce # 项目中wsgi.py文件的目录,相对于项目目录 wsgi-file=%(chdir)/djecommerce/wsgi.py # 设置日志目录 daemonize=%(chdir)/uwsgi_conf/uwsgi.log # uWSGI进程号存放 pidfile=%(chdir)/uwsgi_conf/uwsgi.pid # 支持ip+port模式以及socket file模式 #socket=%(chdir)/uwsgi_conf/uwsgi.sock socket=127.0.0.1:7777 # 进程个数 processes = 4 # 每个进程worker数 workers=5 # 指定工作进程的线程数 threads=2 master=True # 设置虚拟环境路径 virtualenv=/root/env ``` 然后在/etc/nginx下找到nginx.conf文件,修改其中内容为: ``` # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user root; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { # 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 /var/log/nginx/access.log main; server { listen 80; server_name ip; #这里需要改成云主机外网!!! charset utf-8; # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; location /static { # 指定静态文件存放目录 alias /root/env/django-ecommerce/static_root/; } location / { # 包含uwisgi的请求参数 include uwsgi_params; # 转交的uwsgi uwsgi_pass 127.0.0.1:7777; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } } ``` 运行ngixn和uwsgi: systemctl start nginx.service 进入/root/CCP/Django-Ecommerce/uwsgi_conf文件夹,启动uwsgi: uwsgi --ini uwsgi.ini 访问云主机外网即可访问页面 负载均衡器参照实验六进行添加。 至于前端的一些界面我稍微有些修改,但大体还是一样的。