当前位置: 首页 > 工具软件 > mod_wsgi > 使用案例 >

linux下搭建apache+mod-wsgi+python环境【全过程】

林英武
2023-12-01

一、环境说明:

 

ubuntu-17.10.1-desktop 64位

 

二、查看系统自带python默认版本,以及系统中python版本

 

1.命令行下输入: python, 可以查看python默认版本,输出为  python2.7.3

 

2.命令行下输入:whereis python,  可以查看python的路径,我的环境下python有三个版本,分别是:python2.7.2,  python3.6, python3.7

 

三、将 系统默认的python版本改为我们想要的版本,如:我想将默认版本改为python3.6

 

1.命令行下执行:update-alternatives --install /usr/bin/python python /usr/bin/python2.7.3 1

 

2.命令行下执行:update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

 

3.命令行下执行:python  【查看当前python的默认版本】

 

4.命令行下执行:update-alternatives --list python    【列出可用的Python替代版本】

 

四、安装pytho3-pip并更改python的pip默认安装依赖路径

 

1.命令行下执行:sudo apt-get install python3-pip

 

2.查看pip默认安装依赖路径

 

1)命令行执行:python -m site,可以得到结果:sys.path, USER_BASE, USER_SITE, ENABLE_USER_SITE

 

*USER_BASE, USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径

 

2) 命令行执行:python -m site --user-site   查看pip默认安装依赖路径

 

3.修改pip默认安装依赖路径

 

1)命令行输入:python -m site -help  【显示要修改的文件site.py的路径】

 

2)命令行修改site.py文件中USER_SITE的路径【我设置的是 python3.6下的dist-package路径】

 

3)测试安装

 

五、apache2安装

 

1.命令行执行:sudo apt-get install apache2

 

2.浏览器输入:http://localhost

 

3.修改apache2的默认端口号

 

1)命令行执行:whereis apache2 【查找apache2, 找到/etc/apache2】

 

2)打开/etc/apache2/ports.conf,将端口80改为8001

 

3)打开/etc/apache2/sites-enabled/000-default文件,将VirtualHost *:80修改成VirtualHost *:8001

 

4)命令行执行:sudo /etc/init.d/apache2 restart 【重启apache服务】

 

5)浏览器输入:http://localhost:8001

 

六、安装mod-wsgi

 

1.命令行执行: sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3

 

七、配置python dajngo环境

 

1.sudo pip3 install virtualenv 【下载依赖】

 

2.cd ~/myproject     【切换至项目文件夹跟目录下】

 

3. virtualenv myprojectenv 【创建python虚拟环境】

 

4.source myprojectenv/bin/activate 【激活虚拟环境】

 

5.pip install django 【虚拟环境中下载依赖】

 

6.初始化数据库

 

  • cd ~/myproject

  • ./manage.py makemigrations

  • ./manage.py migrate

 

7.为项目创建管理员用户:./manage.py createsuperuser

 

8.把静态文件放到static目录 :./manage.py collectstatic

 

9.如果开启了防火墙,打开8000端口:sudo ufw allow 8000

 

10.测试Django项目,启动server: ./manage.py runserver 0.0.0.0:8000

 

11.浏览器输入:http://server_domain_or_IP:8000

 

八.配置apache

 

1. 打开配置文件: sudo nano /etc/apache2/sites-available/000-default.conf

 

2.所有static的请求映射到Django项目的/static目录,在VirtualHost块中添加:

<VirtualHost *:80>

. . .

 

Alias /static /home/sammy/myproject/static

<Directory /home/sammy/myproject/static>

Require all granted

</Directory>

 

</VirtualHost>

 

3. 配置apache有访问项目目录中wsgi.py的权限:

<VirtualHost *:80>

. . .

 

Alias /static /home/sammy/myproject/static

<Directory /home/sammy/myproject/static>

Require all granted

</Directory>

 

<Directory /home/sammy/myproject/myproject>

<Files wsgi.py>

Require all granted

</Files>

</Directory>

 

</VirtualHost>

 

4. Django建议使用daemon模式运行WSGI进程,配置WSGIDaemonProcess:

<VirtualHost *:80>

. . .

 

Alias /static /home/sammy/myproject/static

<Directory /home/sammy/myproject/static>

Require all granted

</Directory>

 

<Directory /home/sammy/myproject/myproject>

<Files wsgi.py>

Require all granted

</Files>

</Directory>

 

WSGIDaemonProcess myproject python-home=/home/sammy/myproject/myprojectenv python-path=/home/sammy/myproject

WSGIProcessGroup myproject

WSGIScriptAlias / /home/sammy/myproject/myproject/wsgi.py

 

</VirtualHost>

 

*注意替换上面的Python虚拟环境路径和项目路径

 

5. 修正一些目录和文件权限:

 

chmod 664 ~/myproject/db.sqlite3

 

sudo chown :www-data ~/myproject/db.sqlite3

 

sudo chown :www-data ~/myproject

 

6. 如果你配置了防火墙,开启80、443端口:

 

  • sudo ufw delete allow 8000

  • sudo ufw allow 'Apache Full'

 

7. 检查Apache配置文件是否有语法错误:

 

sudo apache2ctl configtest

 

Output

. . .

Syntax OK

 

8. 如果没有语法错误,重启Apache:

 

sudo systemctl restart apache2

 

9. 现在使用浏览器访问 http://your_doamin_or_IP:port测试Apache-Django部署是否成功:

 

 

 

 

 类似资料: