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