首页 > 技术文章 > 配置虚拟机

wml3030 2020-11-26 08:47 原文

1.下载虚拟机

注意一定要设置网络配置,要是没有配置好,需要手动设置

2.在虚拟机中检查和下载Python,pip

Python-v

下载
cd /usr/local wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
解压
tar -zxvf Python-3.6.6.tgz
编译
./configure --prefix=/usr/local/python3
安装
make make install
建立软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3

pip-v

建立软连接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3

3.创建虚拟环境

创建data目录,里面创建env和wwwroot
virtualenv --python=/usr/bin/python3 pyweb

4.进入虚拟环境

source active

5.虚拟环境下载Django和uwsgi并建立软连接

pip3 install django (如果用于生产的话,则需要指定安装和你项目相同的版本) pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
`
uwsgi需要在虚拟环境和系统下载两遍

6.下载nginx

检查80端口,关闭防火墙

netstat -atunp
服务台需要手动关闭

7.切换到网站目录/data/wwwroot,创建Django项目

django-admin.py startproject mysite

之后会有一个mystie的目录

然后新建立一个名叫blog的APP

python3 manage.py startapp blog

进入项目文件夹/data/wwwroot/mysite,添加static和templates,分别用于存放静态文件和模板文件。

编辑项目里mysite/settings.py文件
vim /data/wwwroot/mysite/mysite/settings.py

进行配置

在templates下添加index.html文件,输入下面内容。

`

我的网站

欢迎光临我的网站!

` ##配置URL `vim /data/wwwroot/mysite/mysite/urls.py

from blog import views #导入views
urlpatterns = [
...
path('', views.index), #添加这行
....
]
`

编辑blog APP下的views.py

`vim /data/wwwroot/mysite/blog/views.py

def index(request):
return render(request, 'index.html')`

启动项目

python3 manage.py runserver

8.Django正常运行之后我们就开始配置一下uwsgi。

一般是在pytharm里面创建Django项目配置uwsgi.ini项目

启动

uwsgi --ini uwsgi.ini
显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功

10.配置nginx

nginx一般默认安装好的路径为/usr/local/nginx

在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。
cp nginx.conf nginx.conf.bak

然后打开nginx.conf,把原来的内容删除,直接加入以下内容:

    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  www.django.cn; #改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT mysite.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
        }
        location /static/ {
        alias /data/wwwroot/mysite/static/; #静态资源路径
        }
    }
}```
##测试配置文件是否正确
`/usr/local/nginx/sbin/nginx -t`
##如果没有报错则重启nginx即可。
`/usr/local/nginx/sbin/nginx -s reload`
###11.Django多站点部署
##1、进入Nginx的配置文件目录/usr/local/nginx/conf/,然后新建一个目录:
`mkdir vhost`
##之后在vhost目录里建立两个以.conf结尾的文件(有几个项目就放几个),里面的内容如下:

server {
listen 80;
server_name www.django.cn;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
}
location /static/ {
alias /data/wwwroot/mysite/static/; #静态资源路径
}
}

###12.创建Django项目
![](https://img2020.cnblogs.com/blog/1832807/202011/1832807-20201126205243492-1688616100.png)
#安装成功之后,我们刚才指定的目录下就多出一个mysite文件夹。打开mysite文件夹。
![](https://img2020.cnblogs.com/blog/1832807/202011/1832807-20201126205309187-480279386.png)
#这就是Django的目录结构,其中,blog文件夹是我们刚才创建的APP,templates文件夹是存放模板文件的,mysite文件夹,放的是Django的一些配置文件。manage.py文件则是对django-admin.py的简单包装的一个文件,通过它能运行一些简单的命令。venv文件夹就是virtualenv虚拟环境目录,venv文件夹不是django源码里的东西,只是我们创建虚拟环境时指定到这个目录下了而已。
![](https://img2020.cnblogs.com/blog/1832807/202011/1832807-20201126205337650-1848173526.png)
##配置uwsgi.ini
![](https://img2020.cnblogs.com/blog/1832807/202011/1832807-20201126205445134-1629629980.png)

添加配置选择

[uwsgi]

配置和nginx连接的socket连接

socket=127.0.0.1:8000

配置项目路径,项目的所在目录

chdir=/data/wwwroot/mysite01/

配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名

wsgi-file=mysite01/wsgi.py

配置启动的进程数

processes=4

配置每个进程的线程数

threads=2

配置启动管理主进程

master=True

配置存放主进程的进程号文件

pidfile=uwsgi.pid

配置dump日志记录

daemonize=uwsgi.log

##uwsgi操作指令

启动

uwsgi --ini uwsgi.ini
显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功

可能通过ps -ef|grep uwsgi 查看确认是否uwsgi启动.

停止运行uwsgi,通过包含主进程编号的文件设置停止项目

uwsgi --stop uwsgi.pid

重启uwsgi

uwsgi --reload uwsgi.pid

##上传项目到/data/wwwroot/

1. 命令启动项目查看是否能正常运行

cd /data/my_env02/bin
source activate #激活虚拟环境

2. 进入项目

cd /data/wwwroot/mysite01
python manage.py runserver

3. 新打开SSH客户端,内网访问8000

curl 127.0.0.1:8000 #成功表示项目运行良好

##写nginx的配置文件
![](https://img2020.cnblogs.com/blog/1832807/202011/1832807-20201126205637556-1677173083.png)

nginx的yum安装方式默认安装好的路径为/etc/nginx

在/etc/nginx/conf/中先备份一下nginx.conf文件,以防意外。

cp nginx.conf nginx.conf.bak

然后打开nginx.conf,把原来的内容删除,直接加入以下内容:

events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name 127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT mysite01.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite01/; #项目路径
}
location /static/ {
alias /data/wwwroot/mysite01/static/; #静态资源路径
}
}
}

执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:

重新启动nginx

systemctl reload nginx

##启动项目

1. 进入虚拟环境,激活

cd /data/env/my_env02/bin
source activate

2. 在虚拟环境中进入项目,启动uwsgi

cd /data/wwwroot/mysite01
uwsgi --ini uwsgi.ini #启动

显示: [uWsgi] getting INI configuration from uwsig.ini 表示成功

端口8000是否启动

netstat -atunp #8000是启动的

##启动nginx的80端口

1. 进入nginx目录

cd /usr/local/nginx/sbin

2. 检测语法

./nginx -t #
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3. 启动

./nginx #启动
./nginx -s reload #重启
./nginx -s stop #停止

4. 检测80

netstat -atunp

5. 本地测试

curl 127.0.0.1:80

6. 外网测试

http://172.16.45.53:80 #

7. 通过域名访问

http://www.xxx.com

推荐阅读