项目示例
pycharm编译好的项目
阿里云服务器域名
成果展示
如果不能访问,可能端口已经关闭。
遇到的问题一大堆,大量使用网上文章,如有问题,进行留言联系。
简单做一个记录供自己查阅和检索,以备下次服务器搭建,这样可以减少时间成本。
仅供个人记录使用!本文不是教程
仅供个人记录使用!本文不是教程
仅供个人记录使用!本文不是教程
选择的是cento7的云系统
Linux yun 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep
12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
首先默认没有python3,用官网的安装,安装好了有没有pip3没办法安装django和pymysql。亲测成功!
解决方案:https://www.aliyun.com/jiaocheng/527141.html
1.安装依赖包bzip2安装anaconda前,要先安装个解压缩工具bzip2,打开阿里云ECS实例的远程连接,输入下面命令,即可完成安装:
yum install bzip2
2.安装anaconda3(1)下载anaconda3安装包,输入命令:
wget https://repo.continuum.io/archive/Anaconda3-4.3.1-Linux-x86_64.sh
如果速度慢的话,可以在本地下载后,上传到服务器root目录里。
(2)安装anaconda3,根据以下屏幕提示依次完成。
输入命令:sh Anaconda3-4.3.1-Linux-x86_64.sh
慢敲回车ENTER键,47下左右,屏幕提示是否接受许可协议?输入yes。
输入指定安装路径:/usr/local/anaconda3
屏幕提示是否将安装路径写入PATH环境变量,输入yes,回车,安装完成。
重新登录远程连接,输入python,默认即是python3.6版本啦,是不是极其简单呢?
TIPS:1.安装python的依赖包。参考链接
安装python或者anaconda前,可能需要先安装一些依赖包(例如解压工具bzip2),否则会报错。
已知的一些常用依赖包如下,可根据需要选择安装:
在 CentOS/RHEL/Fedora 下:
sudo yum install readline readline-devel readline-static
sudo yum install openssl openssl-devel openssl-static
sudo yum install sqlite-devel
sudo yum install bzip2-devel bzip2-libs
在 Ubuntu下:
sudo apt-get update
sudo apt-get install make build-essential libssl-dev zlib1g-dev
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
sudo apt-get install llvm libncurses5-dev libncursesw5-dev
答案是:Automake工具定义了下面的一组变量:
Directory variable Default value
prefix /usr/local
exec_prefix ${prefix}
bindir ${exec_prefix}/bin
libdir ${exec_prefix}/lib
…
includedir ${prefix}/include
datarootdir ${prefix}/share
datadir ${datarootdir}
mandir ${datarootdir}/man
infodir ${datarootdir}/info
docdir ${datarootdir}/doc/${PACKAGE}
…
而GUN下面绝大部分应用的编译系统都是用automake。
于是乎,你看到的很多很多应用都安装在了/usr/local/目录下。
解决了python3的问题以后mysql默认也没安装!
到官网下载好rpm安装包,附赠我的链接,下载名字的包
RPM Package, MySQL Server
安装教程:https://www.cnblogs.com/shuangzikun/p/taotao_linux_mysql_install.html
较有参考价值的文章:https://blog.csdn.net/a774630093/article/details/79270080
从第四步开始
安装的环境基本搞定了!再就是使用navicat连接阿里云mysql
这里需要配置的比较多,很容易出错
首先开放端口,添加用户,添加安全组,如果有防火墙也要关闭
https://blog.csdn.net/antony9118/article/details/77835715
首先创建安全组,然后再安全组中添加规则,如下所示,详情可以参考官方文档
https://helpcdn.aliyun.com/document_detail/25471.html?spm=5176.doc25468.2.4.RfJyPU
添加规则之后,再用navicat连,报另一条错误
1045 access denied for user'root'@'localhost' using password yes
- 1
猜想是因为我本地使用root用户登录navicat,而root用户并没有开放外部的访问权限,而是只能localhost访问
下一步登陆mysql数据库,使用命令
果然root用户的访问权限是localhost,并不能从外部进行访问,需要手动赋权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;
- 1
好了,这下又报错
Your password does not satisfy the current policy requirements
- 1
也就是密码强度不符合,我也是醉了,使用下面的命令可以查看设置的密码强度校验规则
SHOW VARIABLES LIKE 'validate_password%';
- 1
果然是有很麻烦的校验,网上有很多去除这个校验的方法,不过都需要修改配置文件然后重启数据库,个人觉得有点麻烦,还有一种临时办法可以去除密码强度校验(不过下次登录又得用一遍,好处是不需要重启)
set global validate_password_policy=0;
- 1
好了,再输入上面的对root用户赋权的命令,大功告成
OK,到这里,服务器的3306端口也对外开放了,root用户也可以从外部进行访问了,navicat连接成功
大致到这里解决了很多问题,当然有的问题,也要百度。下面说一下setting.py的配置
数据库的配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql','NAME': 'book_manager',这个是你数据库的名字,连接上数据库后,你要先创建'USER': 'root','PASSWORD': 'xxxx',这个密码是数据库root用户的密码'HOST': '39.107.87.114',这个host是你公网的host'PORT': '3306'这个端口是数据库默认端口,需要在安全组里面打开}
}
连接配置
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['*']这是允许所有用户都可以访问!因为是自己学习使用,所以也没有那么多严格的限制
怎么运行项目
python manage.py runserver 0.0.0.0:8000
其他问题
MySQL 5.7 Access denied for user ‘root’@‘localhost’ (using password YES)
这个问题不要按照网上的操作进行设置,首先还是检查自己密码的问题
# service mysqld restart 报错 Redirecting to /bin/systemctl restart mysqld.service
解决办法
使用如下命令操作mysql:
systemctl restart mysqld.service
systemctl start mysqld.service
systemctl stop mysqld.service
ModuleNotFoundError: No module named '_ctypes’报错
这个操作要进入root用户!进行安装
可参考网上教程:https://blog.csdn.net/qq_36416904/article/details/79316972
http://blog.51cto.com/maoxiaoxiong/2172785