部署网站到aws服务器

项目部署:网站部署到aws服务器(python)

  • 任意一个云服务器(阿里云,AWS,百度云,均可)
  • 一个已经完成的WEB项目

tips: 每个服务器的设置安全组不一样,可自行参考自己服务器如何设置

打开常用端口(高手可自行指定端口)

  • 80/80 Nginx的默认端口
  • 3306/3306 mysql的默认端口
  • 6379/6379 redis的默认端口
  • 23/23
  • 443/433
  • 22/22
  • 80/80
  • 3389/3389
`FLUSH PRIVILEGES;`
`FLUSH PRIVILEGES;` 
`FLUSH PRIVILEGES;`
<span class="token namespace">[mysql]</span> default<span class="token operator">-</span>character<span class="token operator">-</span><span class="token function">set</span>=utf8
<span class="token namespace">[mysql]</span> default<span class="token operator">-</span>character<span class="token operator">-</span><span class="token function">set</span>=utf8 
[mysql] default-character-set=utf8

tips:
使用虚拟环境,当项目多时,更方便维护和管理,这里以pipenv为例

  • pip3 install pipenv 安装虚拟环境
  • mkdir 你的文件夹 创建自己的文件夹

下载地址及安装方法,可以自行百度。都很简单

<span class="token function">rm</span> <span class="token operator">-</span>rf migrations<span class="token operator">/</span> python manage<span class="token punctuation">.</span>py db init python manage<span class="token punctuation">.</span>py db migrate python manage<span class="token punctuation">.</span>py db upgrade
 <span class="token function">rm</span> <span class="token operator">-</span>rf migrations<span class="token operator">/</span> python manage<span class="token punctuation">.</span>py db init python manage<span class="token punctuation">.</span>py db migrate python manage<span class="token punctuation">.</span>py db upgrade 
rm -rf migrations/ python manage.py db init python manage.py db migrate python manage.py db upgrade

介绍:
uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成, 他也可以充当静态文件服务器,但不是他的
强项。uwsgi是使用python编写的,因此通过pip3 install uwsgi就可以了。(uwsgi必须安装在系统级别的Python环
境中,不要安装到虚拟环境中)。然后创建一个叫做uwsgi.ini的配置文件:

<span class="token namespace">[uwsgi]</span> <span class="token function">chdir</span> = <span class="token operator">/</span>root<span class="token operator">/</span>flask<span class="token operator">-</span>project<span class="token operator">/</span>bbs<span class="token operator">/</span> wsgi<span class="token operator">-</span>file = <span class="token operator">/</span>root<span class="token operator">/</span>flask<span class="token operator">-</span>project<span class="token operator">/</span>bbs<span class="token operator">/</span>bbs<span class="token punctuation">.</span>py callable = app home = <span class="token operator">/</span>root<span class="token operator">/</span><span class="token punctuation">.</span>local<span class="token operator">/</span>share<span class="token operator">/</span>virtualenvs<span class="token operator">/</span>flask<span class="token operator">-</span>project-<span class="token operator">-</span>bwy33Ao master = true processes = 10 http = :5000 chmod<span class="token operator">-</span>socket = 666 vacuum = true
<span class="token namespace">[uwsgi]</span>   <span class="token function">chdir</span> = <span class="token operator">/</span>root<span class="token operator">/</span>flask<span class="token operator">-</span>project<span class="token operator">/</span>bbs<span class="token operator">/</span>  wsgi<span class="token operator">-</span>file = <span class="token operator">/</span>root<span class="token operator">/</span>flask<span class="token operator">-</span>project<span class="token operator">/</span>bbs<span class="token operator">/</span>bbs<span class="token punctuation">.</span>py  callable = app  home = <span class="token operator">/</span>root<span class="token operator">/</span><span class="token punctuation">.</span>local<span class="token operator">/</span>share<span class="token operator">/</span>virtualenvs<span class="token operator">/</span>flask<span class="token operator">-</span>project-<span class="token operator">-</span>bwy33Ao   master = true  processes = 10 http = :5000  chmod<span class="token operator">-</span>socket = 666  vacuum = true 
[uwsgi] chdir = /root/flask-project/bbs/ wsgi-file = /root/flask-project/bbs/bbs.py callable = app home = /root/.local/share/virtualenvs/flask-project--bwy33Ao master = true processes = 10 http = :5000 chmod-socket = 666 vacuum = true

