阿里云搭建服务器
更新源
1 2 sudo apt-get update sudo apt-get upgrade
安装nginx
1 2 3 4 sudo apt-get install nginx sudo /etc/init.d/nginx start # (start可以改成restart/stop) # 或是sudo service nginx start # 然后浏览器输入服务器IP,观察是否有welcom to nginx!
安装py3和virtualenv
1 2 sudo apt-get install git python3 python3-pip sudo pip3 install virtualenv
修改python版本:
法一:(不建议)
1 2 3 4 5 6 7 8 9 $ 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. */
▲.切换Python3 为默认版本:(建议)
1 2 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 为默认版本:
1 sudo update-alternatives --config python
安装虚拟环境
1 2 $ cd /var/www $ sudo virtualenv env35
下载和配置网站
1 2 3 4 $ sudo git clone https://github.com/KyrieWang233/homework_submission-master.git $ source env35/bin/activate $ cd home... $ sudo pip3 install -r requirements.txt
1 2 3 4 5 6 $ 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
1 2 $ sudo pip3 install uwsgi $ uwsgi --http :8000 --module homework_submission.wsgi
编辑/var/www下的uwsgi.ini
1 2 3 4 5 6 7 8 9 10 [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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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;
软连接
1 2 3 4 5 cd /etc/nginx cd sites-enabled rm default ln -s /var/www/nginx.conf homework_submission ls
重启nginx
/etc/init.d/nginx restart
运行uwsgi
1 2 cd /var/www uwsgi --ini uwsgi.ini
让uwsgi自启动
vim /etc/rc.local(注意非虚拟环境也得安装uwsgi模块)
1 2 3 4 添加下面代码: /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这个利器,你可以放心的确保你的服务可以完美的启动和运行