learning python sloppy, but it works just change the versions for fedora haven't tried red hat or centos
David Siembab
siembabdavid at gmail.com
Sat Mar 4 21:01:32 UTC 2023
the code is as follows and is very sloppy:
#!/usr/bin/env python3
import subprocess as sp
import os
import pwd
os.chdir(os.path.expanduser('~'))
pcre2_version="pcre2-10.40"
zlib_version="zlib-1.2.13"
openssl_version="openssl-1.1.1p"
nginx_version="nginx-1.22.1"
deps = [
'curl', 'wget',
'tree','perl','perl-devel','perl-ExtUtils-Embed','libxslt','libxslt-devel',
'libxml2','libxml2-devel','gd','gd-devel','GeoIP','GeoIP-devel'
]
deps_group = ['Development Tools']
def set_download_url(array=[]):
if not array or not isinstance(array, list):
return
return '/'.join(array) + '.tar.gz'
pcre2_download_url=set_download_url([
'github.com/PCRE2Project/pcre2/releases/download/', pcre2_version,
pcre2_version
])
zlib_download_url=set_download_url([
'http://zlib.net/', zlib_version
])
openssl_download_url=set_download_url([
'http://www.openssl.org/source/', openssl_version
])
nginx_download_url= set_download_url([
'https://nginx.org/download/', nginx_version
])
def download_build_install(url):
tar_file = url.split('/')[-1]
print(f'Downloading {url} and untaring {tar_file}')
sp.run(f'wget -N {url}', shell=True)
sp.run(f'tar xzvf {tar_file}', shell=True)
def delete_tar_gz(version):
tarfile=version + '.tar.gz'
print(f'deleting {tarfile}')
os.remove(os.path.join(os.path.expanduser('~'), tarfile))
print(f'deleted {tarfile}')
print('ok, first thin first lets get all the dnf dependencies to compile
nginx')
print('are you ready for timewasting dnf forever repo loads? [y/n]')
answer = input()
if not answer or answer.lower().startswith('n'):
print('ok, have a good day')
if answer.lower().startswith('y'):
new = ['sudo', 'dnf' ]
groupinstall = new + ['groupinstall', '-y'] + deps_group
depinstall = new + ['install', '-y'] + deps
listed = [groupinstall, depinstall]
for a in listed:
sp.run(a)
print(f'Nice, now lets download the sources for:\n\t{openssl_version},
{zlib_version},{pcre2_version}')
print('are you ready?[y/n]')
answer1 = input()
if not answer1 or answer1.lower().startswith('n'):
print('ok, have a good day')
if answer.lower().startswith('y'):
for b in [openssl_download_url, zlib_download_url, pcre2_download_url]:
download_build_install(b)
for c in [openssl_version, zlib_version, pcre2_version]:
delete_tar_gz(c)
download_build_install(nginx_download_url)
print(f'setting the man page:')
if not os.path.exists('/usr/share/man/man8/nginx.8'):
sp.run(['sudo', 'cp',
os.path.join(os.path.expanduser('~'),f'{nginx_version}/nginx.8'),
'/usr/share/man/man8'])
sp.run(['sudo', 'gzip', '/usr/share/man/man8/nginx.8'])
sp.run('ls /usr/share/man/man8/ | grep nginx.8.gz', shell=True)
print(f'going into {nginx_version} directory')
os.chdir(nginx_version)
sp.run( ['./configure', '--prefix=/etc/nginx',
'--sbin-path=/usr/sbin/nginx',
'--modules-path=/usr/lib64/nginx/modules',
'--conf-path=/etc/nginx/nginx.conf',
'--error-log-path=/var/log/nginx/error.log',
'--pid-path=/var/run/nginx.pid',
'--lock-path=/var/run/nginx.lock', '--user=nginx',
'--group=nginx', '--build=Fedora',
'--builddir=nginx-1.15.8',
'--with-select_module', '--with-poll_module',
'--with-threads', '--with-file-aio',
'--with-http_ssl_module', '--with-http_v2_module',
'--with-http_realip_module',
'--with-http_addition_module',
'--with-http_xslt_module=dynamic',
'--with-http_image_filter_module=dynamic',
'--with-http_geoip_module=dynamic',
'--with-http_sub_module',
'--with-http_dav_module', '--with-http_flv_module',
'--with-http_mp4_module',
'--with-http_gunzip_module',
'--with-http_gzip_static_module',
'--with-http_auth_request_module',
'--with-http_random_index_module',
'--with-http_secure_link_module',
'--with-http_degradation_module',
'--with-http_slice_module',
'--with-http_stub_status_module',
'--with-http_perl_module=dynamic',
'--with-perl_modules_path=/usr/lib64/perl5',
'--with-perl=/usr/bin/perl',
'--http-log-path=/var/log/nginx/access.log',
'--http-client-body-temp-path=/var/cache/nginx/client_temp',
'--http-proxy-temp-path=/var/cache/nginx/proxy_temp',
'--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp',
'--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp',
'--http-scgi-temp-path=/var/cache/nginx/scgi_temp',
'--with-mail=dynamic', '--with-mail_ssl_module',
'--with-stream=dynamic',
'--with-stream_ssl_module', '--with-stream_realip_module',
'--with-stream_geoip_module=dynamic',
'--with-stream_ssl_preread_module',
'--with-compat', f'--with-pcre=../{pcre2_version}',
'--with-pcre-jit',
f'--with-zlib=../{zlib_version}',
f'--with-openssl=../{openssl_version}',
'--with-openssl-opt=no-nextprotoneg', '--with-debug']
)
sp.run('make')
sp.run(['sudo', 'make', 'install'])
if os.path.islink('/etc/nginx/modules'):
sp.run('sudo rm /etc/nginx/modules', shell=True)
sp.run('sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules', shell=True)
try:
pwd.getpwnam('nginx')
except KeyError:
sp.run('sudo useradd --system --home /var/cache/nginx --shell
/sbin/nologin\
--comment "nginx user" --user-group nginx', shell=True)
for x in ['/var/cache/nginx/client_temp','/var/cache/nginx/fastcgi_temp',
'/var/cache/nginx/proxy_temp','/var/cache/nginx/scgi_temp','/var/cache/nginx/uwsgi_temp']:
if not os.path.exists(x):
sp.run(['sudo','mkdir', '-p', x])
sp.run('sudo chmod 700 /var/cache/nginx/*', shell=True)
sp.run('sudo chown nginx:root /var/cache/nginx/*', shell=True)
print('check for errors')
sp.run(['sudo', 'nginx', '-t'])
thank you for your time, that is the attached file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20230304/30ac057a/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx_build.py
Type: text/x-python
Size: 5993 bytes
Desc: not available
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20230304/30ac057a/attachment-0001.py>
More information about the nginx
mailing list