Django Apache 搭建记录

使用Apache运行Django网站

搭建记录:

1. 代码设置

首先网站先写好 在setting.py设置

DEBUG = False

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

#允许其他主机访问
ALLOWED_HOSTS = ["*"]

2. 环境安装

在一台全新的ubuntu18中安装环境:

cat source.txt > /etc/apt/source.list
apt update

sudo apt install net-tools --assume-yes

#install python3
sudo apt install python3 --assume-yes
sudo apt install python3-pip --assume-yes

sudo pip3 install django
sudo apt-get install apache2 --assume-yes
# Python 2
#sudo apt-get install libapache2-mod-wsgi

# Python 3
sudo apt-get -y install libapache2-mod-wsgi-py3 --assume-yes

#install mysql
sudo apt-get install mysql-server --assume-yes

#install python mysql
apt install libmysqlclient-dev --assume-yes
pip3 install mysqlclient

pip3 install --user virtualenv
pip3 install xlrd
# mod_wsgi在美国的服务器安装时出现了问题,可以先安装mod_wsgi-httpd
pip3 install mod_wsgi

sudo apt-get install apache2-dev --assume-yes
sudo apt-get install python3.6-dev --assume-yes

3. 环境配置

3.1 apache2的环境配置

其实就是改了改原来apache2.conf中的

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

下面这个是我摘出来的精简版 apache2.conf

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
AccessFileName .htaccess

<FilesMatch "^.ht">
    Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

3.2 将这个配置文件覆盖原来的

cp apache2.conf /etc/apache2/

3.3 下面是apache2对我们网站的配置文件

mysite.conf

<VirtualHost *:80>
  #访问网站以哪个目录开始,第二个参数填写路径
  WSGIScriptAlias / /home/ubuntu/mysite/mysite/wsgi.py  
  <Directory /home/ubuntu/mysite/mysite>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>
  #开放静态目录
  Alias /static/ /home/ubuntu/mysite/static/
  <Directory /home/ubuntu/mysite/static>
    Require all granted
  </Directory>

  #开放上传文件夹
  Alias /media/ /home/ubuntu/mysite/media/
  <Directory /home/ubuntu/mysite/media>
    Require all granted
  </Directory>

  #以下开始是因为使用了virtualenv部署
  #第一个路径是虚拟环境路径,第二个是项目所在路径
  WSGIDaemonProcess mysite python-path=/home/ubuntu/mysite
  #分组
  WSGIProcessGroup mysite
</VirtualHost>

3.4 将文件放到正确的位置

cp mysite.conf /etc/apache2/sites-available/

4 创建数据库

我们安装完成的mysql会自动设置一个密码,我们需要改成和我们代码中的数据库密码对应的密码 由于没有密码所以我们一开始无法以普通用户的方式进入mysql 所以先切换到root用户,不使用密码直接进入设置密码

su
#输入root密码
mysql  #进入mysql
update mysql.user set authentication_string=PASSWORD('123456'),plugin='mysql_native_password' where user='root';
flush privileges;

之后我们就可以使用mysql的密码进入mysql了,然后创建数据库,设置数据库的字符为utf8, 注意linux上mysql的默认字符不是utf8,用不了中文

mysql -u root -p
#输入自己设置的密码
create database database1 character set utf8;
quit

5 初始化网站的数据库

python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser

6 启动apache2

sudo a2ensite mysite.conf //激活网站
sudo a2dissite 000-default.conf //关闭自身站点
apache2ctl configtest //检查配置有无问题,有的话自行解决
sudo apache2ctl restart //重启服务
文章目录