本人所用为腾讯云服务器
外部工具使用XFTP上传文件
下列步骤为本人亲测,适合新手
1. 更新系统软件包
yum update -y
2. 安装软件管理包和可能使用的依赖
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
3. 下载Pyhton3到/usr/local 目录
注意:所有环境尽量使用跟项目一致版本进行安装,我这边使用得3.9.4
- https://www.python.org/ftp/python/3.9.4/下载所需要的版本
- 通过Ftp上传到目录-> 解压tar -zxvf Python-3.9.4.tgz ->进入Python包的路径cd Python-3.9.4/
- 编译安装到自己指定路径 ./configure --prefix=/usr/local/python3
- 安装python3 依次执行命令:make-> 命令:make install
- 安装完成之后,建立软链接,添加变量,这样的好处是方便我们在终端中能够直接使用python3
命令:ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3 - Python3安装完成之后pip3也一块安装完成,不用再单独安装 这里给pip3也建立软链接
命令:ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3 - 查看是否成功安装Python3和pip3 依次执行命令:python3 -V -> pip3 -V
4. 安装virtualenv虚拟环境
- pip3 install virtualenv
- 建立软连接ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
- 安装成功在根目录下建立文件夹,主要用于存放env 命令:mkdir -p /data/env
- 切换到/data/env/下,创建虚拟环境。命令:virtualenv --python=/usr/bin/python3 djangoPJenv
注意:这里的djangoenv名称可以自己定义但是后面步骤一定要跟你所定义的名称相同,然后进入/data/env/djangoenv/bin - 启动虚拟环境:source activate (这里virtualenv的命令自行百度很简单)
5. 虚拟环境里用pip3安django和uwsgi,以及项目依赖包
- pip3 install django==3.2.5 (需要指定安装和你项目相同的版本)
- pip3 install uwsgi
注意:uwsgi要安装两次,一次在虚拟环境中,另一次退出虚拟环境进行安装 - 给uwsgi建立软链接 命令:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
- 安装项目依赖包
4.1 导出当前本地项目依赖包pip freeze > requirements.txt
注意:requirements.txt文件部分模块显示了 @ file:///...,而不是具体的版本号,可以暂时考虑使用如下命令生成 requirements.txt 文件,pip list --format=freeze > requirements.txt,使用上述命令导出的文件中,会包含如下几个包:distribute,pip,setuptools,wheel,建议手动删除! - 可以用XFTP把requirements.txt文件丢到一个目录下,进入/data/env/djangoenv/bin, 启动虚拟环境:source activate,然后找到requirements.txt目录,执行命令:pip install -r requirements.txt
6. MYSQL安装
- 首先进入网址:https://dev.mysql.com/downloads/repo/yum/
- 根据centos版本选择,执行命令:cd /home/ ->wget https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm
注意:https://repo.mysql.com//后面这一串是根据在网页上自行选择的版本复制过来的 - 下载完成后,进行安装rpm -ivh mysql80-community-release-el7-5.noarch.rpm
注意:这里安装会让你选择MYSQL版本,根据自己环境需要,我这里选的8.0,让你选PHP的话无所谓啥版本都行 - 前期工作全部做好了,我们正式的去安装MySQL 命令:sudo yum install mysql-community-server
注意:执行上面的命令进行安装,这个步骤可能需要点时间,最后如果出现completed,那就搞定了 - 设置MySQL,设置开机启动:systemctl enable mysqld.service,检查是否设置成功:systemctl list-unit-files | grep mysqld
注意:大家都是干代码的,这个怎么看成功我就不说了,免得拉低大家智商 - 开启MySQL服务:systemctl start mysqld.service
- 修改MySQL密码,查看默认密码:grep 'temporary password' /var/log/mysqld.log
- 登录MySQL:mysql -u root -p (用获取的初始密码)
- mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx';
注意:MySQL8.0修改密码需要有大小写字母、数字、特殊字符组合,xxxxxx就是你要输入的密码 - 执行命令生效:mysql>flush privileges;
- 这里其实就安装完成了,如果你想外网比如说navicat访问连接,那就继续看下去
mysql> use mysql;
mysql> update user set host='%' where user='root';
授权用户名的权限,赋予任何主机访问数据的权限
mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
注意: 如果上面授权报错用,可以使用下面的
use mysql;
update user set host='%' where user='root';
Grant all privileges on test.* to 'root'@'%';
通过navicat测试远程连接数据库 - 导入本地的数据库数据到服务器
进入服务器数据库
mysql -u root -p
创建与项目中相应的名称的数据库
create database 数据库名;
use 数据库名
source /你导入sql文件的目录地址(关于这里你需要导入的sql文件怎么导出,自行百度太过简单)
7. 将本地项目文件压缩打包,上传到服务器目录解压
- 我这里是在home下mkdir Chris,用的XFTP将压缩文件上传
注意: 这里看你电脑用的RAR压缩还是zip或者其他的,我这里用的RAR,其他的百度下 - 在服务器中解压,可以先安装支持RAR的工具(根据自己需要)
32位:
命令:wget https://www.rarlab.com/rar/rarlinux-5.7.1.tar.gz
64位
命令:wget https://www.rarlab.com/rar/rarlinux-x64-5.7.1.tar.gz - 解压
tar -zxvf rarlinux-5.7.1.tar.gz # 对应32位下载的
tar -zxvf rarlinux-x64-5.7.1.tar.gz # 对应64位下载的
命令:cd rar 进入解压后的rar文件夹
命令:make 没有任何参数,直接make就OK
如果出现下面的信息,就是安装成功了:
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
执行解压操作:
rar x test.rar ->解压 test.rar 到当前目录
这里压缩命令了解即可rar test.rar ./test/ # 将 test目录打包为 test.rar
8. 通过python3 manage.py runserver 运行一下项目
注意: 如果能正常启动则进行下一步,不能正常运行往上检查。这里需要注意使用python3来执行manage.py,否则会出现报错情况!
9. 配置uwsgi文件(请睁大小眼睛)
我的网站项目路径是/home/Chris/Manage_pj,在项目根目录下创建 项目名称.xml (例如我的就是 Manage_pj.xml) 编辑该文件:
<uwsgi>
<socket>127.0.0.1:8000</socket><!-- 内部端口,自定义 -->
<chdir>/home/Chris/Manage_pj</chdir><!-- 项目路径 -->
<module>Manage_pj.wsgi</module><!-- mysite为wsgi.py所在目录名-->
<processes>4</processes><!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
10. 安装nginx和配置nginx.conf文件
- cd /home/ 执行命令:wget http://nginx.org/download/nginx-1.18.0.tar.gz 这里安装的是nginx-1.18.0.tar.gz 版本
- 下载完成后,执行解压命令:tar -zxvf nginx-1.13.7.tar.gz
- 进入解压后的nginx-1.13.7文件夹,依次执行以下命令:
./configure
make
make install
nginx一般默认安装好的路径为/usr/local/nginx,推荐在/usr/local/nginx/conf/中先备份一下nginx.conf文件,防止我们出错。命令:cp nginx.conf nginx.conf.bak - 然后打开nginx.conf,把原来的内容删除,直接加入以下内容:
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80; # 这里nginx监听得是80端口,浏览器输入域名不需要加端口了就
server_name 127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT Manage_Pj.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /home/Chris/Manage_Pj; #项目路径
}
location /static/ {
alias /home/Chris/Manage_Pj/app01/static/; #静态资源路径
}
}
}
- 进入/usr/local/nginx/sbin/目录 执行 ./nginx -t 命令先检查配置文件是否有错,没有错就执行以下命令:./nginx,终端没有任何提示就证明nginx启动成功。
到此安装结束:你可以尝试浏览器输入服务器域名(不要端口,nginx.conf中配置了listen 80,是http默认端口,如果不能成功或者静态资源无法加载,请看下面重点注意事项)
重点注意事项(必看):
- 如果你的项目中的应用含有静态文件,你需要在setting.py中进行STATIC_ROOT的设置STATIC_ROOT = os.path.join(BASE_DIR, 'static')#指定样式收集目录
- Setting中ALLOWED_HOSTS = ['*'],DEBUG=False设置
- 如果修改了Django文件或者一些其他的配置,一定要重启uwsgi和Nginx,否则不会生效!
查看Uwsgi进程
ps -ef|grep uwsgi
用kill方法把uwsgi进程杀死,然后启动uwsgi
killall -9 uwsgi
启动方法
uwsgi -x mysite.xml
Nginx平滑重启方法
/usr/local/nginx/sbin/nginx -s reload
上面是重启uswgi和Nginx的步骤,大家每次修改之后,调用上面的方法即可。