退出虚拟环境 : deactivate或者exit

依赖环境安装
yum install -y gcc* pcre-devel openssl-devel

运行
uwsgi --ini uwsgi.ini

关闭uwsgi
pkill -f uwsgi -9

** 后台运行uwsgi **
uwsgi -d --ini uwsgi.ini

检查是否可行
在浏览器中访问http://ip地址:5000,如果能够访问
到页面(可能没有静态文件)说明uwsgi配置没有问题。

nginx介绍:
虽然uwsgi可以正常的部署我们的项目了。但我们还是依然要采用nginx来作为web服务器。使用nginx来作为web
服务器有以下好处:

1.安装:
yum install nginx

2.nginx的简单操作命名

  • 启动:systemctl start nginx
  • 关闭:systemctl stop nginx
  • 重启:systemctl restart nginx

3.添加配置文件
/etc/nginx/conf.d目录下,新建一个文件,叫做bbs.conf,然后将以下代码粘贴进去:

upstream bbs<span class="token punctuation">{<!-- --></span> server <span class="token number">127.0</span><span class="token number">.0</span><span class="token number">.1</span><span class="token punctuation">:</span><span class="token number">5000</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> listen <span class="token number">80</span><span class="token punctuation">;</span> server_name <span class="token number">47.</span>xxx<span class="token punctuation">.</span>xxx<span class="token punctuation">.</span><span class="token number">30</span><span class="token punctuation">;</span> charset utf<span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">;</span> client_max_body_size 75M<span class="token punctuation">;</span> location <span class="token operator">/</span>static <span class="token punctuation">{<!-- --></span> alias <span class="token operator">/</span>root<span class="token operator">/</span>flask<span class="token operator">-</span>project<span class="token operator">/</span>bbs<span class="token operator">/</span>static<span class="token punctuation">;</span> <span class="token punctuation">}</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> uwsgi_pass <span class="token number">127.0</span><span class="token number">.0</span><span class="token number">.1</span><span class="token punctuation">:</span><span class="token number">5000</span><span class="token punctuation">;</span> include <span class="token operator">/</span>etc<span class="token operator">/</span>nginx<span class="token operator">/</span>uwsgi_params<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
upstream bbs<span class="token punctuation">{<!-- --></span> server <span class="token number">127.0</span><span class="token number">.0</span><span class="token number">.1</span><span class="token punctuation">:</span><span class="token number">5000</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>   listen <span class="token number">80</span><span class="token punctuation">;</span>  server_name <span class="token number">47.</span>xxx<span class="token punctuation">.</span>xxx<span class="token punctuation">.</span><span class="token number">30</span><span class="token punctuation">;</span> charset utf<span class="token operator">-</span><span class="token number">8</span><span class="token punctuation">;</span>  client_max_body_size 75M<span class="token punctuation">;</span>  location <span class="token operator">/</span>static <span class="token punctuation">{<!-- --></span>  alias <span class="token operator">/</span>root<span class="token operator">/</span>flask<span class="token operator">-</span>project<span class="token operator">/</span>bbs<span class="token operator">/</span>static<span class="token punctuation">;</span> <span class="token punctuation">}</span>  location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> uwsgi_pass <span class="token number">127.0</span><span class="token number">.0</span><span class="token number">.1</span><span class="token punctuation">:</span><span class="token number">5000</span><span class="token punctuation">;</span>  include <span class="token operator">/</span>etc<span class="token operator">/</span>nginx<span class="token operator">/</span>uwsgi_params<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> 
upstream bbs{ server 127.0.0.1:5000; } listen 80; server_name 47.xxx.xxx.30; charset utf-8; client_max_body_size 75M; location /static { alias /root/flask-project/bbs/static; } location / { uwsgi_pass 127.0.0.1:5000; include /etc/nginx/uwsgi_params; } }

写完配置文件后,为了测试配置文件是否设置成功,运行命令:service nginx configtest,如果不报错,说明成
功。 每次修改完了配置文件,都要记得运行systemctl start nginx。

在最后一行输入:
export PATH="$PATH:/需要添加的路径"

在执行
source /etc/profile

server <span class="token punctuation">{<!-- --></span> listen 443 ssl<span class="token punctuation">;</span> server_name cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com<span class="token punctuation">;</span> ssl_certificate 1_cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com_bundle<span class="token punctuation">.</span>crt<span class="token punctuation">;</span> ssl_certificate_key 2_cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com<span class="token punctuation">.</span>key<span class="token punctuation">;</span> ssl_session_timeout 5m<span class="token punctuation">;</span> ssl_protocols TLSv1 TLSv1<span class="token punctuation">.</span>1 TLSv1<span class="token punctuation">.</span>2<span class="token punctuation">;</span> ssl_ciphers ECDHE<span class="token operator">-</span>RSA<span class="token operator">-</span>AES128<span class="token operator">-</span>GCM<span class="token operator">-</span>SHA256:HIGH:<span class="token operator">!</span>aNULL:<span class="token operator">!</span>MD5:<span class="token operator">!</span>RC4:<span class="token operator">!</span>DHE<span class="token punctuation">;</span> ssl_prefer_server_ciphers on<span class="token punctuation">;</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> root <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>www<span class="token operator">/</span>cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com<span class="token punctuation">;</span> index index<span class="token punctuation">.</span>html index<span class="token punctuation">.</span>htm<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
server <span class="token punctuation">{<!-- --></span>  listen 443 ssl<span class="token punctuation">;</span>  server_name cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com<span class="token punctuation">;</span>  ssl_certificate 1_cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com_bundle<span class="token punctuation">.</span>crt<span class="token punctuation">;</span>  ssl_certificate_key 2_cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com<span class="token punctuation">.</span>key<span class="token punctuation">;</span> ssl_session_timeout 5m<span class="token punctuation">;</span>  ssl_protocols TLSv1 TLSv1<span class="token punctuation">.</span>1 TLSv1<span class="token punctuation">.</span>2<span class="token punctuation">;</span>  ssl_ciphers ECDHE<span class="token operator">-</span>RSA<span class="token operator">-</span>AES128<span class="token operator">-</span>GCM<span class="token operator">-</span>SHA256:HIGH:<span class="token operator">!</span>aNULL:<span class="token operator">!</span>MD5:<span class="token operator">!</span>RC4:<span class="token operator">!</span>DHE<span class="token punctuation">;</span> ssl_prefer_server_ciphers on<span class="token punctuation">;</span> location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span>  root <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>www<span class="token operator">/</span>cloud<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>com<span class="token punctuation">;</span> index index<span class="token punctuation">.</span>html index<span class="token punctuation">.</span>htm<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> 
server { listen 443 ssl; server_name cloud.tencent.com; ssl_certificate 1_cloud.tencent.com_bundle.crt; ssl_certificate_key 2_cloud.tencent.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root /var/www/cloud.tencent.com; index index.html index.htm; } }

按如下配置nginx [在server下]

location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> proxy_pass http:<span class="token operator">/</span><span class="token operator">/</span>127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:5000<span class="token punctuation">;</span> proxy_set_header Host <span class="token variable">$host</span><span class="token punctuation">;</span> proxy_set_header X<span class="token operator">-</span>Forwarded<span class="token operator">-</span><span class="token keyword">For</span> <span class="token variable">$remote_addr</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span> proxy_pass http:<span class="token operator">/</span><span class="token operator">/</span>127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:5000<span class="token punctuation">;</span> proxy_set_header Host <span class="token variable">$host</span><span class="token punctuation">;</span> proxy_set_header X<span class="token operator">-</span>Forwarded<span class="token operator">-</span><span class="token keyword">For</span> <span class="token variable">$remote_addr</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> 
location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }

python工程项目,用后台启动 输入log日志文件
nohup python -u app.py > ../nohup.log 2>&1 &

关闭后台python项目:
ps -ef | grep 文件名 查询进程号
kill -9 进程号 关闭该进程号的项目

确认本地安装了openssl
crt转pem:
openssl x509 -in 要转换的文件.crt -out 被转换成的命名.pem

加粗样式
openssl rsa -in 要转换的文件.key -out 被转成的文件命名.pem

原文链接:https://blog.csdn.net/weixin_45550881/article/details/106636147

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享