云服务器的环境配置
更新源
sudo apt update
本地已经自带python2和python3(3.6)了,安装pip
sudo apt install python3-pip
本项目在本地并没有使用python虚拟环境,因此也不对虚拟环境配置
安装Django
python3 -m pip install django
安装mysql
sudo apt install mysql-server
sudo apt install mysql-client
安装apache2
sudo apt install apache2
安装mod_wsgi
sudo apt install libapache2-mod-wsgi-py3
项目和数据库的迁移
Django项目内容和MySQL数据库内容都在本地,需要迁移到云服务器上。可以直接通过scp命令将Django项目文件夹拷贝到云服务器上,但是云服务器上的python有很多库都还没有安装,可以在运行时需要什么再安装什么,也可以通过如下方式:
# 在本地执行:
python -m pip freeze > plist.txt # 这个plist文件保存了所有本地python安装过的包,拷贝到云服务器
#在云服务器执行安装库
python3 -m pip install -r plist.txt
但是这种方法会应为版本问题很多库装不上,不用担心,直接在plist中删除下不了的库就行
本地将MySQL数据库迁移:
下面的过程参考:https://blog.csdn.net/weixin_45459224/article/details/102991951
# 在云服务器创建和本地同名的数据库
create database myblog;
# 数据的迁移:先在本地生成备份文件,myblog是要备份的数据库,myblog.sql是导出的备份文件,scp到云服务器
mysqldump -u root -p myblog >myblog.sql
# 在云服务器执行:
mysql -u root -p myblog < myblog.sql
mysql配置:找到mysqld.cnf文件注释掉bind-address这一行
/etc/mysql/mysql.conf.d/mysqld.cnf #配置文件路径
#bind-address = 127.0.0.1 #注释掉这一行
#修改mysql配置使得无需sudo
sudo vim /etc/mysql/my.cnf
# 添加
[mysqld]
skip-grant-tables
#执行
sudo service mysql stop
sudo service mysql start
配置apache2
先创建一个站点的配置文件:
sudo vim /etc/apache2/sites-available/MyBlog.conf
写入如下内容
# apache2监听的端口
<VirtualHost *:80>
# 填写自己服务器的域名或者ip
ServerName www.dslab525.cn
# 其他域名(此处可以不填),多个域名指向同一个站点时可以使用,要多少个就加多少个,空格隔开
ServerAlias dslab525.cn
# 项目文件的根目录
DocumentRoot /home/ubuntu/MyBlog/
# 静态文件文件存放的路径
Alias /static/ /home/ubuntu/MyBlog/static/
# 多媒体文件存放的路径
Alias /media/ /home/ubuntu/MyBlog/media
# 文件授权
<Directory /home/ubuntu/MyBlog/media>
Require all granted
</Directory>
# 文件授权
<Directory /home/ubuntu/MyBlog/static>
Require all granted
</Directory>
# 通过wsgi.py 连接apache2和你的Django项目
WSGIScriptAlias / /home/ubuntu/MyBlog/MyBlog/wsgi.py
# 文件授权
<Directory /home/ubuntu/MyBlog/MyBlog>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
修改wsgi.py文件
sudo vim /home/ubuntu/MyBlog/MyBlog/wsgi.py
#添加到前面!(不要放到后面,我也不知道为什么...)
from os.path import join,dirname,abspath
import sys
PROJECT_DIR = dirname(dirname(abspath(__file__)))
sys.path.insert(0,PROJECT_DIR)
apache2 相关权限设置(apache服务器在运行的时候默认的用户是“www-data”)
cd /home/ubuntu/
sudo chmod -R 644 MyBlog
sudo find MyBlog -type d | xargs chmod 755
sudo chgrp www-data MyBlog
sudo chmod g+w MyBlog
还要注意和项目相关的所有目录都必须有可执行权限,比如/home/ubuntu/MyBlog,那么/home,/home/ubuntu,
/home/ubuntu/*都需要添加可执行权限!!
启动项目
sudo a2ensite MyBlog.conf
sudo service apache2 restart
这时就可以直接通过域名来访问启动的django项目了!!