器材:
python3
django
nginx
uwsgi
mysql
ubuntu自带python2.7 和python3.5,默认为python2
由于我习惯用python3,所以需要切换一下版本
原理就是先将默认 python 的软链接删除
$ sudo rm -rf /usr/bin/python
再建立一个新的软链接python 链接到 python3.5
$ sudo ln -s /usr/bin/python3.5 /usr/bin/python
关于软链接的知识推荐看这里
$ sudo apt-get install python3-dev
如果不安装python3-dev后续步骤会报错,python-dev介绍点这里
$ sudo apt-get install python3-pip
之后就可以用
$ sudo pip3 install xxx
来安装python的包,其中xxx为想要安装的包名称,比如大名鼎鼎的numpy
$ sudo pip3 install django
$ sudo apt-get install mysql-server
$ sudo apt-get install mysql-client
$ sudo apt-get install libmysqlclient-dev
安装过程中需要设定密码
安装完成后运行
$ sudo netstat -tap | grep mysql
如果看到mysql 的socket处于 listen 状态则表示安装成功
开启远程访问,可以在自己的电脑上通过mysqlworkbench进行数据库的远程管理
第一步先更改mysql的配置文件,不同的系统配置文件路径不太一样但都会在 /etc/mysql 目录下
可以根据my.cnf中的内容进行查找
比如我的my.cnf中内容为
可以根据includedir 的路径进行查找
如我现在的系统配置文件路径为 /etc/mysql/mysql.conf.d/mysqld.cnf
利用vi 进行编辑
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
将 bind-address=127.0.0.1 改为bind-address=0.0.0.0 或者将整句注释掉
第二步建立可以远程访问的mysql账户
$ sudo mysql -u xxx -p
grant all privileges on *.* to 'xxx'@'%' identified by 'password' with grant option;
flush privileges;
其中:
最后重启mysql就可以远程访问了
$ sudo service mysql restart
python2 用mysqldb链接mysql,但是python3已经不支持这个包了
取而代之的是pymysql
$ sudo pip3 install pymysql
但是到这一步并没有结束,因为django中用的是mysqldb这个包
要想让dango使用pymysql需要在django项目的 __ini__.py中添加如下语句
import pymysql
pymysql.install_as_MySQLdb()
$ sudo apt-get install nginx
安装结束后,启动nginx
$ sudo service nginx start
然后呢访问一下服务器的ip 或者在服务器上直接访问127.0.0.1
比如腾讯云上的服务器没有图形界面在命令行可以用w3m进行访问(需要apt安装)
如果出现了
证明安装成功(shift+q 为退出w3m的操作)
$ sudo pip3 install uwsgi
首先应该搞清楚uwsgi nginx django 之间的协同原理然后再进行配置工作,这样就会比较好的理解这些配置的内容了
戳这里了解Nginx+uWSGI+Django原理
uwsgi支持多种配置方式,本文采用第一种 ini文件的方式
[uwsgi]
socket = :8001 #用于与nginx通许的端口,亦可以写成文件的形式
chdir= /var/www/***/*** #你的django项目路径
module = 你的django中的 wsgi.py文件
master = true
processes = 4
threads = 4
chmod-socket = 666
chown-socket = 拥有该socket的用户名
daemonize = 你想存放日志的文件的全路径 .log
vacuum = true
常用选项:
这是uwsgi的中文文档里面有更详细的说明
首先打开nginx的配置文件看看
$ sudo cd /etc/nginx
$ sudo vi nginx.conf
可以看到文件中有如下两句
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
就是说在以上路径中建立配置文件会自动读取
所以我在/etc/nginx/conf.d中建立了自己的配置文件ngcon.conf
内容如下
server {
listen 80;
server_name www.xxxx.com; #域名,没有域名就写ip地址就可以
charset utf-8;
client_max_body_size 75M;
location /static {
alias 静态文件路径,例如 /var/www/xxxx/static;。
}
location / {
uwsgi_pass 127.0.0.1:8001; #与前面的uwsgi配置相同
include /etc/nginx/uwsgi_params;
}
}
初始化uwsgi,–ini后面为uwsgi的配置文件
$ sudo uwsgi --ini /xxx/xxx/***.ini
重启nginx
$ sudo service nginx reload
每次启动服务器都需要将uwsgi进行一次初始化
如果嫌麻烦,可以将uwsgi的初始化命令写入 /etc/rc.local 中
这样每次启动都会自动初始化uwsgi了