linux项目发布
1.新建虚拟机
常用虚拟机软件
VMWare
VirtulBox
VMWare安装参考地址
https://blog.csdn.net/java_xinshou1/article/details/100010099
建议手动打开网络开关【忘记打开需要该配置文件】
进入虚拟机root登录
2.查看ip地址
# window 电脑查看IP
ipconfig -all # address /addr
# Centos 查看IP地址
ifconfig
# centos mini 版默认无网络工具, ifconfig 无法识别
# 安装网络工具
yum -y install net-tools
# -y 表示忽略安装提示
3.客户端连接远程服务器
查看linxu的IP地址
SSH客户端连接
4.安装python
centos默认装了2.7.5
# 查看python版本信息
python -V
# 查看python 命令解析流程
which python #查看python命令位置
cd /usr/bin
ls -al python* # 看到解析 python--->python2 --->python2.7
安装Python3.x, 实现方式:添加python3指令--->软件连接指向Python3.6
源码安装
# 1. 更新系统软件
yum update -y # 建议更新完后,制作一个镜像!!
# 2. 下载开发工具(包管理器)
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
# 3. 下载或上传软件到 /usr/local 目录 (所有自己软件我放在了/soft下)
cd /usr/local
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
# 解压
tar -zxvf Python-3.6.6.tgz
# 进入 Python-3.6.6路径
cd Python-3.6.6
# 编译安装到指定路径
./configure --prefix=/usr/local/python3
注意:/usr/local/python3 路径可以自己指定,自己记着就行,下边要用到。
# 安装python3
make
make install
# 安装完成之后 建立软链接 添加变量 方便在终端中直接使用python3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
# Python3安装完成之后pip3也一块安装完成,不需要再单独安装
# 同样给pip3建立软链接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
5.安装virtualenv
pip3 install virtualenv
# 建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
# 安装成功在根目录下建立两个文件夹,主要用于存放env和网站文件的。(个人习惯,其它人可根据自己的实际情况处理)
mkdir -p /data/env
mkdir -p /data/wwwroot
切换到/data/env下
virtualenv --python=/usr/bin/python3 pyweb
# 然后进入/data/env/pyweb/bin
# 启动虚拟环境:
source activate
6.虚拟环境里安装Django和uwsgi
pip3 install django (如果用于生产的话,则需要指定安装和你项目相同的版本)
pip3 install uwsgi
# 留意:uwsgi要安装两次,先在系统里安装一次,然后进入对应的虚拟环境安装一次。
# 给uwsgi建立软链接,方便使用
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# 退出
deactivate
7.源码安装nginx
# 1. 下载
cd /usr/local
wget http://nginx.org/download/nginx-1.13.7.tar.gz
# 2. 解压
tar -zxvf nginx-1.13.7.tar.gz
# 3. 编译 #指定安装目录
./configure --prefix=/usr/local/nginx
# 4. 安装
make
make install
# 5. 启动
nginx cd /nginx/sbin/
./nginx #启动
./nginx -s stop/reload 停止 重新启动
# 6.本地测试访问ngixn
curl 127.0.0.1:80
# 7.关闭防火墙
systemctl stop firewalld.service
#主机测试
http://172.16.44.40:80 #就可以访问到欢迎页面!
查看软件端口判断软件是否运行
# 查看端口
netstat -atunp
# 杀死端口
kill pid编号
kill -9 pip编号 # 强制关闭 #一般需要关好几遍!
8.发布项目
8.1. 项目根目录添加uwsgi.ini配置文件日志
-
uwsgi官方文档
-
https://uwsgi-docs.readthedocs.io/en/latest/ConfigLogic.html
8.2. 删除项目中sqlite配置
默认Centos中无sqlite3 ,需要单独安装
8.3. 项目上传到/data/wwwroot/下 (用WinSCP)
8.4. 配置nginx.conf
改配置文件# 1. 备份 cp nginx.conf nginx.conf.bak # 2. 删除nginx默认的内容(注释删除) events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name www.django.cn; #改为自己的域名,没域名修改为127.0.0.1:80 charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样 uwsgi_param UWSGI_SCRIPT web01.wsgi; #wsgi.py所在的目录名+.wsgi uwsgi_param UWSGI_CHDIR /data/wwwroot/web01/; #项目路径 } location /static/ { alias /data/wwwroot/web01/static/; #静态资源路径 } } }
8.5. 测试django项目是否正常启动
cd /data/env/my_evn01/bin
source activate
python manage.py runserver 0.0.0.0:8000
# 测试1. 打开浏览访问
http://IP地址:8000 #--->成功
# 测试2: 打开新的SSH命令界面
curl 127.0.0.1:8000 # --->成功显示
9.启动uwsgi
uwsgi处理动态请求能力高,但是对于静态请求(静态文件)处理能力就不是很好,就需要结合
nginx使用。
# 激活虚拟环境,进入项目
cd /data/env/my_env01/bin
source activate
cd /data/wwwroot/web01
# 启动 uwsgi --ini uwsgi.ini #启动
#显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功
uwsgi --stop uwsgi.pid 停止
uwsgi --reload uwsgi.pid 重启
10.安装mysql(MariaDB)
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这
个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支
的方式来避开这个风险。MariaDB完全兼容mysql,使用方法也是一样的
有的centos7已经默认安装了Mariadb,可以查看自己的有没有安装,没有安装的再进行安装,已经安装
了可以不用安装也可以卸载了重装。卸载命令 yum remove mariadb-server
10.1安装MariaDB
[root@mini ~]# yum install mariadb-server
10.2配置
1)安装完成后首先要把MariaDB服务开启,并设置为开机启动
[root@mini ~]# systemctl start mariadb # 开启服务
[root@mini ~]# systemctl enable mariadb # 设置为开机自启动服务
2)首次安装需要进行数据库的配置,命令都和mysql的一样
[root@mini ~]# mysql_secure_installation
3)配置时出现的各个选项
Enter current password for root (enter for none): # 输入数据库超级管理员root的密码 (注意不是系统root的密码),第一次进入还没有设置密码则直接回车
Set root password? [Y/n] # 设置密码,y
New password: # 新密码
Re-enter new password: # 再次输入密码
Remove anonymous users? [Y/n] # 移除匿名用户, y
Disallow root login remotely? [Y/n] # 拒绝root远程登录,n,不管y/n,都会拒绝root远程 登录
Remove test database and access to it? [Y/n] # 删除test数据库,y:删除。n:不删除, 数据库中会有一个test数据库,一般不需要
Reload privilege tables now? [Y/n] # 重新加载权限表,y。或者重启服务也许
4)测试是否能够登录成功,出现 MariaDB [(none)]> 就表示已经能够正常登录使用MariaDB数据库了
[root@mini ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.60-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB
Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]>
10.3设置MariaDB字符集utf-8
1)/etc/my.cnf 文件
在 [mysqld] 标签下添加
init_connect=‘SET collation_connection = utf8_unicode_ci‘
init_connect=‘SET NAMES utf8‘
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
2)/etc/my.cnf.d/client.cnf 文件
在 [client] 标签下添加
default-character-set=utf8
3)/etc/my.cnf.d/mysql-clients.cnf 文件
在 [mysql] 标签下添加
default-character-set=utf8
4)重启服务
[root@mini ~]# systemctl restart mariadb
10.4远程连接
mariadb默认是拒绝 root 远程登录的。这里用的是 navicat 软件连接数据库
1)关闭防火墙
① 关闭防火墙 systemctl stop firewalld
[root@mini ~]# systemctl stop firewalld
2)先查看mysql数据库中的user表
[root@mini ~]# mysql -u root -p # 先通过本地链接进入数据库 MariaDB
[(none)]> use mysql;
MariaDB [mysql]> select host, user from user;
+-----------+------+
| host | user |
+-----------+------+
| 127.0.0.1 | root |
| ::1 | root |
| mini | root |
+-----------+------+
3 rows in set (0.00 sec)
3)将与主机名相等的字段改为 "%" ,我的主机名为mini,
MariaDB [mysql]> update user set host=‘%‘ where host=‘mini‘;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [mysql]> select host, user from user;
+-----------+------+
| host | user |
+-----------+------+
| % | root |
| 127.0.0.1 | root |
| localhost | root |
+-----------+------+
3 rows in set (0.00 sec)
4)刷新权限表,或重启mariadb服务,一下二选一即可
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@mini ~]# systemctl restart mariadb
注意:刷新权限表是在数据库中,重启服务是在外部命令行中
6)重新远程链接mariadb