一、CentOS-8.5环境安装Python3.6.7
1.下载Python安装包
cd /opt/package/
yum install -y gcc*
yum install -y zlib
yum install -y zlib-devel
tips:编译时要提前装好gcc*编译器和zlib zlib-devel
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz
2.解压
cd ../software
tar -zxvf /opt/package/Python-3.6.7.tgz
3.编译安装包
cd Python-3.6.7
./configure --prefix=/usr/local/python
make && make install
这里有坑,可能会找不到ssl模块,导致无法导入ssl和无法pip安装模块
1.下载安装最新openssl
cd /opt/package
wegt https://www.openssl.org/source/openssl-1.1.1n.tar.gz
cd ../software
tar -zxvf /opt/package/openssl-1.1.1n.tar.gz
cd openssl-1.1.1n
./config --prefix=/usr/local/openssl
make && make install
2.然后修改Setup文件
cd /opt/software/Python-3.6.7/Modules
vim Setup
进行下图修改:
解开注释,将"SSL="后面修改为新下载的openssl的安装的位置
3.重新编译并安装
cd ..
./configure --prefix=/usr/local/python
make && make install
4.添加环境变量
echo PATH='/usr/local/python/bin/:$PATH' >> /etc/profile
source /etc/profile
5.检查是否成功,执行下面代码
python3.6
Python 3.6.0 (default, Jun 1 2017, 14:01:43)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>print('hello word')
hello word
6.更换国内pip源
临时更改:
pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
永久更改:
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
运行永久更改命令后可以去编辑文件
cd /root/.config/pip
vim pip.conf
添加以下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
国内常用镜像源
清华:[https://pypi.tuna.tsinghua.edu.cn/simple]
阿里云:[http://mirrors.aliyun.com/pypi/simple/]
中国科技大学 [https://pypi.mirrors.ustc.edu.cn/simple/]
华中理工大学:[http://pypi.hustunique.com/]
山东理工大学:[http://pypi.sdutlinux.org/]
豆瓣:[http://pypi.douban.com/simple/]
7.卸载Python(如果需要的话)
第一种办法:
安装多个版本Python,删除指定版本
whereis python # 查看所有Python路径
# 只删除Python3.7相关的文件
rm -rf /usr/local/python3.7m
rm -rf /usr/local/python3.7
rm -rf /usr/lib/python3.7
rm -rf /usr/lib64/python3.7
rm -rf /usr/include/python3.7m
whereis python # 再次查看所有Python路径
# 修改pip配置文件
vim /usr/bin/pip
# 将第一行#!/usr/bin/python3.x改为 #!/usr/bin/python3.x (即改为/usr/bin/目录下你使用的python版本执行文件)
第二种办法(慎用):
!!!rpm会卸载所有python及其依赖:yum是依赖于python2.x运行的,会导致yum不可用等等!!!
彻底删除Python(!!!注意:会将各版本Python和依赖的包都删除掉!!!)
rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps # 强制删除已安装程序及其依赖
whereis python |xargs rm -frv # 删除所有残余文件, xargs允许你对输出执行其他某些命令
whereis python # 验证删除是否成功,返回无结果
8.创建虚拟环境
pip3 install virtualenv # 安装virtualenv模块
virtualenv env-dir --python=python3.6.7 # 在当前目录创建env-dir虚拟环境,基于python3.6.7
配置python环境变量后virtualenv命令可以直接使用,否则需要指定目录
cd env-dir/bin
source activate # 激活进入虚拟环境
deactivate # 退出虚拟环境
去宿主机导出模块文件
pip freeze > requirements.txt
通过模块文件批量安装模块
pip3 install -r requirements.txt
有一个模块需要注意:mysqlclient==1.4.2.post1
此模块需要先安装mysql-devel
yum install -y mysql-devel --nogpgcheck
二、安装Nginx
1.安装Nginx之前需要先安装PCRE
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
cd ../software
tar -zxvf ../package/pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre-8.35
make && make install
配置环境变量
echo PATH='/usr/local/pcre-8.35/bin/:$PATH' >> /etc/profile # 配环境变量
source /etc/profile
pcre-config --version # 查看版本
2.安装Nginx
wget https://nginx.org/download/nginx-1.14.2.tar.gz
cd ../software
tar -zxvf ../package/nginx-1.14.2.tar.gz
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx-1.14.2 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/software/pcre-8.35/
make && make install
注意:这里"–with-pcre="指定的是PCRE源码目录,而不是安装目录
配置环境变量
echo PATH='/usr/local/nginx-1.14.2/sbin/:$PATH' >> /etc/profile # 配环境变量
source /etc/profile
nginx -v # 查看版本
3.开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放80端口
firewall-cmd --reload # 刷新防火墙
firewall-cmd --zone=public --list-ports # 查看开放端口列表
4.测试Nginx是否正常
nginx # 启动Nginx服务
nginx -s quit # 正常关闭Nginx服务
nginx -s stop # 快速关闭Nginx服务
service nginx restart # 重启Nginx服务
nginx -s reload # 配置文件修改后重载
5.配置Nginx
cd /usr/local/nginx-1.14.2/conf
vim nginx.conf
编辑以下内容
#user nobody;
worker_processes 1;
# 错误日志文件位置
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# nginx访问日志位置
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
# 项目较大可以开启压缩
gzip on;
# upstream djangos{
# server 192.168.88.8:8000;
# server 192.168.88.8:8001;
# server 192.168.88.8:8002;
# server 192.168.88.8:8003;
# }
server {
# 监听的端口和IP
listen 80;
server_name localhost;
#charset koi8-r;
# server访问日志位置
access_log logs/host.access.log main;
# 指定项目路径uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
# proxy_pass http://192.168.88.8:8000;
uwsgi_pass unix:/home/pyproject/script/uwsgi.sock;
# 负载均衡
# proxy_pass_header Server;
# proxy_set_header Host $http_host;
# proxy_redirect off;
# proxy_set_header X-Real_IP $remote_addr;
# proxy_set_header X-Scheme $scheme;
# proxy_pass http://djangos;
}
# 指定静态文件路径
location /static/ {
alias /home/pyproject/mymall/static_all/;
index index.html index.htm;
}
# 指定媒体文件路径
location /media/ {
alias /home/pyproject/mymall/media/;
index index.html index.htm;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
三、安装MySQL数据库
1.下载并安装MySQL官方的MySQL Yum Repository
wget https://repo.mysql.com//mysql57-community-release-el7-10.noarch.rpm
2.然后进行repo的安装
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
3.安装MySQL服务器
yum -y install mysql-community-server
如果直接执行yum安装命令报错:Error:Unable to find a match: mysql-community-server
这时执行以下命令,然后在此执行yum安装命令
yum module disable mysql
阿里云镜像安装MySQL时,使用 yum 的方式可能导致报错:Error: GPG check FAILED
这时改用以下命令
yum -y install mysql-community-server --nogpgcheck
4.启动MySQL服务
systemctl start mysqld # 启动MySQL服务
systemctl status mysqld # 查看MySQL服务状态
systemctl enable mysqld # 设置MySQL服务自启动
systemctl disable mysqld # 禁止MySQL服务自启动
grep "password" /var/log/mysqld.log # 查找安装后的初始密码,"root@localhost:"后都是密码
mysql -uroot -p # 用初始密码登录数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password'; # 修改密码
我们学习的时候可能会设置比较简单的密码比如"root"或"123456"可能会报以下错误
简单来说就是你的密码太简单,不符合现在的安全策略,那么我们可以降低一下策略
set global validate_password_policy=LOW; # 设置为低安全策略安全策略
set global validate_password_length=4; # 设置密码长度
安全策略有四种:OFF(关闭)、LOW(弱)、MEDIUM(中)、STRONG(强)
5.配置远程连接MySQL数据库
mysql -uroot -proot # 登录数据库
use mysql; # 进入mysql库
select user,host from user; # 查看用户和访问权限
可以看到root用户只允许本地连接,我们修改一下权限
update user set host='%' where user = 'root';
flush privileges; # 刷新权限
6.开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent # 开放3306端口
firewall-cmd --reload # 刷新防火墙
firewall-cmd --zone=public --list-ports # 查看开放端口列表
四、安装并配置uwsgi
1.pip3安装uwsgi
cd /root/pyproject/mymall-env/bin
source activate # 进入虚拟环境
pip3 install uwsgi==2.0.18
2.配置uwsgi.ini
cd /root/pyproject
mkdir script
cd script
vim uwsgi.ini
写入以下内容
# uwsgi使用配置文件启动
[uwsgi]
# 项目目录
chdir=/root/pyproject/mymall
# 指定项目的application[注意:这个application是wsgi.py文件中的application>函数]
module=netshop.wsgi:application
# 指定sock的文件路径
socket=/root/pyproject/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/root/pyproject/script/uwsgi.pid
# 指定IP端口
http=192.168.88.8:8000
# 指定静态文件
static-map=/static=/root/pyproject/mymall/static_all
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 当服务停止的时候自动移除unix Socket和pid文件
vacuum=true
# 序列化接受的内容,如果开可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/root/pyproject/script/uwsgi.log
用配置文件启动uwsgi
uwsgi --ini uwsgi.ini # 记得在虚拟环境中,并指定uwsgi.ini文件路径
uwsgi --reload uwsgi.pid # 重启uwsgi
uwsgi --stop uwsgi.pid # 关闭uwsgi