Django+virtualenv+virtualencwrapper+uwsgib部署low_permission
第一步,在CentOS Linux 环境下使用xshell下载python3
编译安装python3
1,解决依赖关系: yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 注意:下载时如果DNS无法解析相应的地址,将会下载失败,可能会导致后续操作不能执行,因为依赖关系没解决。提前配置好DNS也很重要。如果哪个下载失败,可继续操作,单独下载。 2,下载软件源代码,推荐到opt/底下: wget https://www.python.org/ftp/python/3.4.7/Python-3.4.7.tar.xz 3,解压缩软件源代码, xz -d Python-3.4.7.tar.xz tar -xf Python-3.4.7.tar 4,切换进入源代码目录:cd python-3.4.7 5,./configure释放编译文件: ./configure --prefix=/opt/python347/ 6,开始编译,编译安装,make编译,make install 编译安装: make && make install 7,检查你自己制定的安装路径,/opt/python347/ 查看/opt/python347/bin目录,python3的可执行命令都在bin底下了 cd opt ls cd python347 ls cd ./bin ls 8,创建软连接: cd ~ ln -s /opt/python347/bin/python3 /usr/bin/python3 ln -s /opt/python347/bin/pip3 /usr/bin/pip3 注意: 不建议把原来的python软连接删除,因为yum使用的是原生自带的python2。 如果将python指向python3,yum会用不了。所以还是添加软连接为好。 9,配置系统环境变量,配置PATH,加入python3的目录 PATH=/opt/python347/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 或者 PATH=/opt/python347/bin/:$PATH 写入个人配置文件,永久生效/etc/profile vim /etc/profile :编辑个人配置文件,写入PATH PATH=/opt/python347/bin/:$PATH #操作方法:摁“o”进入编辑,粘贴指令,摁‘Esc’,输入:wq! 即可 执行命令source /etc/profile:重新读取文件使其生效 10,查看python3,pip: python3 pip3 pip3 list 11,升级pip3 :pip3 install --upgrade pip 12,pip3 list不再提示更新 13,下载django:pip3 install django==1.11.14
第二步,Linux环境下安装虚拟环境virtualenv
1,指定源下载:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv 2,看看下哪儿了:find / -name virtualenv 3,看看管理包都有啥:pip3 list 4,创建项目存放地,好管理: cd / mkdir data cd data mkdir projects
第三步,Linux环境下下载虚拟环境管理器VirtualenvWrapper管理虚拟环境
1,下载:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper 2,找到文件:find / -name virtualenvwrapper.sh 3,vim ~/.bashrc #打开这个文件,写入以下三行信息(根据自己目录结构修改参数) export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录 VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #赋值一个virtualenvwrapper变量 source /opt/python347/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本 4.读取virtualenvwrapper的环境变量,使得每次开机就加载 source ~/.bashrc 5.此时 virtualenvwrapper 就会自动创建一些管理命令 mkvirtualenv my_django15:创建一个虚拟环境,默认会激活当前这个虚拟环境 workon my_django15:快速进入虚拟环境 deactivate:手动停止虚拟环境 rmvirtualenv my_django15:删除虚拟环境,需要先退出虚拟环境 lsvirtualenv:列举所有的环境。 cdvirtualenv:导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。 cdsitepackages:和上面的类似,但是是直接进入到 site-packages 目录中。 lssitepackages:显示 site-packages 目录中的内容。 完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html #以下只做参考 确保开发环境一致性操作: 1,本地安装包环境写入到txt文件,在本地cmd执行:pip3 freeze > requirements.txt 2,将此文件拖拽至Linux服务器,需要有工具 3,在linux内执行命令下载:pip3 install -r requirements.txt 使用 virtualenvwrapper 管理虚拟环境
第四步,下载django
pip3 install django==2.0.14
第五步,下载mysql
1、新建文件、配置仓库源 编辑创建mariadb.repo仓库文件 vi /etc/yum.repos.d/MariaDB.repo 2、添加repo仓库配置 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 3、下载 yum install MariaDB-server MariaDB-client -y 4、启动 systemctl start mariadb(通过yum下载的,可以使用systemctl管理) 5、初始化 mysql_secure_installation
6、登录 mysql -uroot -p 密码 7、修改密码 set password = PASSWORD('redhat123'); 8、创建普通用户,远程登录 创建用户 create user '用户名'@'%' identified by '密码'; 给新用户授权: grant all privileges on *.* to '用户名'@'%' identified by '密码'; 刷新权限: flush privileges; 使用cdm终端登录验证: mysql -u用户名 -p -h 10.0.0.10 输入密码 9、新用户没授权,会有权限限制 MariaDB [(none)]>证明没有使用数据库 use mysql; Access denied for user 'xxx'@'%' to database 'mysql' 新建的普通用户没有权限,需要切换到root用户。 root用户下: use mysql; Database change MariaDB [mysql]>证明已使用mysql 查看创建的用户: select host,user,password from user where user='hui'; 10、权限 对用户开通所有的权限:grant all privileges on *.* to username@'%'; 查看用户的权限:show grants for username@'%'; 移除权限(使用root用户):revoke all privileges on *.* from username@'%'; 11、设置编码 vim /etc/my.cnf写入配置: [mysqld] character-set-server=utf8 collation-server=utf8_general_ci log-error=/var/log/mysqld.log [client] default-character-set=utf8 [mysql] default-character-set=utf8 修改完配置文件,需要重启mysql,使得生效 systemctl stop mariadb systemctl start mariadb 查看编码相关信息:\s (进去后执行) 12、关闭防火墙 mysql远程登录授权配置: 注意!关闭防火墙。、。。。。这样就不会再出莫名其妙的bug了。。。 iptables -F #清空防火墙规则 #关闭防火墙 systemctl stop firewalld #永久关闭防火墙开机自启 systemctl disable firewalld 13、mysql的备份和恢复 创建数据库:create database s12; 备份:mysqldump -u root -p --all-databases > /tmp/db.dump 删除:drop database s12; 恢复(两种方式): 1.登录数据库后:source /tmp/db.dump 2.在登录时候,进行数据写入:mysql -uroot -p < /tmp/db.dump 14、查看端口号是否被占用 lsof -i:3306 netstat -tunlp|grep 3306
第六步,下载配置uwsgi
一、确保django项目可以正常运行 1.创建虚拟环境,下载django1.11.15,创django项目 1.我把所有虚拟环境的项目都创在了/projects下,所以 cd /projects mkvirtualenv low_permissioin_venv 2.好习惯,检查环境是否独立: which pip pip3 list 3.下载django:pip3 install django==1.11.15 4.创建django项目(或者使用拖拽工具yum install lrzsz,将项目拖拽进去,然后进行解压unzip low_permission.zip) django-admin startproject django15 cd django15 python manage.py runserver 0.0.0.0:8000 5.测试访问,浏览器输入: 10.0.0.10:8000 二、确保uwsgi可以正常使用 2.安装uwsgi 1.下载:pip3 install -i https://pypi.douban.com/simple uwsgi 2.通过uwsgi启动一个python web服务 准备一个test_uwsgi.py文件,写入代码 def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World,im uwsgi....."] # python3 3,通过命令启动这个文件 uwsgi --http :8000 --wsgi-file test_uwsgi.py 4.可以测试访问 http://10.0.0.10:8000/ 三、uwsgi结合django开启项目 5.我的项目目录 (django15) [root@localhost /projects/django15/django15 03:04:40]#ls __init__.py __pycache__ settings.py test_uwsgi.py urls.py wsgi.py 6.通过uwsgi,启动django项目 1.准备好django项目 2.编写一个hello测试视图 from django.shortcuts import HttpResponse def hello(request): return HttpResponse('hello , im uwsgi.....') # 加上url视图 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^hello/',hello), ] 3.通过uwsgi启动你的django项目 3.1.进入你的django项目,这是第一层 cd /projects/django15 3.2.通过命令启动 uwsgi --http :9000 --module django15.wsgi↓ (django15) [root@localhost /projects/django15 04:11:47]#uwsgi --http :9000 --module django15.wsgi 3.3.测试访问你的django应用 9000端口 10.0.0.10:9000/hello/ http://10.0.0.10:9000/admin/(前端样式丢失) 3.4.注意,此时你的项目丢失静态文件,因为uwsgi不解析静态文件配置 7.uwsgi热加载django程序 启动命令添加一条参数 uwsgi --http :9000 --module django15.wsgi --py-autoreload=1