centos7 部署python3 +MySQL + redis + Django + uwsgi + Nginx环境
1、更新系统的依赖
yum update -y yum -y groupinstall "Development tools" yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel gcc mariadb-devel
2、安装python3.7并建立虚拟连接
cd /usr/local wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz tar -zxvf Python-3.7.0.tgz cd Python-3.7.0 ./configure --prefix=/usr/local/python3 make && make install ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
3、安装虚拟环境 (本人习惯一个项目一个虚拟环境)
pip3 install virtualenv ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv mkdir -p /data/env mkdir -p /data/web cd /data/env virtualenv --python=/usr/bin/python3 website
4、安装外层uwsgi并建立软连接
pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi/usr/bin/uwsgi
5、启动虚拟环境并将项目搬入
cd /data/env/website/bin source activate # 将项目搬入
6、在虚拟环境中再次安装uwsgi
pip3 install uwsgi
7、安装项目所需的依赖
pip3 install -r request.txt
8、# 安装MySQL 并修改密码和设置可支持自己电脑的Navicat连接
yum -y install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-server systemctl start mysqld systemctl enable mysqld cat /var/log/mysqld.log |grep 'A temporary password' mysql -u 'root' -p alter user 'root'@'localhost' identified by 'Password123456./'; use mysql; update user set host = '%' where user = 'root' and host='localhost'; flush privileges;
9、设置uwsgi
cd /data/web/website/
vim website.xml
<uwsgi>
<socket>127.0.0.1:8000</socket>
<chdir>/data/web/website</chdir>
<module>website.wsgi:application</module>
<master>true</master>
<processes>4</processes>
<vacuum>true</vacuum>
<daemonize>/data/web/uwsgi.log</daemonize>
</uwsgi>
10、安装 nginx
cd /home/ wget http://nginx.org/download/nginx-1.15.0.tar.gz tar -zxvf nginx-1.15.0.tar.gz cd nginx-1.15.0 ./configure make && make install
11、配置http(即配置Nginx.conf文件)
cd /usr/local/nginx/conf/
vim nginx.conf
# 将原 nginx.conf文件中的内容删除后 复制下面内容粘贴进去
events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; client_max_body_size 20m; server { listen 80; server_name 域名或IP,多个时用空格号隔开; charset utf-8; location / { include /usr/local/nginx/conf/uwsgi_params; uwsgi_pass 127.0.0.1:8000; uwsgi_read_timeout 60; } location /static/ { alias /data/web/website/static/; autoindex on; } location /media/ { alias /data/web/website/media/; autoindex on; } } }
12、安装并配置 Redis
cd /usr/local/ wget http://download.redis.io/releases/redis-4.0.6.tar.gz tar -zxvf redis-4.0.6.tar.gz yum install gcc cd redis-4.0.6 make && make install 将 /usr/local/redis-4.0.6/redis.conf 中的 daemonize no 修改成为 daemonize yes mkdir /etc/redis cp /usr/local/redis-4.0.6/redis.conf /etc/redis/6379.conf cd /usr/local/redis-4.0.6/utils/ vi redis_init_script # 在第一行加入如下两行注释,保存退出 # # chkconfig: 2345 90 10 # # description: Redis is a persistent key-value database # 注释的意思是,redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。 cp /usr/local/redis-4.0.6/utils/redis_init_script /etc/init.d/redisd cd /etc/init.d # 设置开机启动 chkconfig redisd on # 到此已经完全设置Redis开机启动了 # 全局启动命令 service redisd start # 全局停止命令 service redisd stop
13、启动Nginx 和启动项目命令
cd /usr/local/nginx/sbin/ ./nginx cd /usr/local/nginx/sbin/ ./nginx -s reload cd /data/env/website/bin source activate # 启动虚拟环境 cd /data/web/website/ kill -9 `pgrep uwsgi` # 杀死uwsgi进程 uwsgi -x website.xml # 重新启动uwsgi进程
14、在安全组中开发443端口并在阿里云申请https加密,
将申请SSL得到的.pem和.key文件放到 /usr/local/nginx/cert/下(目录自己建但要和配置https中ssl_certificate 和ssl_certificate_key 匹配)
15、 Nginx安装ssl模块
cd /home/nginx-1.15.0 yum -y install openssl openssl-devel ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make cp ./objs/nginx /usr/local/nginx/sbin/nginx_bak cd /usr/local/nginx/sbin/ ./nginx -s reload
16、# https 配置 (即重新配置Nginx.conf文件)
cd /usr/local/nginx/conf/ vim nginx.conf
# 然后将下列内容复制到nginx.conf中文件中去
#user nobody; worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; client_max_body_size 20m; server { listen 443 ssl; server_name 域名或IP, 多个时用空格号隔开; ssl_certificate /usr/local/nginx/cert/chengguoyun.pem; ssl_certificate_key /usr/local/nginx/cert/chengguoyun.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { include /usr/local/nginx/conf/uwsgi_params; uwsgi_pass 127.0.0.1:8000; uwsgi_read_timeout 60; } location /static/ { alias /data/web/website/static/; autoindex on; } location /media/ { alias /data/web/website/media/; autoindex on; } } # 反向代理到80 端口 server { listen 80; server_name 域名或IP, 多个时用空格号隔开; rewrite ^(.*)$ https://$host$1 permanent; } }
微信搜索公众号“算联多优惠神器”,每天都可以领取美团、饿了么的红包优惠券,还有京东、淘宝、拼多多的购物优惠券,更有景区特价门票、动车飞机特价票!!!