Linux nginx发布基于python的WEB环境

实验环境约定

  • 系统:centos7.7
  • 防⽕墙:关闭
  • Selinux:关闭
  • 服务器地址:192.168.31.199/24

一. 安装Nginx

1. 安装依赖工具

yum -y install epel-release make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2. 安装PCRE

# PCRE 作用是让 Nginx 支持 Rewrite 功能。
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@localhost src]# tar zxvf pcre-8.35.tar.gz
[root@localhost src]# cd pcre-8.35
[root@localhost pcre-8.35]# ./configure
[root@localhost pcre-8.35]# make && make install
[root@localhost pcre-8.35]# pcre-config --version        #查看PCRE版本

3. 安装nginx

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget https://nginx.org/download/nginx-1.16.1.tar.gz
[root@localhost src]# tar -zxvf nginx-1.16.1.tar.gz
[root@localhost src]# cd nginx-1.16.1/
[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
[root@localhost nginx-1.16.1]# make && make install
[root@localhost nginx-1.16.1]# /usr/local/nginx/sbin/nginx -v  #查看Nginx版本

二. 安装mysql

1. 安装依赖包

yum -y install ncurses-devel gcc-* bzip2-*

2. 升级cmake⼯具

1)获得软件
https://cmake.org/download/

2)安装软件
cd /usr/local/src/
wget https://cmake.org/files/v3.6/cmake-3.6.0-rc1.tar.gz
tar xf cmake-3.6.0-rc1.tar
cd cmake-3.6.0-rc1
./configure
make
make install

3. 升级boost库⽂件

1) 软件获得
https://www.boost.org/  请选择1.5.9版本
下载链接如下:
wget https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

2)软件安装
mkdir /usr/local/boost
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/boost/
# 该软件为绿色版本,直接解压到/usr/local/boost/目录下即可
# boost 1.5.9版本配合的mysql是5.7;

4. 安装mysql

1)软件获得
cd /usr/local/src
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.24.tar.gz

2)软件安装
tar -zxvf mysql-5.7.24.tar.gz
cd mysql-5.7.24
useradd -s /sbin/nologin -r mysql

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DWITH_EMBEDDED_SERVER=1 \
-DDOWNLOAD_BOOST=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_BOOST=/usr/local/boost



# 以上cmake参数解释
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql	#指定安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data	#指定存放数据⽂件的⽬录位置
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock	#指定mysql.sock的路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 #安装innodb存储引擎
-DWITH_MYISAM_STORAGE_ENGINE=1 #安装myisam存储引擎
-DENABLED_LOCAL_INFILE=1 #允许客户端使⽤local data local 导⼊本地数据⽂件
-DEXTRA_CHARSETS=all #安装所有字符集
-DDEFAULT_CHARSET=utf8 #默认字符集utf-8
-DDEFAULT_COLLATION=utf8_general_ci #校验字符
-DWITH_DEBUG=0	#关闭debug
-DWITH_EMBEDDED_SERVER=1 #⽣成⼀个libmysqld.a(.so)的库,这个库同时集成了mysql服务与客户端API
-DDOWNLOAD_BOOST=1 #允许boost,
-DENABLE_DOWNLOADS=1 #允许下载boost库文件
-DWITH_BOOST=/usr/local/boost #指定boost文件库位置

# 如果需要重新make需要删除/usr/local/src/mysql-5.7.24目录下的CMakeCache.txt,然后再重新cmake;

make -j4  #使用4个cpu内核一起进行编译
make install

