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 //重启服务