当前位置: 代码网 > it编程>数据库>MsSqlserver > 记录如何优雅地在华为云上部署网站(Ubuntu20.04+flask+Gunicorn+nginx+HeidiSQL)

记录如何优雅地在华为云上部署网站(Ubuntu20.04+flask+Gunicorn+nginx+HeidiSQL)

2024年07月31日 MsSqlserver 我要评论
*关于服务器地址:**因为你的云服务器不是在家里用网线就能连接,所以会有一个弹性公网IP,就是你这台电脑的远程地址,一般是固定的,使得你的客户可以用来连接你的远程主机。服务器就是你存放网站程序的地方,本质就是一台电脑,动手能力强的可以自己买服务器,动手能力差的就可以直接用华为云服务器,这样很多东西都配套好,突出省心!(注意:在Ubuntu终端中将不再输出日志,可以使用ctrl+c中断) (#注意:第一个app是py文件名称,第二个app是py文件内的app应用,可能有app1\app2)

一、总体思路

对于之前没有部署过网站的小伙伴来说,可能思路没有很理顺清楚,我大概说一下:
1、第一步,就是有网站程序。自己写,我这边会以一个简单的flask应用作为示例。
2、第二步,先买服务器。服务器就是你存放网站程序的地方,本质就是一台电脑,动手能力强的可以自己买服务器,动手能力差的就可以直接用华为云服务器,这样很多东西都配套好,突出省心!!然后既然是买一台电脑的使用权,那自然是要有操作系统了,我这边选择的是华为云ubuntu20.04,linux的,其实也不难,主要学会一些主要命令就好了,下面会简单介绍一下。**关于配置:**初学就买最便宜就好。**关于服务器地址:**因为你的云服务器不是在家里用网线就能连接,所以会有一个弹性公网ip,就是你这台电脑的远程地址,一般是固定的,使得你的客户可以用来连接你的远程主机。
3、第三步,然后就要买域名了。域名就是例如google.com这个样子。关于域名作用:就是让你的客户能更加容易记住,毕竟一串数字很难记的。关于解析域名:本质就是将弹性公网ip绑定到对应的域名上,所以一定程度上:弹性公网ip == 域名。
4、第四步,打开安全组,打开端口。安全组就是云服务器的防火墙,端口就是墙上的洞,所以对于安全组物理意义上的理解:是带有很多洞的一面墙,这些洞默认就是端口,默认都是封闭的。默认是只能通过华为云的官方网站访问,其他客户不能入也不能出。主要是通过端口来限制。关于端口,一般来说,如果正常互联网上的网站就对外开放80端口(非加密),443端口(加密)。注意其中80端口是一个系列,8080也是80端口,8081也是80端口,同理443端口。
5、第五步,备案。虽然理论上打开了端口就能
通过域名
外部访问,例如www.googlk.com。但是,你会发现,打开不到2秒就会被封,因为没有备案,要及时备案才能使用。所以如果想先不备案的,可以在云服务器安全组上设置,例如放开8420端口,使用弹性ip地址就能访问,例如:83.32.44.333:8420用于测试就行。接下来举一个例子,主要涉及华为云官网上的部署操作和linux上的部署操作。

一、华为云官网上操作

1、注册华为云账号,没什么好说的。
**2、购买云服务器,**同样也没什么好说的有钱就行,购买后就知道你的弹性ip地址例如是83.32.44.333。
**3、注册域名:**登录后首页搜索:域名注册服务 domains。给钱购买域名,你就拥有了例如gogo.com域名的使用权,
在这里插入图片描述
之后关于域名有两件事要做:
(1)实名登记:就是说这个域名gogo.com是卢某拥有的。
(2)域名解析:例如你的弹性公网ip是83.32.44.333,解释后就能通过gogo.com访问你的弹性公网ip。 域名注册=>域名解析=>创建成功后=>管理解析=>快速添加解析=>将弹性公网ip绑定到对应的域名上,看华为的文档就够。一般通过解析gogo.com后,就能通过gogo.com、www.gogo.com两个网址访问到你的网站。
(3)测试:通过ping,测试域名是否绑定成功。
3.1安全组设置=>入规则方向=>快速添加规则=>icmp(全部)=>全部。
关于安全组设置,可看这个https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0081124350.html。
在这里插入图片描述 3.2在本地通过cmd输入,例如ping gogo.com,测试连同是否通过。 在这里插入图片描述

二、服务器之linux基本操作

1、做好密码管理
部署一个网站有很多密码要记住,忘记了会很麻烦,例如忘记了linux的密码,往往使用华为云自带的修改密码功能不一定管用,使用单用户模式新手有时也不好弄,所以最好是记住密码,以下罗列要记住的密码:
(1)华为云账号用户和密码。
(2)ubuntu或linux系统开机账号和密码。
(3)mysql本地根账号和密码。
(4)mysql远程账号和密码。
2、linux基本操作。
(1)华为远程云电脑大概长这个模样:
在这里插入图片描述
(2)图形化界面
可以安装图形话界面,然后按ctrl+alt+f7跳转。安装图形话界面教程可以看这篇文章:https://www.cnblogs.com/smqh-bokeyuan/p/17527973.html。
(3)基本操作。
1、关于文件操作。但一般都会安装winscp,用于远程操作linux系统的文件内容,但基本的vim操作文件还是要会的啦:
(vim基本操作打开文件:vim 文件目录,例如:vim /etc/var/app.py)
(命令模式esc,插入模式i,底行模式:)
(插入模式和底行模式都要先通过命令模式来切换,所以遇事不决先按esc,底行模式主要是用来保存退出)
( 保存退出 :wq 退出:q )

2、终端快捷键: ctrl+alt+t
(3)安装winscp:作用是远程进行文件操作,直接在服务器端进行文件操作太蛋疼了,新手还是在window主机上进行操作比较简便,可以参考这篇文章,很简单的不说了:
https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0166284971.html
安装之后就可以远程进行文件及文件夹的增删改查、复制、粘贴、权限变更等操作,完美。在这里插入图片描述

二、网站部署

1、系统基本环境检查
(1)确保安装了python3 --version pip3 pip3 list
(2)确定应用地址,建立写代码的文件夹test1(修改权限):sudo mkdir /var。安装有winscp就直接远程创建个文件夹就行,我一般是给足权限的。在这里插入图片描述
(2)创建虚拟环境操作并在虚拟环境内安装包

            进入对应的目录:使用cd命令,例如cd /var/test1
           1安装虚拟环境:sudo pip3 install virtualenv
           2创建虚拟环境:virtualenv -p python3 testenv    testenv是虚拟环境名称(自定义)
           3激活虚拟环境:source testenv/bin/activate   testenv是虚拟环境名称
           4退出虚拟环境 deactivate
           5安装包:如果在别的电脑下已经有测试好的包环境,可以在本地电脑通过pip3 freeze > requirements.txt取得安装目录  =>  然后激活虚拟环境  =>    requirements.txt通过winscp存放在项目目录test1内(不是虚拟环境目录testenv)  =>    pip3 install -r requirements.txt安装
           6、本人的requirements.txt文件如下:
           7、注意ubuntu 22.04安装mysqlclient可能会出错,解决方法:
           运行apt-get install libmysqlclient-dev  =>    运行sudo apt-get install pkg-config  =>    然后再pip install mysqlclient==2.2.1

本人的requirements.txt文件如下:

alembic==1.13.0
blinker==1.7.0
bootstrap-flask==2.3.3
click==8.1.7
colorama==0.4.6
dnspython==2.4.2
email-validator==2.1.0.post1
filelock==3.13.1
flask==3.0.0
flask-admin==1.6.1
flask-login==0.6.3
flask-migrate==4.0.5
flask-sijax==0.4.1
flask-sqlalchemy==3.1.1
flask-wtf==1.2.1
future==0.18.3
greenlet==3.0.2
idna==3.6
itsdangerous==2.1.2
jinja2==3.1.2
mako==1.3.0
markupsafe==2.1.3
mysqlclient==2.2.1
pip==23.3.1
pymysql==1.1.0
setuptools==69.0.2
sijax==0.3.2
six==1.16.0
sqlalchemy==2.0.23
typing_extensions==4.9.0
virtualenv==20.25.0
werkzeug==3.0.1
wheel==0.42.0
wtforms==3.1.1

(3)ubuntu上安装mysql
参考:https://blog.csdn.net/qq_62656514/article/details/136356884
https://zhuanlan.zhihu.com/p/610793026
1、获取权限: sudo su
2、更新ubuntu上列表,作用是更新系统的安装目录: sudo apt update
3、ubuntu下安装mysql,sudo apt install mysql-server =>下载mysql,默认是最新版本,现在是8.0
(1)安装后可以查看版本: mysql --version
4、设置安全选项: sudo mysql_secure_installation => 然后会弹出5个问题让你选择:我翻译一下:密码验证组件n,删除匿名y,不允许远程登录n,移除测试数据库n,重加载权限表y
5、由于mysql8.0默认跳过密码设置,所以需要单独设置root密码:默认root账号密码为root,使用默认密码进入root账号:mysql -u root -p => 进入后修改密码,使用代码alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘123’; => 使用代码重载权限表并退出mysql控制台:flush privileges; exit;
6、测试是否能与flask进行连接.
7、root下创建一个新用户testdb用于远程连接:
(1)创建testdb用户: create user ‘testdb’@‘%’ identified by ‘123’; flush privileges; exit;
(2)修改mysql配置: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 下修改 bind-address =127.0.0.1 改为 0.0.0.0(还有mysqlx-bind-address,ss -tlnp查看)
(3)开通防火墙3306端口。
(4)在本地电脑测试:mysql -u testdb -p -h 83.32.44.333
8、授予testdb控制数据库testland的权利:
参考:https://blog.csdn.net/supeerzdj/article/details/131654776?ops_request_misc=%257b%2522request%255fid%2522%253a%2522171198305116800184175866%2522%252c%2522scm%2522%253a%252220140713.130102334…%2522%257d&request_id=171198305116800184175866&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-131654776-null-null.142v100control&utm_term=mysql8.0%e6%8e%88%e6%9d%83&spm=1018.2226.3001.4187
(1)登录root账号:
(2)创建jinhuiland数据库:create database testland;
(3)use testland;
(4)用户授权:grant all privileges on testland.* to ‘testdb’@‘%’; flush privileges; exit;
(5)查看权限:show grants for ‘testdb’@‘%’;

(3)在test1目录内放入最简单的flask项目:app.py

from flask import flask

app = flask(__name__)

@app.route('/')
def hello_flask():
    return 'hello flask!'

if __name__ == '__main__':
    app.run()

(4)heidisql安装在本地window系统中,怎么弄的不说了,很简单的。

(5)安装并使用gunicorn
1、作用:是代替python3 app.py中app.run()这项代码。
2、简单使用实例:gunicorn -w 3 -b 0.0.0.0:9100 app:app #第一个app是py文件名称,第二个app是py文件内的app应用,可能有app1\app2
3、在虚拟环境中安装gunicorn:pip3 install gunicorn
4、推荐在gunicorn中使用配置文件的方式启动(特别在参数很多的时候):
4.1在项目下新建文件夹 mkdir /var/test1/gunicorn(建议文件夹放在app.py同一级内)
4.2在其中使用vim写入配置文件gunicorn_conf.py(附件),或者使用winscp。
5、启动: gunicorn -c gunicorn/gunicorn_conf.py app:app
(注意:在ubuntu终端中将不再输出日志,可以使用ctrl+c中断) (#注意:第一个app是py文件名称,第二个app是py文件内的app应用,可能有app1\app2)
6、 gunicorn_conf.py

import multiprocessing

bind = '0.0.0.0:8459'    #端口
workers = multiprocessing.cpu_count()*2+1     #进程数
reload = true    #代码改变时自动重启
loglevel = 'info'    #日志输出等级
timeout = 600    

log_path = "/root/var/test1"    
accesslog = log_path + '/gunicorn/access.log'    #进入进程日志
errorlog = log_path + '/gunicorn/error.log'    #错误日志

(6)安装并使用nginx
1、安装:sudo apt-get install nginx
查看nginx是否在运行:ps -ef | grep nginx
2、/etc/nginx/cong.d下添加自定义配置文件default.conf(见附件)
default.conf主要是 => gunicorn运行的应用使用8459端口,然后nginx监听8490端口并转发至8459端口,客户端通过8490端口发送命令。
3、 systemctl start nginx =>不行就,nginx -s reload
4、运行gunicorn,搞定
5、default.conf文件,最简单的形式,有兴趣去深度学习吧:

server {
    listen 8490;                
    server_name 83.32.44.333;  #可以用服务器的ip当名字
    location / { 
        proxy_pass http://0.0.0.0:8459; 
    }   
}
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com