第一章、准备工作
第1节、创建项目目录
准备好项目代码,将代码上传至myproject
mkdir myproject
第2节、安装python3
cd /usr/local/
mkdir Python
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
tar -zxvf Python-3.8.0.tgz
mkdir /usr/local/Python/py3_project
cd Python-3.8.0
./configure --prefix=/usr/local/python3 --enable-shared
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH
第3节、安装mysql
# 在线安装方法,离线方法后续发布
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm --nogpgcheck
yum -y install mysql-community-server
# 启动
systemctl start mysqld.service
# 初始密码
grep "password" /var/log/mysqld.log
# 进入mysql:
mysql -uroot -p
# 修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY ‘pwd’;
若无法运行,则先:
set global validate_password_policy=0;
set global validate_password_length=1;
第4节、创建mysql用户和数据库
create database laws;
create user 'Laws'@'%' identified by 'pwd';
grant all privileges on laws.* to 'user'@'%' identified by 'pwd' with
grant option;
flush privileges;
第二章、虚拟环境
第1节、安装虚拟环境
pip install virtualenv
第2节、创建新的虚拟环境
# 在myproject下创建名为myenv的虚拟环境
cd myproject
mkdir env
virtualenv myenv
第3节、进入及退出虚拟环境
source lawsenv/bin/activate
# 退出虚拟环境
deactivate
第三章、安装django和pymysql
第1节、可进入虚拟环境后进行安装
# 安装django,==后面是版本号
pip3 install django==3.2.16
# 安装pymysql,用于操作mysql
pip3 install pymysql
第2节、配置项目文件__init__.py
这里必须注意,需要改动__init__.py,以操作mysql
cd /myproject/codeproject
cd /codeproject
# 修改配置文件,用于操作mysql
vi __init__.py
import pymysql
pymysql.install_as_MySQLdb()
第3节、配置项目文件settings.py
vi settings.py
DEBUG=True # 直接启动、使用uwsgi时,若用nginx,改为False
ALLOWED_HOSTS = ['*’]
STATIC_URL = '/static/'
STATIC_ROOT = Path(BASE_DIR, 'static')
STATICFILES_DIRS = [Path(BASE_DIR, '/static/')]
第4节、配置项目文件urls.py
• 当使用域名或者ip通过监听80端口直接访问时,首页展示内容:
• 添加:
path('',views.index)
在虚拟环境启动django项目
python manage.py makemigrations app01
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
第四章、虚拟环境下使用uwsgi
1、第1节、安装uwsgi
pip3 install uwsgi
第2节、用uwsgi启动django项目
uwsgi --http :8000 --module Laws.wsgi
#uwsgi加上热加载命令
uwsgi --http :8000 --module Laws.wsgi --py-autoreload=1
第3节、用uwsgi配置文件启动项目
cd Laws
vi uwsgi.ini
# 输入下一节的内容。
# 放开http=0.0.0.0:8000时,直接作为web服务器
# 放开 socket=0.0.0.0:8000
chmod-socket=664
# 与nginx通信,中转来自前端网站的请求。
第4节、uwsgi.ini的内容
[uwsgi]
#指定 django 的项目目录,第一层
chdir=/myproject/mycode#这里需要写项目的第二层目录 Laws
module=Laws.wsgi
#填写虚拟环境的绝对路径
home=/myproject/env/myenv
master=true
processes=5
#指定 socket 协议,运行 django,只能与 nginx 结合时使用
socket=0.0.0.0:8000
#如果你没用 nginx,只想自己启动一个 http 界面,用这个
#http = 0.0.0.0:8000 # 直接作为 web 服务器
chmod-socket=664 #用于和 nginx 通信
# clear environment on exit
vacuum=true
第5节、通过配置文件启动uwsgi
uwsgi --ini uwsgi.ini
#放开http时,可用网页端输入:
可公开网络访问的项目所在ip:8000/index/
myweb.com:8000/index/
第五章、nginx
第1节、收集django 的静态文件
# 编辑crm的settings.py配置文件,写入如下代码
# 定义django的静态资源根目录,便于用命令收集资源,存放的地儿
STATIC_ROOT='/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static’)
]
# 用命令收集静态文件
python3 manage.py collectstatic
第2节、安装Nginx
sudo yum install -y epel-releasesudo yum -y update
sudo yum install -y nginx
# 安装成功后,
# 默认的网站目录为: /usr/share/nginx/html
# 默认的配置文件为:/etc/nginx/nginx.conf
第3节、操作nginx
# 启动 Nginx:
systemctl start nginx
# 停止Nginx:
systemctl stop nginx
# 重启Nginx:
systemctl restart nginx
# 查看Nginx状态:
systemctl status nginx
# 启用开机启动Nginx:
systemctl enablenginx
# 禁用开机启动Nginx:
systemctl disablenginx
第4节、配置nginx
cd /etc/nginx
vi nginx.conf
# 根据右侧内容配置
server {
listen 80;
listen 443 ssl;
server_name myweb.com;
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
#error_page 500 502 503 504 /50x.html;
location = {
#使用 uwsgi_pass 转发基于 uwsgi 协议的一个请求
uwsgi_pass 0.0.0.0:8000; #与 uwsgi 配置一样
include /etc/nginx/uwsgi_params;
}
#配置一个 url 的入口,告诉 django 静态文件在哪里去找
#当请求 url 是 songwmeta.com/static/的时候
#就进行别名,nginx 去/static 下寻找 js 文件
location /static {
alias /static/;
}
#sslon;
ssl_certificate /myproject/ssl/myweb.com_bundle.pem;
ssl_certificate_key /myproject/ssl/myweb.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
}
第5节、上传ssl证书
cd myproject
mkdir sll
通过ftp方式上传。
# 启动运行是否正常
# 启动 Nginx:
systemctl start nginx
# 查看Nginx状态:
systemctl status nginx
第六章、配置supervisor工具,管理django后台
第1节、安装supervisor
# 这个东西只能用python2去实现.
# 下载supervisor
easy_install supervisor
# 配置supervisor的配置文件,编写django任务
echo_supervisord_conf > /etc/supervisor.conf
第2节、编写运行django的任务
vim /etc/supervisor.conf
# 在最底行写入如下代码
[program:Laws]
command=/myproject/env/myenv/bin/uwsgi --ini
/myproject/Laws/uwsgi.ini
autorestart=true
stopasgroup=true
killasgroup=true
第3节、启动suopersivod这个程序
# 启动服务端
supervisord -c /etc/supervisor.conf
# 通过客户端命令查看任务
supervisorctl -c /etc/supervisor.conf
第4节、Supervisorctl管理命令
supervisorctl -c /etc/supervisor.conf
Laws RUNNING pid 5293, uptime 0:03:03
supervisor> stop all #停止所有任务
supervisor> start all #启动s所有任务
supervisor> status Laws
# 在使用Superivosr进行进程管理时,不能够同时开启uWSGI的“daemonize ”。
# 删除“uwsgi.ini”文件中的“daemonize ”项即可
第七章、参考文献
https://www.cnblogs.com/zhang-zi-yi/p/10792928.html
https://theaisummer.com/uwsgi-nginx/