使用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 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 test2.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 //重启服务



京公网安备 11010502036488号