阿里云搭建django+nginx+uwsgi环境

阿里云搭建django环境

更新源

sudo apt-get update
sudo apt-get upgrade

安装nginx

sudo apt-get install nginx
sudo /etc/init.d/nginx start (start可以改成restart/stop)
#或是sudo service nginx start
然后浏览器输入服务器IP,观察是否有welcom to nginx!

安装py3和virtualenv

sudo apt-get install git python3 python3-pip
sudo pip3 install virtualenv

修改python版本:

法一:(不建议)
$ gedit ~/.bashrc   	#gedit .bash_aliases
在顶部加入一行alias python=python3
$ source ~/.bashrc	    #或是source ~/.bash_aliases o
$ python --version
就会发现是Python 3.5.2啦

/*or
Open your .bashrc file nano ~/.bashrc. Type alias python=python3 on to a new line at the top of the file then save the file with ctrl+o and close the file with ctrl+x. Then, back at your command line type source ~/.bashrc. Now your alias should be permanent.
*/
Ubuntu16.04切换python3和python2
▲.切换Python3为默认版本:(建议)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

切换Python2为默认版本:

sudo update-alternatives --config python

安装虚拟环境

cd /var/www
sudo virtualenv env35

下载和配置网站

sudo git clone https://github.com/KyrieWang233/homework_submission-master.git
source env35/bin/activate
cd home...
sudo pip3 install -r requirements.txt
sudo python manage.py collectstatic
sudo python manage.py migrate
python manage.py createsuperuser
sudo vim settings.py将其中的ALLOWED_HOST=[*]改为自己的IP

然后输入 python manage.py runserver 0.0.0.0:8000

安装、测试uwsgi

sudo pip3 install uwsgi
uwsgi --http :8000 --module homework_submission.wsgi

编辑/var/www下的uwsgi.ini

[uwsgi]
chdir=/var/www/homework_submission-master
module=homework_submission.wsgi
home=/var/www/env35
master=True
processes=10
socket= :8001
chmod socket=666
vacuum=True
max-requests=5000

编辑/var/www下的nginx.conf

upstream django{
server 127.0.0.1:8001;
}
server {
listen 80;
server_name sast.nymrli.top;
charset utf-8;
client_max_body_size 75M;
location /static{
alias /var/www/homework_submission-master/static;  
}
location /{
uwsgi_pass django;
include /var/www/uwsgi_params;
}
}

编辑/var/www下的uwsgi_params

uwsgi_param QUERY_STRING 	$query_string;
uwsgi_param REQUEST_METHOD 	$request_method;
uwsgi_param CONTENT_TYPE 	$content_type;
uwsgi_param CONTENT_LENGTH 	$content_length;     

uwsgi_param REQUEST_URI     	$request_uri;     
uwsgi_param PATH_INFO     	$document_uri;     
uwsgi_param DOCUMENT_ROOT    	$document_root;     
uwsgi_param SERVER_PROTOCOL 	$server_protocol;     
uwsgi_param REQUEST_SCHEME 	$scheme;     
uwsgi_param HTTPS     		$https if_not_empty;     

uwsgi_param REMOTE_ADDR     	$remote_addr;     
uwsgi_param REMOTE_PORT     	$remote_port;     
uwsgi_param SERVER_PORT    	$server_port;   
uwsgi_param SERVER_NAME    	$server_name;

软连接

cd /etc/nginx
cd sites-enabled
rm default
ln -s /var/www/nginx.conf homework_submission
ls

重启nginx

/etc/init.d/nginx restart

运行uwsgi

cd /var/www
uwsgi --ini uwsgi.ini

让uwsgi自启动

vim /etc/rc.local(注意非虚拟环境也得安装uwsgi模块)

添加下面代码:
/usr/local/bin/uwsgi --ini /var/www/uwsgi.ini

exit 0

uwsgi的热启动

在uwsgi.ini中加入

py-autoreload=1

重启一下:killall -9 uwsgi/usr/local/bin/uwsgi --ini /var/www/uwsgi.ini


总结

关于etc/ linit. d

如果你使用过inux系统,那么你一定听说过 init. d目录,这个目录到底是干嘛的呢?它归根结底只做了一件事情,但这件事情非同小可,是为整个系统做的,因此它非常重要。init.d目录包含许多系统各种服务的启动和停止脚本

关于 /etc/rc.local

rc.local也是我经常使用的一个脚本,该脚本是在系统初始化级别脚本运行之后再执行的,因此可以安', '地在里面添加你想在系统启动之后执行的脚本.

总结

Linux是灵活的,正因为它的灵活性,我们总是可以找到许多不同的办法来解决同一个问题,服务的例子就是一个很好的佐证,有了 /etc/init.d目录下的脚本,再加上 /etc/rc. local这个利器,你可以放心的确保你的服务可以完美的启动和运行

posted @ 2018-10-12 13:10  南邮果粒橙  阅读(639)  评论(0编辑  收藏  举报