最近自己买了个云服务玩,突然就想把自己写的小项目部署到云服务器上,这样就可以实现公网访问了。以下是整个部署过程和遇到的各种问题的解决方案,有想自己部署自己功能的,可以参考着进行哦。
先给你的云服务设置一个密码登录,方便用shh远程登录操作
设置好后用shh工具远程登录后,创建一个文件夹存放你的django项目文件
mkdir /data
cd data
mkdir www
cd /data/www
安装git ,方便从gitee上拉取代码
yum install git -y
拉取代码
git clone https://gitee.com/... ... ---这个地方是自己的仓库地址
拉取的时候会需要输入gitee的账户和密码
拉取成功后,在www下面会增加代码的文件夹,这里的bom就是我的项目文件
当然,如果你的代码并没有托管到远程仓库上,一直在本地,你也可以使用shh的工具,将他们直接上传到服务器上,相关的工具很多,大家根据自己的习惯自己下载使用即可。最终的目的是实现将自己的代码上传到服务器上。
安装gcc
yum install gcc -y
安装python依赖
yum install zlib zlib-devel -y
yum install bzip2 bzip2-devel -y
yum install ncurses ncurses-devel -y
yum install readline readline-devel -y
yum install openssl openssl-devel -y
yum install xz lzma xz-devel -y
yum install sqlite sqlite-devel
yum install gdbm gdbm-devel -y
yum install tk tk-devel -y
yum install mysql-devel -y
yum install python-devel -y
yum install libffi-devel -y
yum install libffi libffi-devel -y
下载wget
yum install wget -y
Python 安装包路径:(就是python官网上找自己需要的版本,最好不要找太新的,很多相应的服务器上的匹配都没有那么新,我用的是3.9,已经算很新啦)
https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
解压&编译&安装
在压缩包所在的目录下,依次执行以下语句
tar -xvf Python-3.9.5.tgz
cd Python-3.9.5/
./configure
make all
make install
pip install virtualenv
virtualenv /envs/bom --python=python3.9
激活虚拟环境
source /envs/bom/bin/activate
从mysql官网上下载仓库
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
下载后可以查看是否下载成功
yum repolist|grep mysql
执行命令后能看到如下代码
(bom) [r data]# yum repolist|grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community 178
mysql-tools-community/x86_64 MySQL Tools Community 85
mysql80-community/x86_64 MySQL 8.0 Community Server 395
默认安装的是mysql8.0的,我们需要安装mysql5.7版本的,这里需要我们修改配置
vim /etc/yum.repos.d/mysql-community.repo
请参照截图修改
然后执行安装语句
yum install mysql-community-server
设置mysql开机自启动
systemctl enable mysqld
systemctl start mysqld
查看一下是否启动成功
ps -aux|grep -v grep|grep mysql
查看mysql的版本
mysql --version
安装好后默认是不需要密码登录,这是因为在服务器上有特殊的账号配置
输入:
mysql -u root -p
回车不用输入密码即可登录
创建database
create database bom default charset utf8 collate utf8_general_ci;
创建账号admin,密码12345678
insert into mysql.user(user,host,password) values('admin','%',password('12345678'));
刷新权限
flush privileges;
授权各个ip均可访问(实际使用中要谨慎,一般都会设定固定的ip和对应操作权限,不会像自己学习的时候给这么大权限,设置完毕后要手动刷新)
grant all privileges on bom.* to admin@'%';
flush privileges;
这个时候如果用navicat去远程连接,基本上都是连不上的,这是因为防火墙的原因。你需要开通3306端口,如果你也是买的云服务器,你除了命令行操作以外,你还需要去服务器的安全组(或者防火墙上开通3306端口)
(bom) []# systemctl start firewalld.service
(bom) []# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
(bom) []# firewall-cmd --reload
success
这个时候你再用navicat等远程连接工具,就可以连接了。
根据你的数据库情况,设置setting中的配置
关闭DEBUG模式
DEBUG = False
添加对静态文件的配置
7、开发django应用的端口,运行程序
开放9999端口
firewall-cmd --zone=public --add-port=9999/tcp --permanent
firewall-cmd --reload
别忘了在腾讯云上开发端口
在manage.py所在的目录下执行
python manage.py runserver 0.0.0.0:9999
在服务器里输入公网ip,即可顺利访问