欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux学习,部署django项目到服务器,及安装python,uwsgi等

程序员文章站 2022-03-13 13:57:52
更新系统软件包 在进行安装前,先大概了解一下在Linux下如何安装应用软件? 作为一个刚开始学习Linux的小白,对于一些基础性问题却总是理不清,比如,我的软件安装在什么地方,安装以后如何运行,怎么查找我安装的具体位置等. 这里,主要安装以tar打包的应用为主,大致分为这几步,从网上下载需要安装的软 ......
  1. 开启网络
  2. vi /etc/sysconfig/network-script/ifcfg-eth0
  3. onboot=yes 退出保存
  4. service network restart
  5. ping 

更新系统软件包

yum update -y

在进行安装前,先大概了解一下在linux下如何安装应用软件?

作为一个刚开始学习linux的小白,对于一些基础性问题却总是理不清,比如,我的软件安装在什么地方,安装以后如何运行,怎么查找我安装的具体位置等.

这里,主要安装以tar打包的应用为主,大致分为这几步,从网上下载需要安装的软件压缩包,解压,安装,清除安装包.

一些命令,参数解释
1 ./configure 用来生成makefile, --prefix=/usr/*** 指定该软件将安装在哪里
2. make 执行编译
3. make install 执行安装
4. make clean 清除产生的临时文件
5. ln  创建软连接,相当创建快捷命令,可以直接调用

接下来安装一些基础库,软件管理包和可能使用的依赖关系,一般编译软件的时候需要,个人习惯装完系统就安装一下

yum -y install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel
yum -y groupinstall 
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel    (这是从网上直接copy的,有些不是必须的,可根据自己的需求选择下载)

安装python3.5.3

yum install wget
wget https://www.python.org/ftp/python/3.5.3/python-3.5.3.tgz
tar -zxvf python-3.5.3.tgz
cd python-3.5.3
./configure --prefix=/usr/local/python3 --enable-shared
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
python3 -v

python3.5安装报错

python3.5: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: no such file or directory

原因是因为python运行时没有加载到libpython3.5m.so.1.0 这个库文件 将其复制到响应目录ok

解决方法:

[root@www python-3.5.0]# cd /root/test/python-3.5.0 进入解压后的编译目录

[root@www python-3.5.0]# cp libpython3.5m.so.1.0 /usr/local/lib64/

[root@www python-3.5.0]# cp libpython3.5m.so.1.0 /usr/lib/ [root@www python-3.5.0]# cp libpython3.5m.so.1.0 /usr/lib64/

安装setuptools

wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
tar -zxvf setuptools-19.6.tar.gz
cd setuptools-19.6
python3 setup.py build
python3 setup.py install

 

(如有报错: runtimeerror: compression requires the (missing) zlib module,则需要安装yum install zlib-devel,安装后要重新编译 python3.5:  

make && make install)

安装pip

wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
tar -zxvf pip-8.0.2.tar.gz
cd pip-8.0.2
python3 setup.py build
python3 setup.py install

 

使用pip安装包测试:

    如报错,则缺少yum install openssl-devel,安装完成后一样需要重新编译python3.5(make&&make install)
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

安装django

pip3 install django==2.1.1

安装uwsgi:

export ldflags="-xlinker --no-as-needed"
$ pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
安装:pip install uwsgi
启动:uwsgi -x 'uwsgi.xml'
报错:uwsgi: invalid option -- 'x'

原因:centos下,在没有安装libxml2时,pip安装的uwsgi无法支持xml格式的配置文件
解决:
yum install libxml*
pip uninstall uwsgi
pip install uwsgi

注意删除 ~/.cache/pip pip安装缓存文件

关闭防火墙 或者 放开80端口

service iptables stop
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

测试uwsgi是否可用

def application(env, start_response):
    start_response('200 ok', [('content-type','text/html')])
    return [b"hello world"]
uwsgi --http :9001 --wsgi-file app.py

将你的django项目放到你想放的路径下,例如/home/www/,假设我们的django项目名为"myproject",里面有一个应用叫"myapp" 在你的django项目下新建 myproject.xml,即和manage.py同级。

(上传你的项目可以通过git,ftp之类上传,本人只是学习测试,直接下载xshell 关联,然后通过rz上传项目,具体自行百度)

内容如下:

<uwsgi>
    <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
        <chdir>/home/www/myproject</chdir><!-- 项目路径 -->
            <module>myproject.wsgi</module>
                <processes>4</processes> <!-- 进程数 --> 
    <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

安装nginx和配置nginx.conf文件

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
在/usr/local/nginx/conf/中打开nginx.conf,在http{}中加入以下内容

server {
    listen 8996; #暴露给外部访问的端口
    server_name localhost;
        charset utf-8;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8997; #外部访问8996就转发到内部8997
    }
    location /static/ {
        alias /home/www/myproject/myapp/static/; #项目静态路径设置
    }
}


wq保存后进入/usr/local/nginx/sbin/目录

执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:

./nginx

终端没有任何提示就证明nginx启动成功,
然后打开浏览器输入链接查看nginx是否启动成功:
http://192.168.1.111 (请将该ip替换成你的服务器ip)


注意django项目配置了venv,需要配置虚拟环境

# 安装virtualenv
pip3 install virtualenv virtualenvwrapper

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

virtualenv venv

访问项目页面

进入你的django项目路径,执行以下命令:

uwsgi3 -x myproject.xml

以上步骤都没有出错的话,打开你的浏览器,输入以下链接,记得关闭系统防火墙或者开放8996端口

http://192.168.1.111:8996 (请将该ip替换成你的服务器ip)
网站访问成功!

显示 internal server error

需要把这个django项目中用到的模块在虚拟机上重新下载部署。
并且如果使用的是mysql即不是自带的数据库,需要在mysql上远程关联本地数据库