服务器是提供计算服务器、网络服务的一种设备。当我们访问一个网站时,点击这个网站会发出访问请求,服务器会响应服务请求,并相对应地进行处理,反馈相对应的数据。如果我们想要把自己的网站让别人也能看到,那就必须要放到服务器上。云服务器说白了就是远程不知放在哪个机房的一台电脑,可以通过远程控制部署自己的项目。云服务器相对传统的服务器而言,在部署项目时您无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务器ECS实例。在使用过程中,随着业务的扩展,您可以随时扩容磁盘、增加带宽。如果不再需要云服务器,也能随时释放资源,节省费用.
而比较常见的分为个人服务器,企业级服务器。一般我们需要的是个人服务器。个人服务器的选择有两种 两者的区别详情见: 阿里云轻量应用服务器和ECS云服务器哪个好?有什么不同
总的来说: 阿里云ECS云服务器类似于一台放在云端的可以自主选择配置的空白电脑主机,需要自己选择CPU、内存、硬盘、带宽配置并自行安装操作系统,适合有一定互联网建站经验和服务器运维基础的用户。而轻量应用服务器相当于你购买已经安装好操作系统的电脑主机,适合对服务器操作不太熟练的新手用户
这里选择了阿里云服务器, 注册 学生认证 购买优惠产品, 这里选择了轻量级服务器, 自己本身的话了解还不是很多应该比较难上手运维工作先从这款轻量级的入手吧.
阿里云的学生版还是很亲民的, 如果不是学生的话这一套就1000+了
注意这里要选择 应用镜像和系统镜像了, 两者的本质区别是应用镜像依托于系统镜像之上, 应用镜像提供了相应的应用及其环境依赖 就不用了自己配置了 但是应用镜像也对应了相应的系统镜像. 具体的介绍:
应用镜像和系统镜像
这里面还有一个关系型数据库 RDBS (Relationship Data Base System) 和一个对象存储资源包(还不知道是什么)
sudo su root
之后安装安装X(X Window System)
yum groupinstall "X Window System"
安装需要的图形界面软件
yum groupinstall "GNOME Desktop"
设置默认通过桌面环境启动服务器, 完成后默认通过图形界面远程访问
systemctl set-default graphical.target
安装 epel库 和 xrdp库
yum install epel-release
yum install xrdp
启动xrdp服务并设置为开机启动
systemctl start xrdp
systemctl enable xrdp
在这里所有的库都已经完成了下一步是用windows 本地远程连接
注意这里一定要开放3389端口这是为了让本地windows能远程连接
还要开房80 和 8080 端口目的是为了让公网ip能被找到
这里加入了3389不加入连接一定失败
之后windows+R 输入 mstsc
在这里输入ip地址注意是公网ip
输入root和设置好的密码就能进入了
这个地方的运行内存实在太小了开了pycharm就到了1.7 所以就用这个当一个文件管理器好了其实也没必要因为Xftp很强大.
首先下载Xshell 然后开始配置
出现welcome就完成了
下载Xftp 点击新建
填好相应的信息后
直接把文件拖到响应的地方就好了 此时
mkdir ~/Desktop/Python 创建一个 新的文件夹用来存储 新的Python 安装包和 Python 安装包
cd /Desktop/Python 进入这个目录下 准备后续工作
注意你可以选择自己想要的版本 所有版本如链接所示[Python安装包]
如果没有下载wget的话:
yum -y install wget
开始下载
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
tar zxf Python-3.8.0.tgz
用ls去看下Python目录下是否有了解压后的Python安装包
这时候看一下我们的图形界面
为了防止编译过程中环境依赖出错先完成环境的加载
yum update -y
yum groupinstall -y 'Development Tools'
yum install -y gcc openssl-devel bzip2-devel libffi-devel
首先配置路径以及相关的设置 这里用configure
./configure prefix=/usr/local/python3 --enable-optimizations
– prefix 选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。
如果配置–prefix,如:./configure --prefix=/usr/local/python3可以把所有资源文件放在 /usr/local/python3 的路径中,不会杂乱.用了–prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个相同的操作系统机器即可.当然要卸载程序,也可以在原来的make 目录下用一次make uninstall,但前提是make文件指定过uninstall.
–enable-optimizations是优化选项(LTO,PGO 等)加上这个 flag 编译后,性能有 10% 左右的优化,但是这会明显的增加编译时间,老久了.
然后使用 make install 去安装
make install
这里出现了第一个bug
Could not import runpy module
Traceback (most recent call last):
File "/root/Python/Python-3.8.2/Lib/runpy.py", line 15, in
import importlib.util
File "/root/Python/Python-3.8.2/Lib/importlib/util.py", line 14, in
from contextlib import contextmanager
File "/root/Python/Python-3.8.2/Lib/contextlib.py", line 4, in
import _collections_abc
SystemError: returned NULL without setting an error
generate-posix-vars failed
make[1]: *** [pybuilddir.txt] Error 1
make[1]: Leaving directory `/root/Python/Python-3.8.2'
make: *** [profile-opt] Error 2
这个bug的原因是gcc的版本太低必须要8.10 以上才能完美运行, 这里给的解决方案是把后面的–enable optimization 去掉 直接用./Confirgure -profix 就好了
接着出现了第二个BUG
Could not import runpy module
Traceback (most recent call last):
File "/root/Desktop/Python/Python-3.8.2/Lib/runpy.py", line 15, in
import importlib.util
File "/root/Desktop/Python/Python-3.8.2/Lib/importlib/util.py", line 14, in
from contextlib import contextmanager
File "/root/Desktop/Python/Python-3.8.2/Lib/contextlib.py", line 4, in
import _collections_abc
SystemError: returned NULL without setting an error
generate-posix-vars failed
make: *** [pybuilddir.txt] Error 1
这个Bug可能是由于编译语言符号的问题 但是这里建议先把刚刚安装失败的路径清空 或者换一个安装路径 用这个:
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
到这一步完美解决
最后最简单的方式应该是
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
然后 直接
make install
到这里终于完成了Python的安装 安装在了 /usr/local下
用python3 就可以执行 Python
用pip3 就可以install各种包了
pip3 install Django==3.0.1 这里选择和项目版本号相同的
wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
tar xvf sqlite-autoconf-3310100.tar.gz
接着 看一下 文件夹里是不是解压好了
好接下来就是 安装了
先进入
cd sqlite-autoconf-3310100
这里有两种进入方式还有一种是 cd ./~ 这样是绝对路径上面是相对路径
然后配置
./configure 这里没用上面的profile 意味着采取了默认安装不指定路径
具体的安装位置和上面说的应该是一样的
可视化界面看不到home之上的目录
make install
通过python3 导入sqlite3 然后查看 sqlite3的版本发现的确是更新了.
先用Xflp把项目传过来这里我放到了桌面上
看一下图形界面确定下
cd ~/Desktop/demo 进入manage.py所在的位置
python3 manage.py migrate 完成第一次迁移 目的是使下面的模块全部生效
python3 manage.py makemigrations
python3 manage.py migrate
这里的ALLOWED_HOSTS 里面包含的是可以访问的ip 这里只需要加上公网ip就好了因为别人的访问都是通过公网ip地址访问的Django项目
python3 manage.py runserver 0.0.0.0:8000
有三种方式 nohub 最为简单
nohup python3 manage.py runserver 0.0.0.0:800
第二种方式是单独开个进程用screen
yum install screen 首先安装screen
screen -S name name用于标注这个窗口的作用
这里已经新开了一个窗口就相当于一个新进程
在这个新的线程下启动服务器后端
现在从这个新线程中返回主线程
Ctrl+a 然后再按下d 这个时候 但是子线程还是在运行的
screen -ls 罗列所有进程情况以及PID
screen -r -d 加上 PID 如果只有一个进程的话 只用 -r -d
完全退出的话
exit
cd ~/ 表示从home开始往下找
cd ./表示从当前目录去找下级目录
cd ../表示从当前目录去找上层目录
cd ..去上一层
cd ../..往上返回两层
mkdir [-p] dirName 这里的-p是用来保证所经历的文件路径都存在不存在就创建
mkdir -p BBB/Desktop 这是在BBB 下创建 Desktop如果BBB不存在则先新建BBB
rm [fir] 文件或目录 f i r 分别是三种不同的参数类型代表了不同的设置
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
rm -i /test/file1 这是交互式删除/test 下的 file1 文件夹
cp [-adfilprsu] 源文件(source) 目标文件(destination) 这个参数有很多对应了很多模式
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
- f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
着重这几条
-a:是指archive的意思,也说是指复制所有的目录
- f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
cp -Rf /home/user1/* /root/temp/
这里面的* 为把user1/下的全部复制
--version
Python3 --version