最近新购买一个腾讯云服务器部署团队的一个小项目,操作系统为 CentOS 7.2 64位,工作主要分为以下8个步骤
目录
0.下载一个XShell6的客户端,安装后新建对话
1.安装Python
1.1下载Python
1.2安装python
2.安装Django
3.安装并配置MySQL
4.安装rz工具上传文件
5.上传文件
6.安装uWsgi模块
7.安装Nginx服务器
8.Nginx和uwsgi服务的查看、启动、重启以及终止
主机号就填写腾讯云给你的公网IP地址,点击确定后输入用户名,再点击确定后输入初始密码,用户名默认为root,密码啥的腾讯云通过站内信发给你了,自己去查看即可,比如我的:
下载python可以使用wget命令通过python官方网站的ftp下载,网址为:https://www.python.org/ftp/python/,这个网址进去之后是这样的:
选择自己想要的python版本,然后进入对应的目录,比如我选择的是3.7.2版本,进去之后是这样的:
在这里可以下载到python3.7.2的所有程序,不同平台以及不同打包格式的程序,因为我们是在CentO环境下,所以我们就选择python-3.7.2.tgz即可,我们输入如下命令:
wget后面的地址自己拼接即可,下载前可以新建一个文件夹用来存放下载的python文件。然后就开始下载:
下载成功后,文件夹中就有下载好的python文件:
首先使用tar命令解压缩,tar是Linux系统下的压缩与解压缩的命令,tar命令后面的参数主要有以下几种:
下面的五个参数为必选参数,有且只能有一个 ,代表压缩与解压缩的模式:
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
剩下的为可选参数,可以一个或者多个并用:
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
大概总结就是解压tgz就用 -xzvf就行了
所以使用如下命令解压Python
tar -xzvf Python-3.7.2.tgz
然后就是一串解压的过程,执行完毕后就会发现压缩包旁多了一个同名文件夹。
cd进入目录:
进入后,配置依赖与安装:
如果安装过程出现如下 no acceptable C compiler found in $PATH错误:
直接yum install gcc,安装个gcc组件,一通安装完之后再运行
./configure --prefix=/usr/local/python3
这个命令,就好了,这个命令的用途大概就是通过运行Python-3.7.2目录下的configure来讲python配置到/usr/local/python3文件夹下。
配置完毕:
接下来直接运行安装即可:
make && make install
编译安装过程中出现can't decompress data; zlib not available错误,如下图:
原因是缺少zlib解压缩类库,下载安装即可。
当然,在安装过程中出现: Multilib version problems found.错误,如下图:
此问题的原因是机器里已经有zlib解压缩包了,运行rpm命令查看一下发现系统中的确已经存在zlib解压缩包了。
运行yum update zlib升级该压缩包,将此压缩包修复。
修复后,再次运行make && make install命令:
如果发现出现No module named '_ctypes' 的错误则运行以下命令安装libffi依赖包:
yum install libffi-devel -y
安装成功后再次运行:
make && make install
提示安装成功,如下图。
创建软连接(快捷方式),这个命令的意思就是可以通过python3来运行/usr/local/python3/bin/python3.7的命令。
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
检查是否安装成功:
至此python安装完毕。
Django是python的一个组件,使用python自带的包管理器pip就可以安装。为了在任何文件夹下都可以使用pip命令,我们也给pip命令创建一个软连接。
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
接下来只要运行
pip3 install Django
即可以安装Django的最新版本。
当然如果纠结安装Django哪个版本比较稳定,可以查看官方提供的版本示意图,如下:
凡是标有LTS的就是Django官方长期支持的版本。(LTS:Long Time Support)
可以使用如下命令安装指定版本的Django
pip3 install Django==1.8.16
如果嫌安装速度慢,可以使用国内的豆瓣源安装:
pip3 install -i https://pypi.doubanio.com/simple/ Django
我这里就直接安装Django的最新版本:
腾讯云是直接从自己的源上下载,所以速度也比较快。
检查Django是否安装成功:
没有报错说明安装成功。
我的Django项目用到了MySQL数据库,接下来安装并配置MySQL数据库。
CentOS7将MySQL从默认软件列表中移除,并使用MariaDB代替,所以直接运行安装命令 yum -y install mysql mysql-server mysql-devel会提示无法安装。
所以要先从官网下载,然后用rpm命令安装,
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
如下图:
再次运行安装命令:
yum -y install mysql mysql-server mysql-devel
就提示安装成功了。
接下来启动MySQL服务:
service mysqld start
输入mysql -u root -p
密码为空进入MySQL命令行。
修改root密码(我的密码是bonjava)
set password for root@localhost = password('bonjava');
rz sz工具是Linux系统与本地系统进行文件互传的有效工具。
输入以下命令可以通过yum安装rz工具:
yum install -y lrzsz
安装完成后,在XShell中输入rz即可以将本地文件上传至服务器,如下图:
使用rz命令将项目文件传到云端,要记得在数据库中新建项目用的数据库,然后在项目根目录下运行以下命令生成数据库的表:
python3 manage.py makemigrations
python3 manage.py migrate
如果要导入历史数据,可以将历史数据备份为sql文件,然后用source命令将sql文件内容导入到数据库中,此处不再赘述。
uWsgi模块是Python的一个模块,因此直接通过pip安装即可。
pip3 install uwsgi
安装成功后即可以配置uwsgi。在项目根目录下新建my_uwsgi.ini文件,并写入配置内容。
具体配置如下:
# hello_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
#此处填写项目地址,我的Django项目地址是/home/project/PyCharmProjectscanteenserver
chdir = /home/project/PyCharmProjectscanteenserver
# Django s wsgi file
module = PyCharmProjectscanteenserver.wsgi
# process-related settings
# master
master = true
socket = 127.0.0.1:8000
#此处配置的为日志文件存放的地方
daemonize = /home/project/PyCharmProjectscanteenserver/my_uwsgi.log
# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
配置完成后,在项目根目录下输入以下命令即可启动uwsgi服务。
uwsgi --ini my_uwsgi.ini
Nginx服务器的安装分为yum安装和下载安装文件安装,个人认为yum安装比较方便。
yum -y install nginx
如果此命令不行,则按如下配置一下yum源再执行安装:
vim /etc/yum.repos.d/nginx.repo
在文件中输入以下内容:
[nginx]
name=nginx repo
#我这里是centos7所以就是7,其他版本可以对应更改,具体的可以将地址中7以前的部分复制到浏览器中查看
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
通过yum安装的Nginx安装完成之后是默认开启的。接下来开始配置Nginx的配置文件,通过以下命令新建myconf.conf配置文件。
vim /etc/init.d/nginx/conf.d/myconf.conf
在配置文件中作如下输入:
#Nginx反向代理服务器,主要功能就是将发送到指定端口的数据转发到相应的服务器中
server {
listen 80; # 监听80端口
server_name 118.25.40.2; # 路径前面的url名称,也就是你在浏览器中输入访问这个服务器的网址,比如1.1.1.10
access_log /var/log/nginx/access.log main; # Nginx日志配置
charset utf-8; # Nginx编码
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支
持压缩的类型
error_page 404 /404.html; # 配置notfound错误页面
error_page 500 502 503 504 /50x.html; # 配置50X错误页面
# 指定项目路径uwsgi,此处配置的就是Nginx和uwsgi之间的代理
location / { # 此处的意思就是配置浏览器访问此处的位置,如果此处为location /aa 那么浏览器访问此处所有的Django url.py文件中的地址前都要加/aa/
include uwsgi_params; # 导入Nginx的模块,这个模块是用来和uWSGI进行通讯的
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
uwsgi_pass 127.0.0.1:8000; # 指定uwsgi的sock文件,此处填写要和uwsgi配置文件中的socket后面是一样的
}
# 指定静态文件路径,此处指定你的CSS和JS的文件路径,也就是你Django项目中的静态文件夹的地址,配置不好,所有的CSS以及JS效果都看不到
location /static/ {
alias /static/;
index index.html index.htm;
}
}
该出目录下还有一个default.conf文件,不用管它。启动Nginx服务器时,会自动加载里面的所有配置文件。
查看目前运行的服务:
netstat -ntpl
终止运行的服务:
kill pid
pid就是你运行netstat -ntpl命令之后出来一行中倒数第二个的PID的值。
启动服务:
#启动uwsgi
uwsgi --ini my_uwsgi.ini #不在my_uwsgi.ini文件的目录下运行此命令时,要带上my_uwsgi.ini文件的完整路径
#启动Nginx
systemctl start nginx.service #通过yum安装的nginx不想麻烦配置其他启动方式的话,可以使用这个。
重启nginx服务:
systemctl restart nginx.service
此处会遇到的坑:
在启动nginx服务器的时候会遇到Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.错误:
遇到这个错误不要慌,按照提示输入systemctl status nginx.service命令查看错误日志,比如我的错误日志出来是这样:
这个错误就是Address already in use,意思是地址已经被使用了,这个可能是其他服务器冲突或者是nginx本身死掉了。这个时候只要netstat -nptl查看nginx的pid号后,把nginx杀掉,然后再次启动就好了。