-
Notifications
You must be signed in to change notification settings - Fork 0
/
webhosting.yml
98 lines (82 loc) · 2.42 KB
/
webhosting.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
---
- name: Django & Nginx Deployment
hosts: all
become: yes
vars_files: "vars/Ubuntu.yml"
handlers:
- name: restart_nginx
service:
name: nginx
state: restarted
tasks:
- name: Install required packages for Deployment
package:
name: ['python3', 'python3-pip', 'build-essential', 'libpq-dev', 'python-setuptools', 'python-dev', 'nginx', 'virtualenv']
state: present
update_cache: yes
- name: Create an user with name webhost
user:
name: "{{ web_user }}"
groups: sudo
comment: web_hosting_user
create_home: yes
state: present
- name: Add Git Repository
git:
repo: '{{ github_repo }}'
dest: "/home/{{ web_user }}/{{ project_name}}"
update: no
force: yes
- name: Configure virtualenv and install python modules
pip:
name: ['gunicorn', 'django']
virtualenv: "/home/{{ web_user }}/"
virtualenv_command: virtualenv
virtualenv_python: python3.8
- name: Change home dir permission & group
file:
path: "/home/{{ web_user }}"
group: www-data
state: directory
mode: 0777
recurse: yes
- stat:
path: /etc/systemd/system/gunicorn.service
register: gunicorn_file
- name: Create gunicorn service
template:
src: gunicorn.service.j2
dest: /etc/systemd/system/gunicorn.service
mode: 0777
when: gunicorn_file.stat.exists == false
- name: Reload Daemon
systemd:
daemon_reload: yes
- name: start gunicorn service
service:
name: gunicorn
state: started
#nginx configuration
- name: Create Nginx server block
template:
src: nginx_project.j2
dest: "/etc/nginx/sites-available/{{ project_name }}"
owner: root
mode: 0777
- name: Remove nginx default page
file:
path: /etc/nginx/sites-enabled/default
state: absent
notify: restart_nginx
- name: Create a symbolic link of nginx server block
file:
src: "/etc/nginx/sites-available/{{ project_name }}"
dest: "/etc/nginx/sites-enabled/{{ project_name }}"
state: link
notify: restart_nginx
- name: check nginx configuration error
command: nginx -t
register: nginxconfigcheck
- name: show nginx any syntax errors
debug:
var: nginxconfigcheck