CentOS8后端开发环境(LNMP)部署
前言:笔者通过阿里云的学生”在家实践计划“获得了一台2核4G的云ECS实例,并安装了Centos8镜像。于是尝试部署一套Django的生产环境。笔者选择了 Nginx + uwsgi + mysql +Python3的方式。主机自带了python3和pip3。笔者自行安装了剩下的部分。其中,mysql的安装借鉴了这篇参考博文。如有疑问欢迎大家在评区留言。
附言:以下操作,笔者都是以root身份进行的,读者以其他用户进行时,请酌情在命令前加上sudo。
1.Nginx
1.1阿里云放通80端口
在阿里云的控制台中,对实例主机配置安全组,在入方向新增80端口的安全规则。配置如有疑问请参考官方说明。
1.2安装nginx
由于笔者对nginx的版本没有过多要求,此处采用dnf包管理方式安装,此处笔者dnf安装的是14.1版本。
安装完成后,可以查看一下版本,以验证是否正确安装。
1.3nginx管理
基于dnf安装的nginx已经做好了相关设置,可以使用nginx -s、systemctl对nginx进行便捷管理。
systemctl管理常用:
相比之下,笔者还是更喜欢直接使用原生的nginx自带命令
通过nginx -h 读者可以查看到nginx常用命令及说明,笔者摘录了一部分
1.4nginx使用
上面一系列检查确认nginx正常启动后,可以到浏览器输入公网地址或域名,看到nginx欢迎页。
nginx默认配置中监听80端口的配置项所在根位置,对应nginx程序安装目录下的html目录。我们通过nginx -V
可以看到,dnf安装后,nginx安装位置在/usr/share/nginx,配置文件在/etc/nginx/nginx.conf。(欢迎页就是/usr/share/nginx/html/index.html)。
笔者还是更习惯将网站目录设置在/var/www下,我们可以这样来修改:
大功告成,网站目录修改成功。(准确说是80端口web内容映射的根目录位置)
2.Mysql
2.1安装mysql8.0
Centos8的dnf对懒人那是相当友好。mysql8.0的完全可以一条命令解决:
2.2启动mysql
2.3安全设置
运行如下脚本,可以设置mysql的root密码,并引导你完成一些必要的安全设置。
首先,脚本会让你选择是否配置VALIDATE PASSWORD PLUGIN(密码验证插件),该插件用来检查mysql用户所设置的密码强度,只有达到一定强度的密码才允许被设置。如果你希望设置请输入y或者Y回车,不想请直接回车。若选择了配置,紧接着你将选择所采用密码验证策略的级别:
低:密码长度不少于8位
中:密码长度不少于8位,必须是数字、大小写字母、特殊字母混合。
强:密码长度不少于8位,必须是数字、大小写字母、特殊字母混合,需配合字典文件。
通常,我们选择中级别即可。
其次,将要求用户输入两次为root设置的新密码,上一步骤设置的密码验证策略将发挥作用,并对用户设置的密码强度进行打分。设置好密码以后,会提示用户是否继续采用密码保护,选择y回车。
紧接着,将询问用户是否删除匿名用户,选择y回车。
默认情况下,MySQL有一个匿名用户,允许任何人登录MySQL,而不必创建用户帐户。这仅用于测试,或者安装时更便利。但在部署生产环境之前,应该先删除匿名用户。
然后,将询问用户是否禁止以root身份远程登陆mysql,选择y回车。
通常,mysql中的root用户应只允许通过本地登陆,而不能远程登陆。这样可以降低root用户密码被爆破的风险。
此后,将询问用户是否删除测试数据库,选择y回车。
默认情况下,MySQL总有一个名为’test’的数据库,允许任何用户访问。这仅用于安装时的测试,但在部署生产环境之前,应该先删除该数据库。
最后,脚本询问用户是否现在重载 privilege tables,以使当前所有修改立刻生效。选择y回车。
当我们在终端中键入:
即可登陆mysql。
3.Django
Django作为python得力的重量级web框架,一直备受青睐。
3.1安装django
3.2关联mysql
3.3Django项目
上述创建的应用,通过在models.py中利用Django的ORM映射数据库的表和字段,一般为了统一我们会使该应用与数据库同名。
打开项目下的配置文件settings.py
修改完成后,保存退出。
(在dg_mypr中的models.py中定义ORM映射模型的步骤略)
改好配置文件并创建模型后,我们可以使用
此后若需要应用新的ORM建模,可以在清库后,删除dg_mypr/migrations目录下的__pycache__和0001_initial.py,重复上述两步操作即可。
最后,我们可以在开着debug的情况下应用runserver跑一个端口测试一下:
(确保阿里云安全策略组已开放该端口)
当浏览器访问http://公网地址:端口 后,若载入了Django欢迎页,则进入下一步骤。
4.uWSGI
4.1安装uwsgi
4.2写项目配置文件
在项目的目录 /var/www/mysite/myproject 下创建一个ini配置文件
并创建一个目录uwsgi用来存放运行相关文件
在myproject.ini中写入:
4.3写nginx配置文件
在nginx配置文件nginx.conf中加入
写完后运行 nginx -t
检测一下是否有语法错误
然后运行nginx -s reload
重新载入配置文件
4.4运行
回到项目目录 运行 uwsgi --ini myproject.ini
即可
可运行cat uwsgi/uwsgi.log
查看一下是否正常启动了uwsgi
当看到如下内容 说明正常启动了
此时,运行ps aux | grep uwsgi
可查看到正在运行的uwsgi实例
4.5管理
倘若不撰写管理脚本 需要重启uwsgi时总是需要
但是如果你按照第二步创建了uwsgi目录及相关文件,你就可以优雅地管理uwsgi进程。
4.5.1安装uwsgitop
uwsgitop是一款界面类似top的工具,用以查看指定uwsgi的全部工作进程情况。
4.5.2管理相关命令
如果不便记忆,可将上述命令写入sh脚本文件 快捷执行。
可在浏览器访问项目地址,测试效果。
综上,笔者整理了自己部署环境的全过程,希望能够对读者有所帮助。后续如有其他内容,将继续补丁修正。欢迎评论指正!