记Django项目在华为云服务器上的一次部署心得

该web站点主要由Ubuntu18.04系统、Django框架、MySQL数据库和nginx服务器搭建

环境迁移(批量操作)

开发机上导出 $ pip3 freeze > a.txt
服务器上安装 $ pip3 sudo apt-get install python3-pip
		   $ pip3 install --upgrade pip
		   $ sudo vi /usr/bin/pip3
		   	   from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())
		   $ pip3 install -r a.txt

将项目源码上传至华为云服务器
可以通过ssh方式、github方式 或 pycharm远程将代码上传
安装 uwsgi

$ sudo pip3 install uwsgi

在项目文件夹下创建uwsgi.ini文件并配置(注:配置与注释不可在同一行)

[uwsgi]  
socket=127.0.0.1:8000  				 # uwsgi监听的地址和端口
chdir=/home/tmp/pycharm_project_367  # 项目根目录->绝对路径
wsgi-file=myexpression/wsgi.py  	 # 项目中wsgi.py文件目录,相对于当前工作目录
process=2  							 # 进程个数
pidfile=uwsgi.pid  					 # 服务的pid记录文件
daemonize=uwsgi.log  				 # 服务的日志文件位置
vacuum=True  						 # 进程停止后,回收pid
master=True  						 # 启动主进程管理子进程

查看uwsgi 进程

$ sudo ps aux | grep uwsgi

启动/结束uwsgi进程(需要在uwsgi.ini当前目录下)

$ sudo uwsgi --ini uwsgi.ini
$ sudo uwsgi --stop uwsgi.pid
$ sudo killall uwsgi

ngnix配置
安装

sudo apt install ngnix

修改nginx配置配置:

sudo vim /etc/ngnix/sites-available/default

location为定位符
修改location / 将访问ngnix路由的80端口 映射到 uwsgi的8000端口

location / {}
	uwsgi_pass 127.0.0.1:8000;
    include /etc/nginx/uwsgi_params;
}

启动/重启nginx :

$ sudo /etc/init.d/ngnix start
$ sudo /etc/init.d/ngnix restart

配置以访问静态文件,让静态路由有效,并重启ngnix:

location / static{
	root /home/tmp/pycharm_project_367; 
    # 以上改为项目文件夹的绝对路径
}

安装MySQL数据库

$ sudo apt-get install mysql-server
$ sudo apt-get install mysql-client

注1:按需购买ubuntu弹性服务器后,系统设置完成后即为root权限用户;由于系统的配置,MySQL数据库安装过程中,并没有让用户设置密码,故root密码为空。

> use mysql;
> select user,authentication_string from user;
> update user set authentication_string=PASSWORD("root") where user="root";
> update user set plugin="mysql_native_password";
> flush privileges;
> quit;
$ /etc/init.d/mysql restart

注2:购买的ubuntu弹性服务器上无法用命令在线安装nginx
解决方式:寻找可以下载nginx的软件源替换或追加到相关文件中,这里,笔者使用的是已经安装好nginx的开发机上的更新源,作为替换(做好备份)

vi /etc/apt/sources.list
deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://cn.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb http://cn.archive.ubuntu.com/ubuntu/ bionic universe
deb http://cn.archive.ubuntu.com/ubuntu/ bionic-updates universe
deb http://cn.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse

注3:解决不能被外网访问的问题
点击弹性云服务器名称->安全组->下拉服务器名称->更改安全组规则->入方向规则->添加规则->自定义TCP80端口->确定
注4:需要修改代码带有http协议的地址【127.0.0.1更换为公网IP】
注5:服务器上更改代码后,重启uwsgi即可完成重新部署项目

你可能感兴趣的:(configuration)