【说明】注册使用Azure中国版1元试用账户,将已完成的课程设计项目直接部署到服务器上。
【步骤】
1. 创建虚拟机
部分区域资源可能已满不可用,尝试换其他区域;或者对当前帐号不提供该资源的服务。
开放HTTP的80端口,后续的配置我选择默认不更改了。
2. 连接登录
- Mac下右键终端,选择“新建远程连接”,使用Shell(ssh)方式连接,输入服务器地址、用户名、密码(虚拟机创建时设置的)连接进入虚拟机。
- 进入命令界面后,使用 sudo su 命令切换回root权限。
- 通过 apt-get update 命令,先更新apt相关源。
- 注意下虚拟机的路径问题,管理用户的文件好像是在home文件下的。(隔太久有点记不清了,当时还因为文件路径问题搞晕了会)
3. 数据库安装
(前几个月时还能通过Azure账户直接使用现成的MySQL数据库服务,等到检查项目时发现不能用了,只能在虚拟机中安装数据库。)
- 通过 apt-get install mysql-server mysql-client -y 命令安装MySQL(或者 sudo apt-get install mysql-server mysql-client 命令)
- 输入root的密码
- mysql -u root -p 命令进入数据库,show variables like ‘%port%’; 命令查看数据库的端口,一般默认都是3306
- cd /etc/mysql/my.cnf 命令进入路径,vim my.cnf 命令修改mysqld.cnf,注释掉“bind-address"开放ip访问
- 数据库命令界面中 grant all on . to root@’%’ identified by ‘密码’ with grant option; 命令允许数据库连接,flush privileges; 刷新后 exit 退出
- 回到Azure服务在虚拟机配置上开放3306端口!!!
- 再重启mysql ,/etc/init.d/mysql restart
4. 编译环境搭建
- apt-get install redis-server 安装redis
- apt install python3-pip 安装python3的pip命令
(apt-get install python-pip 和 apt-get install python3这两个命令当时记录下来,好像是当时报错了)
(由于项目全部基于python3,之前服务器部署时默认的安装等设置是针对python2的,导致项目最后没通过编译之类的,再对python升级版本又很麻烦,所以直接从一开始就注意安装的python3 python3 python3) - pip3 install virtualenv 和 pip3 install virtualenvwrapper 搭建虚拟环境
- vim ~/.bashrc 命令更改bashrc配置,添加如下代码段
export WORKON_HOME=~/Envs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
- source ~/.bashrc 执行
- mkvirtualenv -p python3 py3_flask 创建名为py3_flask的虚拟环境
生成虚拟环境时缺少了相关包pathlib2,pip3 install pathlib2 安装即可
- workon py3_flask 进入这个py3_flask虚拟环境(后续 项目上传后安装相关包 和 安装gunicorn后运行项目 都在该虚拟环境下)
5. 项目上传
- 在pycharm的terminal中通过 pip freeze>requirements.txt 生成项目需要安装的包的文件
- Mac下直接在终端使用“scp -r”命令将本地文件上传到虚拟机的目标文件夹下,回车输入密码即可
- 虚拟机中在项目的requirements.txt路径下通过 pip3 install -r requirements.txt 命令直接安装项目需要的包
6. nginx和gunicorn配置
- apt-get install nginx 安装nginx
- vim /etc/nginx/sites-available/default 更改配置,添加代码段
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
- 上述配置后打开服务器的网页出现的是nginx的默认欢迎界面,vim /etc/nginx/nginx.conf 注释原配置的两行,新增自己刚刚更改的配置文件的一行否则配置文件不会生效
# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-available/*;
-
nginx -t 检查配置文件是否正确,nginx -s reload 重启nginx使配置生效
上述两小点具体可参考博文 nginx配置不生效,页面一直是默认页面welcome to nginx的解决办法 -
pip3 install gunicorn 安装
-
确定在py3_flask的虚拟环境下 gunicorn -w 5 -b 127.0.0.1:5000 app:app 运行程序
项目运行成功后,在浏览器上能查看项目网页
7. 项目停止运行重启等
- 关闭进程
pstree -ap|grep gunicorn 获取gunicorn进程的父PID(此前gunicorn命令运行项目时分配的5个进程,找到5个进程的父进程,树状图上最左侧),“kill -9 进程号"即可 - 重新启动程序
workon py3_flask 进入虚拟环境,gunicorn -w 5 -b 127.0.0.1:5000 app:app 重新运行程序