linux下安装python3.7和安装MySQL和服务器部署项目

Linux入门

Linux服务器搭建工作需要掌握的核心点

  1. 虚拟机使用

  2. Linunx安装(注意事项)

  3. 服务器搭建[重点]

    1. 网络配置[真实阿里云服务器已经联网了]

    2. SSH连接远程服务器(putty)

    3. FTP文件传输(winscp)

    4. 升级Python(Linux系统默认自带2.7)

    5. 虚拟环境管理(virtualenv)

    6. django

    7. web服务器:(nginx + uwsgi )做django项目发布

    8. 数据库MySQL

    9. DNS解析实现

    10. nginx多项目配置

 

 

1. 虚拟机认识

重要功能:

  • 快照功能(保存系统当前状态,后期便于随时还原!)

  • 克隆(完全复制一份!)

  • 删除虚拟机

2. 安装系统

虚拟机安装[重要]:https://blog.csdn.net/qq_39038465/article/details/81478847

安装步骤: https://blog.csdn.net/babyxue/article/details/80970526

  • 必须为虚拟机打开网络

  • 硬盘分区

    • boot: 系统引导分区(存储是启动相关的核心文件一般200M,或500M)

    • swap:内存交换分区(充当内存使用: 内存的2倍)

    • /跟分区: 其余所有空间

  • 记住自己的IP

  • 记住自己的root密码

查看服务器IP地址

# ifconfig   # 192.168.131.132

 

注意:centos mini版默认默认ifconfig不能用

#安装网络工具
yum install net-tools

 

3. 连接

SSH:是客户端和Linux服务器数据传输的加密协议! 特点: 安全,数据压缩,传输速度快!

CentOS 副武器端默认安装了SSH

windows电脑需要安装SSH客户端就可和服务器进行SSH加密通信

常用的SSH客户端 Putty

核心配置(配置IP+端口, 窗口显示行列数, 配置字体大小,设置支持中文 )

 

4. 使用FTP协议传文件

常用的FTP协议软件,WinScp

 

在跟目录上传一个文件!!!!....

 

5. 虚拟机联网

这里简单介绍下三种连网方式的不同:

桥接模式:物理机和虚拟机处于并列状态。在同一网段,物理机网络环境发生变化,虚拟机会受影响。

NAT模式:虚拟机和物理机之间相互独立,不受影响

仅主机模式:虚拟机和物理机直接通讯

 

  • 桥连接(每个虚拟系统,都相当于一个真实电脑! 内网自动分1个IP)

  • NAT方式:

    • 192.168.43.2-254 该网段可分给1-253 台电脑!

    • 192.168.1-254. 1-254 : 可组建很庞大的内网系统!

  • 自连接: 只能主机和虚拟机通信!

  • 建议使用桥接!

 

 

 

最快联网设置

    1. 多台虚拟机都设置为 桥接,桥接虚拟机启动时能自动分配内网的IP地址!

 

    1. 打开虚拟机的联网功能

      可在安装虚拟机时打开联网按钮!

       

    如果安装时忘记打开联网功能, 安装完登陆系统改配置文件! 改配置文件打开联网!

    配置ip地址等信息在/etc/sysconfig/network-scripts/ifcfg-ens33文件里做如下配置:

    # 编辑网络配置文件  vi是编辑文件的命令!
    vi   /etc/sysconfig/network-scripts/ifcfg-ens33

    # 修改内容如下:
    BOOTPROTO="static"  # 手动分配固定ip   [改] 原来是的动态分配: dhcp
    ONBOOT="yes"  # 该网卡是否随网络服务启动 [改]
    IPADDR="192.168.8.134"  # 该网卡ip地址就是你要配置的固定IP[加]
    GATEWAY="192.168.8.1"   # 网关 [加]
    NETMASK="255.255.255.0"   # 子网掩码 [加]
    DNS1="192.168.8.1"        # DNS地址 [加]

    # IP地址,网关,.子网掩码,DNS: 可以参考主机设置   ipconfig -all

    # 该完重启网路
    service network restart

    DNS和网关信息可在window电脑: cmd---->ipconfig -all 中查看!

    vi 编辑器使用:

    1. vi 文件名

    2. 进入编辑模式(i)

    3.改

    4: Esc退出, :wq 保存 :q!不保存直接退出

 

