【Linux学习笔记1】-centos6.9部署django
一,centos6.9部署django
部署套件:centos6.9+nginx+mysql+uwsgi+python3+django
首先还是要明白这几个部分之间的关系(自己也是初学者,希望大家多指正):
项目需求租了三年腾讯云的服务器,准备用这台服务器练练手,加做点自己想做的事情;并且申请了一个域名:数据处理研究。那么,让我们开始吧。
-
远程登陆
使用大名鼎鼎的SecureCRT,这是一个自己拥有一个属于自己的世界的感觉,虽然这个世界现在还一穷二白。😆
-
安装lnmp
-
下载 下载版lnmp(这里下载的是1.4),修改其中的lnmp.conf,变更数据库目录和网站目录。
Download_Mirror='https://soft.vpser.net' Nginx_Modules_Options='' PHP_Modules_Options='' ##MySQL/MariaDB database directory## MySQL_Data_Dir='/home/wwwdata/mysql/var' MariaDB_Data_Dir='/home/wwwdata/mariadb/var' ##Default website home directory## Default_Website_Dir='/home/wwwroot/default' Enable_Nginx_Openssl='y'
-
使用rz将压缩包上传到服务器,存入/tmp,进入/lnmp1.4,安装
# 进入tmp目录 cd /tmp # 上传 rz # 解压 tar xf lnmp1.4.tar.gz #安装 cd lnmp1.4 ./install.sh
安装过程中mysql选择3,即安装MySQL 5.6.36,需要有1G以上的内存。设置MySQL密码,存储引擎安装:Y。
PHP选择5,即PHP 5.6.31。
内存收集器安装,直接回车。
安装时间还是挺长的,耐心等待(我这花了28min)。
-
安装好以后发现mysql登陆不上,报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)。
-
回头再看还忘记了当时数据库咋设置的了,😂,可以通过该文恢复:
-
-
-
安装python3
-
进入/tmp/,执行以下命令
cd /tmp/ wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
如果实在是慢,可以采用迂回的方式(链接按着ctrl打开,是不是很神奇?)
- 在本地windows电脑上进入 python官网 之后下载 Python-3.6.4.tgz(或者直接进入 python下载 下载压缩包
- SecureCRT中输入rz(相关用法见 在SecureCRT上怎么下载/上传文件 ),上传下载好的文件
-
下载完成后,解压
tar -xzvf Python-3.6.4.tgz
-
进入解压后的Python-3.6.4文件夹,依次执行以下命令
cd Python-3.6.4 ./configure --prefix=/usr/local/python3 #将python3安装到/usr/local/python3/路径下 make && make install ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 #这两个ln命令建立链接,方便在终端直接使用python3和pip3命令
-
如果需要更新pip,使用命令
pip3 install --upgrade pip
-
-
安装virtualenv并使用虚拟环境
-
执行命令:
pip3 install virtualenv python3 -m venv /home/virtualenv/django # 创建名字为django的虚拟环境,之后进入虚拟环境,执行命令: cd /home/virtualenv/django/bin source activate
-
-
安装第三方库
-
在django虚拟环境下,安装第三方库:
-
首先进入虚拟环境下的tmp,之后创建 requirements.txt
cd /tmp vi requirements.txt
-
将下列第三方库的名称写入文件中
diff-match-patch==20121119 Django==2.0.1 django-crispy-forms==1.7.0 django-formtools==2.1 django-import-export==0.6.1 django-pure-pagination==0.3.0 django-ranged-response==0.2.0 django-reversion==2.0.12 django-simple-captcha==0.5.6 djangorestframework==3.8.2 et-xmlfile==1.0.1 future==0.16.0 httplib2==0.9.2 jdcal==1.3 odfpy==1.3.6 openpyxl==2.4.9 Pillow==5.0.0 pytz==2018.4 PyYAML==3.12 six==1.11.0 tablib==0.12.1 unicodecsv==0.14.1 uWSGI==2.0.17 xlrd==1.1.0 xlwt==1.3.0
vi使用(i进入INSERT模式,右键粘贴,ESC进入命令模式,:进入末行模式,输入wq+回车保存退出)
-
pip安装
pip install -r requirements.txt
-
之后安装 mysqlclient==1.3.12
pip install mysqlclient==1.3.12
如果报错 /bin/sh: mysql_config: command not found,执行以下命令手动安装:
cd /tmp wget http://mirrors.163.com/pypi/packages/6f/86/bad31f1c1bb0cc99e88ca2adb7cb5c71f7a6540c1bb001480513de76a931/mysqlclient-1.3.12.tar.gz#sha256=2d9ec33de39f4d9c64ad7322ede0521d85829ce36a76f9dd3d6ab76a9c8648e5 tar -xzvf mysqlclient-1.3.12.tar.gz cd mysqlclient-1.3.12 vi setup_posix.py #修改setup_posix.py下,mysql_config.path = "mysql_config" 改成 mysql_config.path = #"/usr/local/mysql/bin/mysql_config",保存并退出:wq! python setup.py install
-
-
-
上传项目
-
压缩test1项目,之后使用rz上传到/home/wwwroot/
cd /home/wwwroot/ rz tar -xzvf test1.tar.gz
-
下载uWSGI,并设置软链接。uWSGI可提供动态连接服务,往往与nginx配合使用(nginx处理静态文件),组成服务器软件。
浏览器——》服务器——》服务器软件(uWSGI+nginx)——》django
安装过lnmp后,nginx已经装好了,详情可见 LNMP安装了哪些软件?安装目录在哪?
pip3 install uwsgi ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
-
测试样例
-
创建test.py,进行如下编辑
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]
之后运行指令:
uwsgi --http :8001 --wsgi-file test.py # 相应的服务器的安全组要开放8001的入规则
之后进入 http://analysis1.space:8001/ 可以看到
-
释放某一个端口
netstat -lnp|grep 8001 #找到某一个端口的应用程序 tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN ?????/java kill -9 ????? #结束对应的应用程序
-
-
-
创建并启用test1_uwsgi.ini
vi test1_uwsgi.ini # 在test1_uwsgi.ini中进行如下配置 [uwsgi] #项目目录 chdir=/home/wwwroot/test1 # 启动uwsgi的用户名和用户组 uid=www gid=www # 指定项目的application module=test1.wsgi # 指定sock的文件路径 socket= :8001 # 启用主进程 master=true # 进程个数 workers=2 vacuum=true #环境 virtualenv = /home/virtualenv/django # 序列化接受的内容,如果可能的话 thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 harakiri=30 # 设置缓冲 post-buffering=1028 # 设置日志目录 daemonize=/home/wwwroot/test1/uwsgi.log # 启动UWSGI命令: uwsgi --ini test1_uwsgi.ini
-
-
连接uwsgi与nginx
-
创建test1.conf
vim /usr/local/nginx/conf/vhost/test1.conf # 输入以下内容 upstream django { server 127.0.0.1:8001; } server { listen 80; server_name analysis1.space; charset utf-8; client_max_body_size 1G; location /media { alias /home/wwwroot/test1/media; } location /static { alias /home/wwwroot/test1/static; } location / { root /home/wwwroot/test1; uwsgi_pass django; include uwsgi_params; } }
-
分配用户组、文件读取权限、重启nginx
chown -R www:www /usr/local/nginx/conf/vhost/test1.conf chmod -R 755 /usr/local/nginx/conf/vhost/test1.conf /etc/init.d/nginx restart
-