安装Centos7后出现的问题
Centos安装后会发现连ping都没法与外界ping通,我们需要修改/etc/sysconfig/network-scripts/ifcfg-ens33来进行修改就可以了。
然后运行
service network restart
即可ping同网络并使用yum进行一些操作。
环境配置
我们这次项目使用的环境是:
Python3.7.9
Django3.1.3
python3.7.9的安装
安装wget命令
yum -y install wget
yum -y install setup
yum -y install perl
打开centos的远程连接
vi /etc/ssh/sshd_config
然后修改里面三处位置:具体见这篇文章
https://blog.csdn.net/weixin_44959377/article/details/108929108
然后执行以下命令就可以生效
service sshd start
安装net-tools,查看服务器的ip
yum install net-tools
使用远程工具连接服务器
这里推荐使用MobaXterm,功能强大,更重要的是稳定快速。
安装依赖库
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make
cd到/usr/local目录
下载python3.7.9的包
cd /usr/local
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar -xvf Python-3.7.9.tgz # 解压
cd Python-3.7.9 # 进入该目录
./configure --prefix=/usr/local/python3 # 配置编译安装的路径
make
make install
添加软链接
这里要明白软链接的定义,相当于我们在window上添加环境变量,但是Linux的实现是更加简单的
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
安装虚拟环境virtualenv
虚拟环境是为了更好的管理我们的python项目。
pip3 install virtualenv
建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
建立两个文件夹,用于存放环境和放置项目文件
mkdir -p /data/env
mkdir -p /data/wwwroot
cd /data/env/
virtualenv --python=/usr/bin/python3 django_project_test
# 通过python去指定python的版本,要不然它默认是python2.0的
# 版本
cd /data/env/django_project_test/bin
source activate # 启动虚拟环境
在虚拟环境安装django和uwsgi
pip3 install django==3.1.3
pip3 install uwsgi
可以看到,两个都被安装到了我们虚拟项目中
将我们的项目放置在服务器上
直接将我们的项目拖拽到我们的服务器上,这也是我们使用远程主机很方便的一点。
修改我们项目的配置文件
运行我们的项目
cd /data/wwwroot/djangoProject/
python3 manage.py runserver
如果你也是按照前面的步骤进行操作的话,大概率会碰到这个问题:
解决sqlite版本问题
开启另外一个命令行链接窗口并输入一下命令:
wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
tar zxvf sqlite-autoconf-3300100.tar.gz
cd sqlite-autoconf-3300100/
./configure
make
make install
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
export LD_LIBRARY_PATH="/usr/local/lib"
查看版本:
python3
import sqlite3
sqlite3.sqlite_version
但是我们使用上面的方法解决问题之后,会发现我们所在的虚拟环境的sqlite还是使用着老版本,这个时候我们要换个窗口进行重新连接就可以了,因为那个老的好像是没办法及时给他进行更新。重新运行
配置uwsgi
cd /data/wwwroot/djangoProject
新建一个djangoProject.xml文件,注意这个xml文件要跟项目名是一样的。
填写内容如下:
<uwsgi>
<socket>127.0.0.1:8997</socket>
<!-- 内部端口,自定义 -->
<chdir>/data/wwwroot/djangoProject/</chdir>
<!-- 项目路径 -->
<module>djangoProject.wsgi</module>
<processes>4</processes>
<!-- 进程数 -->
<daemonize>uwsgi.log</daemonize>
<!-- 日志文件 -->
</uwsgi>
安装并配置nginx
cd /home/
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx-1.13.7.tar.gz
cd nginx-1.13.7
./configure
make
make install
nginx的默认安装路径为/usr/local/nginx
先备份nginx.conf文件
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vi nginx.conf
删除这个文件的所有内容,然后加入一下内容:
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name www.django.cn;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997;
#端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT djangoProject.wsgi;
#wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /data/wwwroot/djangoProject;
#项目路径
}
}
}
vi nginx.conf
光标置于第一行,使用命令行模式输入
.,$d
然后回车,删除全部,然后将上面黏贴复制
cd /usr/local/nginx/sbin
./nginx -t # 这个命令要是没有错,就继续执行
./nginx
然后浏览器直接访问,这个时候会发现还是不行,原因是服务器默认访问墙并没有开启访问,所以这个时候还要对防火墙进行设置
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service
修改配置并启动uwsgi
对settings.py文件进行修改
进入/data/wwwroot/djangoProject
cd /data/wwwroot/djangoProject
uwsgi -x djangoProject.xml
cd /usr/local/nginx/sbin
./nginx -s reload
然后访问服务器地址,就可以啦!