检测网络是否能连接成功:

主机和虚拟机之间相互ping

ping 地址

6 . Linux目录结构[重要]

 

 

  • 软件安装目录: /usr/local

  • 系统配置: /etc

  • 还可操作(home, root,opt较少)

 

 

7 . 下载软件

1. 从yum软件仓库中下载

yum软件源,默认是国外服务器,下载慢!建议替换为国内的,比如:清华镜像

https://mirrors.tuna.tsinghua.edu.cn/help/centos/

2. wget 网址下载

wget https://www.python.org/ftp/python/

注意: 默认mini 版,wget不可用!需要重新安装

3. 直接FTP传到服务器!

最快

小结

 

熟悉虚拟机操作(快照,克隆,打开,删除)

1. 安装系统(网络,系统分区)

2. 联网(桥接)

3. SSH远程连接

4. FTP协议

5. Linux目录结构

6. 下载软件

软件安装

问题: 虚拟机经常连不上!

问题描述,在班级内虚拟机连接正常, 回到宿舍后发现连不上!!!

原因: 局域网变了,IP地址也自动的发生了变化! 因为桥连接,会自动的从局域网中分一个IP地址!

步骤1: 确保联网方式是:桥连接

 

步骤2:从虚拟机登陆查看ip

#查看IP
ipconfig

步骤3: 改网络配置文件

# 编辑配置
vi  /etc/sysconfig/network-scripts/ifcfg-ens33
# i 进入编辑模式

#改
BOOTPROTO="dhcp" # IP地址改为动态分配
注释掉手动设置的IP(网络服务器重启后会自动分配)
# IPADDR="192.168.220.101" # 该网卡ip地址就是你要配置的固定IP
# GATEWAY="192.168.220.2"   # 网关
# NETMASK="255.255.255.0"   # 子网掩码
# DNS1="8.8.8.8"   # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地

#退出编辑 ESC   :wq 退出并退出
# 重启网络服务器
service network restart

最后: SSH改IP重新连接

安装Python

centos 默认安装python2.7 ,先了解虚拟机中Python的相关信息

# 查看是否有
python  -V
# 查看Python这个命令,详细的解析方式
which python
cd /usr/bin
ls -al python*  #就可看到 python-->python2--->python2.7

 

 

