windows不支持python中uwsgi模块,通过apache和mod_wsgi替代uwsgi。
https://visualstudio.microsoft.com/zh-hans/downloads/
此电脑-->属性-->高级系统设置
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\\www\\mysql-8.0.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:\\www\\bbs_db_data
# 允许最大连接数
max_connections=200
#链接等待时间
wait_timeout=600
#允许最大packet
max_allowed_packet=64M
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#慢日志
slow_query_log=ON
slow_query_log_file=C:\\www\\mysql-8.0.25-winx64\\slow.log
#慢日志超时时间
long_query_time=1
#记录不走索引的sql语句到慢日志
log_queries_not_using_indexes=ON
#每分钟记录的慢日志数量
log_throttle_queries_not_using_indexes=10
#锁等待
lock_wait_timeout=60
#表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=1
##binlog日志
log_bin=C:\\www\\mysql-8.0.25-winx64\\mysql-bin
#binlog日志格式
log-bin-index=C:\\www\\mysql-8.0.25-winx64\\mysql-bin.index
#bin_log日志大小
max_binlog_size=500M
#binlog日志记录格式
binlog_format=ROW
#binlog日志存放时间,30天
binlog_expire_logs_seconds=2592000
#binlog刷盘策略,每产生一次事务刷盘一次
sync_binlog=1
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
##复制
##relaylog
relay_log=/var/lib/mysql/relay
relay_log_index=C:\\www\\mysql-8.0.25-winx64\\relay.index
max_relay_log_size=500M
# 在数据库启动后立即启动自动relay log恢复
relay_log_recovery=ON
##gtid复制
#开启GTID复制
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
server-id=1
#1062:容错:主键冲突,数据不一致
slave_skip_errors=1032,1062
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
# 设置mysql数据库格式
prompt=siveco [\\d]>
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
mysqld --user=mysql --initialize-insecure
只能通过cmd才能成功
sc create MySQL binPath= "C:\www\mysql-8.0.25-winx64\bin\mysqld.exe"
net start MySQL
net stop MySQL
##删除mysql服务(前提需要先停止 MySQL 服务)
mysqld -remove
PS C:\Users\Administrator> mysql -uroot -p
Enter password:
mysql> alter user root@'localhost' identified by 'bbX123456';
mysql> flush privileges;
由于redis官方并不支持windows版本,但是巨硬在github维护过redis的windows版本
https://github.com/microsoftarchive/redis/releases
使用msi安装队windows来说是比较方便的方式
redis.windows-service.conf
...
#监听地址
bind 0.0.0.0
...
#登录密码
requirepass 123456
win+R -->cmd
C:\Users\Administrator>net stop redis
Redis 服务已成功停止。
C:\Users\Administrator>net start redis
Redis 服务正在启动 .
Redis 服务已经启动成功。
https://gitee.com/qishibo/AnotherRedisDesktopManager/releases
有的服务器默认安装了iis服务默认使用80端口,运行nginx需要该自己端口或者将iis服务关掉
iisreset /RESTART 停止后启动
iisreset /START 启动IIS (如果停止)
iisreset /STOP 停止IIS (如果启动)
iisreset /REBOOT 重启电脑
iisreset /REBOOTonERROR 如果停止IIS失败重启电脑
iisreset /NOFORCE 不用强迫IIS停止
iisreset /TIMEOUT:X 在X秒后,IIS被强制停止,除非 /NOFORCE 参数给出.
最方便的使用,当然你也可在CMD下运行:iisreset /start
http://nginx.org/en/download.html
WinSW是一个可执行二进制文件,可用于包装和管理作为Windows服务的自定义进程
https://repo.jenkins-ci.org/artifactory/releases/com/sun/winsw/winsw/2.9.0/
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>Nginx</id>
<name>Nginx</name>
<description>High Performance Nginx Service</description>
<logpath>C:\www\nginx-1.20.1\logs</logpath>
<executable>nginx.exe</executable>
<stopexecutable>nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
<logmode>rotate</logmode>
</service>
添加新功能可参照mysql安装部分
运行winsw安装nginx
按下Win+X+A键 打开命令提示符(管理员)
C:\www\nginx-1.20.1\nginx-server.exe install
winsw支持的其他操作
将nginx-server.exe所在目录加入环境变量可以直接操作
install 将服务安装到Windows Service Controller.
uninstall 卸载服务和上面相反的操作。
start 启动服务,该服务必须已经安装。
stop 停止服务。
stopwait 停止服务并等待,直到它实际上停止为止。
restart 重新启动服务。如果该服务当前未运行,则此命令的作用类似于start。
status 检查服务的当前状态。
net start nginx
net stop nginx
IIS服务导致80端口占用问题
iisreset /RESTART 停止后启动
iisreset /START 启动IIS (如果停止)
iisreset /STOP 停止IIS (如果启动)
iisreset /REBOOT 重启电脑
iisreset /REBOOTonERROR 如果停止IIS失败重启电脑
iisreset /NOFORCE 不用强迫IIS停止
iisreset /TIMEOUT:X 在X秒后,IIS被强制停止,除非 /NOFORCE 参数给出.
最方便的使用,当然你也可在CMD下运行:iisreset /start
如果nginx长时间关不掉可以强制杀死
查看nginx服务进程
tasklist | findstr nginx
杀死进程
tskill 进程ID
https://www.python.org/downloads
先安装代码里面需要的依赖
上传自己项目的代码,根据依赖先安装依赖
创建pip文件夹,并在此文件夹下创建pip.ini
pip.ini文件内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
运行之前先把requirements.txt里面的uwsgi删除,windows安装会报错
pip install -r requirements.txt
这里uwsgi会安装失败,windows不支持uwsgi,所以只能通过apache的方式去使用
http://httpd.apache.org/
vc14版本
https://www.apachelounge.com/download/VC14/
此电脑--》属性
配置文件校验
httpd -k install -n Apache
httpd -k start #不会提示详细的错误信息。
httpd -k start -n apache #会提示详细的错误信息,其中的"apache"修改为你的Apache服务名,可以到计算机服务里找。
httpd -k restart -n apache #重启。
net start apache #利用Windows托管服务命令。
httpd -k stop
httpd -k uninstall
Windows卸载服务命令:sc delete 服务名
若Apache服务器软件不想用了,想要卸载,一定要先卸载apache服务,然后删除安装文件(切记,若直接删除安装路径的文件夹,会有残余文件在电脑,可能会造成不必要的麻烦),在cmd命令窗口先停止服务再卸载,(建议先停止服务再删除):
http://127.0.0.1:10050/
LoadModule wsgi_module modules/mod_wsgi.so 使用于apache配置为python2系列的运行环境,以插件so方式load可直接使用。
在python3系列时,apache的管网各个版本中都找不到mod_wsgi.so,只能在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi这个网站中下载whl文件,自行通过pip命令编译,集成到python的site-package包中,然后再到apache的配置文件指定python执行环境。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
mod_wsgi‑4.7.0+ap24vc14‑cp35‑cp35m‑win_amd64.whl
文件格式说明:
mod_wsgi‑4.7.0:表示当前mod_wsgi版本是4.7.0
ap24vc14:表示apache版本是2.4,基于vc2014编译出来
cp35-cp35m:表示对应的python版本是3.5系列
win_amd64:表示对应的平台是windows 64bit
我们python是3.6.7,系统是64位,那我们就选择cp36+amd64的版本文件
复制下载的mod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl到python的scripts目录,然后执行pip3 install "C:\www\python3.6.7\Scriptsmod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl"
C:\Windows\system32>cd C:\www\python3.6.7\Scripts
C:\www\python3.6.7\Scripts>pip3 install mod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl
mod_wsgi-express.exe module-config
LoadFile "c:/www/python3.6.7/python36.dll"
LoadModule wsgi_module "c:/www/python3.6.7/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/www/python3.6.7"
sqlmould里面可能没有建库语句,需要手写一下
create database bbspy charset utf8mb4;
USE bbspy;
mysql -uroot -p < C:\www\sqlmould\bbs_mould.sql
create user root@'%' identified by 'bbX123456';
grant all on *.* to root@'%' with grant option;
flush privileges;
...
##--------------- Django项目部署配置 ---------------##
# 声明项目根目录变量
Define DjangoRoot "C:/www/bbs2.0/backed/bbs2.0"
#wsgi配置
LoadFile "c:/www/python3.6.7/python36.dll"
LoadModule wsgi_module "c:/www/python3.6.7/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/www/python3.6.7"
#指定项目的wsgi.py配置文件路径
WSGIScriptAlias / "C:/www/backed/bluebeeSync/wsgi.py"
#指定项目目录,并配置访问权限。WSGIPythonPath取代DocumentRoot配置,或者保留DocumentRoot一致
WSGIPythonPath "C:/www/backed/bbs2.0"
<Directory "C:/www/backed/bbs2.0/bluebeeSync">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
...
#user nobody;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
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 120s 120s;
keepalive_requests 10000;
#gzip on;
include conf.d/*.conf;
}
proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 8k;
www.conf
upstream api {
server 127.0.0.1:10050;
}
server {
listen 80;
server_name localhost;
charset utf-8;
access_log C:/www/nginx-1.20.1/logs/bs2.0_demo_access.log;
error_log C:/www/nginx-1.20.1/logs/bbs2.0_demo_error.log;
client_max_body_size 75M;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_types *;
location /{
proxy_pass http://api;
include proxy_params;
}
location /w {
alias C:/www/bbs2.0/front/bbs_w/dist/;
try_files $uri $uri/ /w/index.html;
rewrite ^/w/e=(.*) /w/?e=$1 redirect;
rewrite ^/w/(.*)/e=(.*) /w/$1/?e=$2 redirect;
}
location /static/ {
alias C:/www/bbs2.0/front/bbs/dist/static/;
index index.html index.htm;
}
location /home{
alias C:/www/bbs2.0/front/bbs/dist/;
index index.html;
try_files $uri $uri/ /home/index.html;
}
}