1.系统准备
- centos7.5
- python3的安装
- 升级 系统源及安装如下所需工具及环境
yum -y update
yum -y install git #安装git工具
yum -y install nginx #安装nginx
yum -y install python3
yum -y install python3-pip
pip3 install virtualenv
yum -y install mysql-server
- 更换PIP源
mkdir ~/.pip
vim ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
编译安装错误
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
tar -xf Python-3.6.4.tar
cd Python-3.6.4
./configure prefix=/usr/local/python3
make && make install
# 如果出现can't decompress data; zlib not available这个错误,则需要安装相关库
#安装依赖zlib、zlib-devel
yum install zlib zlib
yum install zlib zlib-devel
如果最后没提示出错,就代表正确安装了,在/usr/local/目录下就会有python3目录
#将原来的链接备份
mv /usr/bin/python /usr/bin/python.bak
#添加python3的软链接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
#测试是否安装成功了
python -V
更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用
vi /usr/bin/yum
把#! /usr/bin/python修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把#! /usr/bin/python 修改为#! /usr/bin/python2
在线rpm包安装mysql
[root@localhost local]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
[root@localhost local]# yum -y localinstall mysql57-community-release-el7-11.noarch.rpm
[root@localhost local]# yum -y install mysql-community-server
启动mysql及设置开机启动
[root@localhost local]# systemctl start mysqld
[root@localhost local]# systemctl enable mysqld
[root@localhost local]# systemctl daemon-reload
修改mysql密码
mysql安装完成之后,会在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。
[root@localhost local]# vim /var/log/mysqld.log

修改mysql密码,设置远程登陆:
[root@localhost local]# mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'daasan7ujm^YHN';
Query OK, 0 rows affected (0.00 sec)
# 设置远程登录
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'daasan7ujm^YHN' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> exit
配置mysql编码
[root@localhost sysconfig]# vim /etc/my.cnf
#添加如下代码
character_set_server=utf8
init_connect='SET NAMES utf8'
配置mysql默认码为utf-8
[root@localhost sysconfig]# vim /etc/my.cnf
添加如下代码
character_set_server=utf8
init_connect='SET NAMES utf8'
- wq保存后 退出
重启mysql
[root@localhost data]# systemctl restart mysqld
root用户查看编码
[root@localhost sysconfig]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.29 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>
最后本地连接测试,这里使用navicat:

创建数据库 my_blog
mysql> create database my_blog;
Query OK, 1 row affected (0.01 sec)
mysql> show create database my_blog;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| my_blog | CREATE DATABASE `my_blog` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
代码部署
代码部署及数据迁移
- 进入数据存储目录 /data/blog,创建python虚拟环境
cd /data/blog
virtualenv --python=python3.6 env # 创建python3.6的虚拟环境
source env/bin/activate # 进入虚拟环境
git clone https://github.com/stacklens/django_blog_tutorial.git # clone blog项目
接下来修改django配置文件
my_blog/settings.py
# 关闭调试模式
DEBUG = False
# 允许的服务器
ALLOWED_HOSTS = ['*']
# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
在生成的虚拟环境内 安装库\收集静态资源\数据迁移
cd /data/blog
pip3 install -r requirements.txt
python manage.py collectstatic
python manage.py migrate
代码部署完成,接下安装Nginx
sudo systemctl start nginx
打开浏览器 访问服务器地址

- nginx默认配置是不能用的,所以我们需要重新写入nginx配置文件.进入 /etc/nginx/sites-available 目录,这里是定义 Nginx 可用配置的地方。输入指令 sudo vi dusaiphoto.com 创建配置文件并打开 vi 编辑器:
(env) ~$ cd /etc/nginx
(env) ~$ mkdir sites-available
(env) /etc/nginx/sites-available$
(env) /etc/nginx/sites-available$ sudo vi myblog.conf
关于 vi 编辑器如何使用也不赘述了,这里只说两个最基本的操作:
按 i 键切换到编辑模式,这时候才可以进行输入、删除、修改等操作
按 Ctrl + c 退回到命令模式,然后输入 :wq + Enter 保存文件修改并退回到服务器命令行
回到正题,用 vi 在 dusaiphoto.com 文件中写入:
server {
charset utf-8;
listen 80;
server_name x.x.x.x; # 改成你的 IP
location /static {
alias /data/blog/my_blog/collected_static;
}
location /media {
alias /data/blog/my_blog/media;
}
location / {
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/x.x.x.x.socket; # 改成你的 IP
}
}
此配置会监听 80 端口(通常 http 请求的端口),监听的 IP 地址写你自己的服务器公网 IP。
配置中有3个规则:
- 如果请求 static 路径则由 Nginx 转发到目录中寻找静态资源
- 如果请求 media 路径则由 Nginx 转发到目录中寻找媒体资源
- 其他请求则交给 Django 处理
这里创建一个可用配置的软链接
sudo ln -s /etc/nginx/sites-available/myblog.conf /etc/nginx/conf.d/myblog.conf
至此 Nginx 就配置好了,接下来搞定 Gunicorn。
有的读者无论怎么配置都只能看到 Nginx 欢迎页面,有可能是 sites-enabled 目录中的 default 文件覆盖了你写的配置。将 default 文件删掉就可以正常代理自己的配置文件了。
Gunicorn及测试
回到项目所在目录,并进入虚拟环境然后输入:
pip install gunicorn
systemctl reload nginx
gunicorn --bind unix:/tmp/x.x.x.x.socket my_blog.wsgi:application # x.x.x.x为自己的IP
网友评论