接下来从网上找详细的流程,一定要先确认: 是哪种安装方式?

  • 第一种: 改python指令的的软件的连接指向 3.6 [

  • 第二种: 添加python3指令,软件连接指向 3.6

选第一种,详细步骤如下

# 1 下载包管理器:gcc
yum -y groupinstall "Development tools"   su切换到root根目录
# 2 下载相关依赖
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
# 3. 上传pyton3.6.6.tgz 到安装目录 /usr/local
上传...,也可通过wget手动下载到/usr/local
# 4. 解压 在安装目录加压
cd /usr/local
tar -zxvf Python-3.6.6.tgz  #多了Python3.6.6 文件夹
tar Jxvf Python-3.7.0.tgz.xz
# 5.进入 Python3.6.6,
cd Python-3.6.6
# 其实就是将Python编译安装至指定目录,这里指定为/usr/lib/python
# 编译安装,指定安装路径 ./configure --prefix=安装目录
./configure --prefix=/usr/local/python3  #[管理工具和依赖包必须已经安装好]
# 7. 安装

make
# 安装
make install
# 把python3/lib 保存到配置文件中,保存在 /etc/ld.so.conf.d中,并执行ldconfig
echo "/usr/local/python3/lib" >> /etc/ld.so.conf
ldconfig
# 8 .建连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
# 测试
python3 -V  #执行3.6.6 表示成功


#检查软连接情况
cd /usr/bin  
ls -l python*    # l表示显示完整路径

pip

# pip建软连接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
#测试pip 版本
pip3 -V
pip3 list  # 提示版本太低 [注意:pip list 可能报错!]

pip3 版本9.0时pip3 list可能报错,解决

 

 

 

#解决方案:新建
vi /etc/pip.conf`
#添加内容
[list]
format=columns
保存退出

pip 版本更新

pip install --upgrade pip   pip3 install --upgrade pip

 

安装虚拟环境

安装

 

建议安装虚拟环境.便于管理不同项目!

# 安装 virtualenv 
pip3 install virtualenv
#建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

建目录

 

安装成功在根目录下建立两个文件夹,主要用于存放env和网站文件的。(名字按照自己习惯来)

# 创建报错虚拟环境目录  名字是任意的   -p参数:如果没有目录就自动新建!递归创建 
mkdir  -p /data/env  
# 个人网站发布文件夹 .名字都是任意的!
mkdir  -p /data/wwwroot

建虚拟环境

创建指定版本的虚拟环境

# 进入env目录
cd  /data/env
# 创建虚拟环境
virtualenv --python=/usr/bin/python3   py3_django2
# 启动
cd  /data/env/py3_django2/bin
# 激活虚拟环境
source  activate  # 退出: deactivate
# 安装django等.
pip install django==2.1.3
#查询django版本
pip3 list
# 安装uwsgi(web项目发布相关软件)
pip3 install uwsgi
# 给uwsgi建立软链接,方便使用
ln -s /data/env/py3_django2/bin/uwsgi /usr/bin/uwsgi


# 退出虚拟环境
cd  /data/env/py3_django2/bin
deactivate

激活后虚拟环境.左边显示环境名:

 

上传项目

本地项目上传到wwwroot目录

  • 在项目根目录生成项目需要的依赖包文档描述!

pip freeze requirements.txt 

 

 

  • setting文件常用设置:

    # 允许所有IP访问,一定要加!
    ALLOWED_HOSTS = ['*']
  • 上传项目到wwwroot下,启动测试是否正常运行!

    # 使用winscp上传到  /data/wwwroot下
    cd  /data/env/py3_django2/bin #进入虚拟环境目录
    source  activate   # 激活虚拟环境
    cd /data/wwwroot/mysite  #进入我的项目目录
    # 下载当前项目需要的依赖包
    pip install -r requirements.txt
    # 测试项目是否正常启动
    python manage.py runserver

配置uwsgi

配置 uwsgi

在mysite的项目跟目录,新建mysite.xml配置文件,上传到/data/wwwroot/mysite下,内容如下

 

<uwsgi>    
  <socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 -->
  <chdir>/data/wwwroot/mysite/</chdir> <!-- 项目路径 -->            
  <module>mysite.wsgi</module>  <!-- wsgi.py所在目录名-->
  <processes>4</processes> <!-- 进程数 -->    
  <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

保存 注意<module>里的mysite,为wsgi.py所在的目录名。

nginx相关

下载nginx安装和配置

# 下载
cd /usr/local
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 --prefix=/usr/local/nginx
make
make install > my_nginx.log
# nginx一般默认安装好的路径为/usr/local/nginx在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。
cd /usr/local/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;
       server_name  自己域名; #改为自己的域名,没域名修改为127.0.0.1:80
       charset utf-8;
       location / {
          include uwsgi_params;
          uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一样
          uwsgi_param UWSGI_SCRIPT mysite.wsgi;  #wsgi.py所在的目录名+.wsgi
          uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
         
      }
       location /static/ {
       alias /data/wwwroot/mysite/static/; #静态资源路径
      }
  }
}
# 启动,执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:
cd  /usr/local/nginx/sbin/
./nginx
# 终端没有任何提示就证明nginx启动成功
# 测试
curl 127.0.0.1:80  #就可以看到网站!

启动项目

启动django项目[最终]

# 进入djnago项目
cd /data/wwwroot/mysite/
# uwsgi 解析项目中的配置文件
uwsgi -x mysite.xml
#以上步骤都没有出错的话。
cd /usr/local/nginx/sbin/
# 重启nginx
./nginx -s reload
# 服务器内部测试是否发布成功
curl 127.0.0.1:80  #就可以看到网站!
# 关闭防火墙,否则远程不能访问!
systemctl stop firewalld.service

查看防火墙状态firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall
开机启动
systemctl disable firewalld.service
通过service iptables status 命令查看是否防火墙是否开启
关闭防火墙 service iptables stop,正常访问

uwsgi源码下载
https://blog.csdn.net/cckavin/article/details/85071547
##部署项目的另一措施
239   cd /usr/bin/
 240    224  ls -a uwsgi*
 241    225  rm -rf uwsgi
 242    226  ls -a uwsgi*
 243    227  pip list
 244    228  pip install uwsgi
 245    229  ln -s /data/env/py3_django2/bin/uwsgi /usr/bin/uwsgi
 246    230  cd /usr/bin/
 247    231  ls -a uwsgi*
 248    232  cd /data/wwwroot/untitled100/
 249    233  uwsgi -x untitled100.xml
 250    234  cd /usr/local/nginx/sbin/
 251    235 ./nginx -s reload
 252    236 ./nginx
 253    237  curl 127.0.0.1:80
 254    238  historynginx

本地测试

http://192.168.8.135 就可以看到图书首页!

 

查看软件端口

通过监控端口命令,查看程序是否启动.

#查看进程端口号及运行的程序
netstat -atunp
#由端口号port(8000)查看进程id
netstat -anp |grep 8000
#停止
#杀死指定进程根据pid(进程id) uwsgi
kill pid
#强制杀死指定进程根据pid(进程id) nginx
kill -9 pid

 

 

多域名配置

https://www.django.cn/article/show-4.html#duo

 

常见问题

1. 安装python3.6后yum命令无法使用

这是因为yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,然后我之前为了方便将python默认的解释器设为了python3.6,导致按python3.6解析2.7的语法出错了。

 

 

解决方法:

修改/usr/bin/yum文件中的第一行为#!/usr/bin/python2.7

 

 

服务器环境测试

检测当前服务器的环境,查看已经安装了哪些软件

 

# 主机网址
ipconfig -all
# 虚拟机联网方式: 桥接
# 查看虚拟机IP
ifconfig      # IP前3都一样,网络肯定正常!
# 不正常时:看网络配置文件是否是动态分配IP: dhcp
cat /etc/sysconfig/network-scripts/ifcfg-ens33
# python是否安装
python -V
# 查看python命令如何解析
which python    #找到命令位置 /usr/bin
cd /usr/bin      
ls -al  python*   # 重点:3.6的实际安装路径

# 查pip命令如何解析
which  pip
cd /usr/bin
ls -al  pip*
# 查Python安了哪些包
pip list  #检查是否安装了 virtualenv  
# 查虚拟环境能用?
virtualenv  --version

# 虚拟目录和项目发布目录? 我的习惯(/data/env+wwwroot)
cd /data  
#进入虚拟环境,检测软件
pip list
# 检测uwsgi是否可用
uwsgi
which  uwsgi
cd /usr/bin
ls -al uwsgi*

# nginx是否安装?

 

MySQL安装

详细步骤

https://www.django.cn/article/show-2.html

centos7 的yum源仓库包默认不支持mysql, 需要手动添加mysql官方yum仓库

yum指令不能使用

yum解析是默认依赖python2.7

语法错误

 

#编辑源码
vi /usr/bin/yum
#第一行明确指定python版本未python2
改为  !/usr/bin/python2

 

改密码

修改密码规则
set global validate_password.policy=0;
set global validate_password.length=1;

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';

 

修改允许root远程访问

use mysql  # 切换库
select host, user from user;  #查
update user set host = '%' where user = 'root'; #改
flush privileges;  #刷新
sudo service mysqld restart #重启mysql
systemctl stop firewalld.service #关防火墙

 

 

详细参考Django中文网

https://www.django.cn/article/show-2.html

错误

yum 指令运行时有可能会提示语法错误!

如果有语法错误,把yum文件头编译的环境指定为python2

 

启动和停止服务

# 查看启动状态
sudo service mysqld status

#启动(默认随着系统自动启动了)
sudo service mysqld start

#停止
sudo service mysqld stop

 

 

生产环境介绍

工作中项目发布真实服务器环境

  • 域名(万网/阿里云购买)

  • 云服务器(阿里云/华为云/百度云)

  • 域名解析到服务器(DNS解析)

 

买域名

一级域名: www.zhouzhengyang.cn

不带www叫子域名可以包含N个: m.zhouzhengyang.cn

django.zhouzhengyang.cn

阿里购买地址:

https://developer.huaweicloud.com/campus

https://wanwang.aliyun.com/?utm_content=se_1000301943

买服务器

阿里云

https://www.aliyun.com/?utm_content=se_1000301881

 

DNS解析

域名解析到服务器叫:DNS解析

登陆域名管理平台!

 

 

阿里云解析过程

实现: 输入 www.zhouzhengyang.cn 自动打开我的网站

前提:

  • 购买www.zhouzhengyang.cn域名

  • 购买:阿里云服务器: 39.98.39.173

  • 进入阿里云后台进行DNS解析!

  • 解析之前: 需要完成备案!

 

DNS解析

 

配置完后:需要配置安全组或叫防火墙

防火墙打开对应的端口,允许对应端口访问服务器

 

 

服务器搭建:

python3 + uwsgi + nginx +django2+ mysql5.7或以上

 

www.zhouzhengyang.cn :80

====>nginx 监听80端口 =====> uwsgi: 每个web项目一个端口8000

 

  • 查看nginx 和 uwsgin 或其他软件,的运行状态?

#查看进程端口号及运行的程序
netstat -atunp
#由端口号port(8000)查看进程id
netstat -anp |grep 8000
#停止
#杀死指定进程根据pid(进程id) uwsgi
kill pid
#强制杀死指定进程根据pid(进程id) nginx
kill -9 pid

 

常用指令

  • 解压tar.xz使用 xz -d 命令解压出tar包

xz -d Python-3.6.6.tar.xz
  • tar包解压

tar -xvf Python-3.6.6.tar 
  • 查找

    find / -name *libsqlite3.so*

  • 检测服务列

chkconfig --list
service  服务名 start/stop/restart
  • 查看nginx 服务是否自动启动

netstat -apn|grep nginx

 

 

常用问题

找不到sqlite3模块

https://blog.csdn.net/sparkexpert/article/details/79118448 [详细说明]

对python3进行重新编译

# sudo yum install sqlite-devel
#cd /usr/local/Python-3.6.6

#LD_RUN_PATH=/usr/local/sqlite3/lib ./configure LDFLAGS="-L/usr/local/sqlite3/lib" CPPFLAGS="-I /usr/local/sqlite3/include"

#LD_RUN_PATH=/usr/local/sqlite3/lib make

#LD_RUN_PATH=/usr/local/sqlite3/lib sudo make install

 

常用指令

  • 解压tar.xz使用 xz -d 命令解压出tar包

xz -d Python-3.6.6.tar.xz
  • tar包解压

tar -xvf Python-3.6.6.tar 
  • 查找

    find / -name *libsqlite3.so*

  • 检测服务列

chkconfig --list
service  服务名 start/stop/restart
  • 查看nginx 服务是否自动启动

netstat -apn|grep nginx
  • 查看当前启动端口

netstat -atunt

 

猜你喜欢

转载自www.cnblogs.com/cwx-0324/p/10879924.html