3)安装后操作
cp support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chown mysql.mysql /usr/local/mysql/ -R
ln -sf /usr/local/mysql/bin/* /usr/bin/
ln -sf /usr/local/mysql/lib/* /usr/lib/
ln -sf /usr/local/mysql/libexec/* /usr/local/libexec
ln -sf /usr/local/mysql/share/man/man1/* /usr/share/man/man1
ln -sf /usr/local/mysql/share/man/man8/* /usr/share/man/man8

#初始化数据库,并记录临时密码;
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

#重要的事情说三遍:
#记录临时密码;root@localhost: ymH?C_fpn8;5
#记录临时密码;root@localhost: ymH?C_fpn8;5
#记录临时密码;root@localhost: ymH?C_fpn8;5
原日志:2020-04-11T17:19:34.310247Z 1 [Note] A temporary password is generated for root@localhost: ymH?C_fpn8;5

#修改配置文件
vim /etc/my.cnf
#确保所有参数的路径正确
egrep -v "^#|^$" /etc/my.cnf
[mysqld]
basedir=/usr/local/mysq
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysql.log
pid-file=/var/run/mysql.pid
!includedir /etc/my.cnf.d

5. 启动测试

/etc/init.d/mysql start    #启动数据库
mysql_secure_installation    #修改密码
mysql -u root -p    #登录数据库

三. 安装python

1. 安装Python

# 安装Python
[root@www ~]# yum -y install gcc-* openssl-* libffi-devel sqlite-devel
[root@www ~]# cd /usr/localsrc
[root@www src]# wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
[root@www src]# tar xf Python-3.7.1.tar.xz
[root@www src]# cd Python-3.7.1
[root@www Python-3.7.1]# ./configure --enable-optimizations --with-openssl=/usr/bin/openssl
[root@www Python-3.7.1]# vim Modules/Setup
211 SSL=/usr/local/ssl
212 _ssl _ssl.c \
213         -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
214         -L$(SSL)/lib -lssl -lcrypto
[root@www Python-3.7.1]# make -j4
[root@www Python-3.7.1]# make install

2. 升级pip工具

# 升级pip,pip 是 Python 包管理⼯具,该⼯具提供了对Python 包的查找、下载、安装、卸载的功能。
[root@www Python-3.7.1]# pip3 install --upgrade pip

3. 安装并使用Python虚拟环境

#virtualenv 是⼀个创建隔绝的Python环境的⼯具。virtualenv创建⼀个包含所有必要的可执⾏⽂件的⽂件夹,⽤来使⽤Python⼯程所需的包。
[root@www Python-3.7.1]# pip3 install virtualenv
[root@www Python-3.7.1]# cd
[root@www ~]#  virtualenv -p python3 web01
[root@www ~]# source web01/bin/activate
(web01) [root@www ~]# pip install django==2.1.8
(web01) [root@www ~]# django-admin.py startproject myweb1
(web01) [root@www ~]# cd myweb1
(web01) [root@www myweb1]# vim myweb1/settings.py
 ALLOWED_HOSTS = ['*']
(web01) [root@www myweb1]# python3 manage.py runserver 192.168.31.199:8000
#这步是临时测试Python站点,如果可以正常访问站点,则继续下一步。

四. 部署发布平台

#安装uwsgi
#uwsgi是服务器和服务端应⽤程序的通信协议,规定了怎么把请求转发给应⽤程序和返回
#uWSGI是⼀个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作⽤是与uWSGI服务器进⾏交换。
#nginx 和 uWSGI交互就必须使⽤同⼀个协议,⽽上⾯说了uwsgi⽀持fastcgi,uwsgi,http协议,这些都是nginx⽀持的协议,只要⼤家沟通好使⽤哪个协议,就可以正常运⾏了。
[root@web01 ~]# pip3 install uwsgi
# 编辑uwsgi配置文件
[root@web01 ~]# mkdir /etc/uwsgi
[root@web01 ~]# vim /etc/uwsgi/uwsgi.ini
[uwsgi]
uid = root
gid = root
socket = 127.0.0.1:8080
master = true //启动主进程
vhost = true //多站模式
no-site = true //多站模式时不设置⼊⼝模块和⽂件
workers = 2 //⼦进程数
reload-mercy = 10 //平滑的重启
vacuum = true //退出、重启时清理⽂件
max-requests = 1000 //开启10000个进程后, ⾃动respawn下
limit-as = 512 // 将进程的总内存量控制在512M
buffer-size = 30000
pidfile = /var/run/uwsgi8080.pid //pid⽂件,⽤于下⾯的脚本启动、停⽌该进程
daemonize = /var/log/uwsgi8080.log
pythonpath = /root/web1/lib/python3.7/site-packages
#启动UWSGI服务
uwsgi --ini /etc/uwsgi/uwsgi.ini

# 关闭UWSIG服务,可以通过杀进程来关闭。
# nginx配置
location / {
	include uwsgi_params;
	uwsgi_pass 127.0.0.1:9090;
	uwsgi_param UWSGI_SCRIPT myweb1.wsgi;
	uwsgi_param UWSGI_CHDIR /usr/local/nginx/html/myweb1;
	index index.html index.htm;
	client_max_body_size 35m;
	uwsgi_cache_valid 1m;
	uwsgi_temp_file_write_size 64k;
	uwsgi_buffers	8 64k;
	uwsgi_buffer_size 64k;
	uwsgi_read_timeout 300;
	uwsgi_send_timeout  300;
	uwsgi_connect_timeout 300;
	}
[root@www ~]# mv myweb1 /usr/local/nginx/html/
/usr/local/nginx/sbin/nginx    #启动Nginx服务

五. 测试

http://192.168.31.199
posted @ 2020-04-11 21:54  IamJet  阅读(567)  评论(0编辑  收藏  举报