Last active
March 24, 2017 13:22
-
-
Save jrnickell/1b920e59c2e7a5082725 to your computer and use it in GitHub Desktop.
Nginx server config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
function create_index | |
{ | |
cat <<- __EOF__ | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>$PROJECT</title> | |
</head> | |
<body> | |
<h2>Welcome to $HOSTNAME</h2> | |
</body> | |
</html> | |
__EOF__ | |
} | |
function create_server | |
{ | |
cat <<- __EOF__ | |
server { | |
listen 80; | |
server_name *.$HOSTNAME; | |
return 301 \$scheme://$HOSTNAME\$request_uri; | |
} | |
server { | |
listen 80; | |
server_name $HOSTNAME; | |
root $HOME/Projects/$PROJECT/$WEBROOT; | |
index index.html index.php; | |
charset utf-8; | |
access_log /var/log/nginx/$PROJECT.log; | |
error_log /var/log/nginx/$PROJECT-error.log error; | |
include h5bp/basic.conf; | |
location = /favicon.ico { access_log off; log_not_found off; } | |
location = /robots.txt { access_log off; log_not_found off; } | |
location / { | |
try_files \$uri \$uri/ /index.php\$is_args\$args; | |
} | |
location ~ \\.php\$ { | |
fastcgi_split_path_info ^(.+\\.php)(/.+)\$; | |
fastcgi_pass 127.0.0.1:9000; | |
fastcgi_index index.php; | |
include fastcgi.conf; | |
} | |
} | |
server { | |
listen 443; | |
server_name *.$HOSTNAME; | |
ssl on; | |
ssl_certificate /srv/ssl/certs/$PROJECT.crt; | |
ssl_certificate_key /srv/ssl/private/$PROJECT.key; | |
return 301 \$scheme://$HOSTNAME\$request_uri; | |
} | |
server { | |
listen 443; | |
server_name $HOSTNAME; | |
ssl on; | |
ssl_certificate /srv/ssl/certs/$PROJECT.crt; | |
ssl_certificate_key /srv/ssl/private/$PROJECT.key; | |
root $HOME/Projects/$PROJECT/$WEBROOT; | |
index index.html index.php; | |
charset utf-8; | |
access_log /var/log/nginx/$PROJECT.log; | |
error_log /var/log/nginx/$PROJECT-error.log error; | |
include h5bp/basic.conf; | |
location = /favicon.ico { access_log off; log_not_found off; } | |
location = /robots.txt { access_log off; log_not_found off; } | |
location / { | |
try_files \$uri \$uri/ /index.php\$is_args\$args; | |
} | |
location ~ \\.php\$ { | |
fastcgi_split_path_info ^(.+\\.php)(/.+)\$; | |
fastcgi_pass 127.0.0.1:9000; | |
fastcgi_index index.php; | |
include fastcgi.conf; | |
} | |
} | |
__EOF__ | |
} | |
clear | |
echo "Project Setup" | |
echo -n "==> Enter new project name (eg: myproject): " | |
read PROJECT | |
echo -n "==> Enter new host name (eg: myproject.dev): " | |
read HOSTNAME | |
echo -n "==> Enter webroot folder name (eg: public): " | |
read WEBROOT | |
clear | |
echo "Setting up files for $PROJECT" | |
sudo mkdir -p /srv/ssl/private | |
sudo chmod 0700 /srv/ssl/private | |
sudo mkdir -p /srv/ssl/certs | |
sudo chmod 0755 /srv/ssl/certs | |
sudo openssl req -x509 -nodes -days 1825 -newkey rsa:2048 -keyout /srv/ssl/private/$PROJECT.key -out /srv/ssl/certs/$PROJECT.crt -subj "/C=US/ST=/L=/O=/OU=/CN=$HOSTNAME/emailAddress=/" | |
mkdir -vp $HOME/Projects/$PROJECT/$WEBROOT | |
create_index > $HOME/Projects/$PROJECT/$WEBROOT/index.php | |
echo "created $HOME/Projects/$PROJECT/$WEBROOT/index.php" | |
create_server > $HOME/$PROJECT | |
sudo mv $HOME/$PROJECT /etc/nginx/sites-available/$PROJECT | |
echo "created /etc/apache2/sites-available/$PROJECT" | |
sudo ln -s /etc/nginx/sites-available/$PROJECT /etc/nginx/sites-enabled/$PROJECT | |
sudo echo "127.0.0.1 $HOSTNAME" | sudo tee -a /etc/hosts | |
sudo service nginx restart | |
echo "$PROJECT is ready! Open a browser to $HOSTNAME to test the new project" | |
exit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
clear | |
echo "Remove Project" | |
echo -n "==> Enter the project name to remove (eg: myproject): " | |
read PROJECT | |
echo -n "==> Enter the host name to remove (eg: myproject.dev): " | |
read HOSTNAME | |
clear | |
echo "Removing files for $PROJECT" | |
sudo rm /srv/ssl/certs/$PROJECT.crt | |
sudo rm /srv/ssl/private/$PROJECT.key | |
sudo rm -r $HOME/Projects/$PROJECT | |
echo "removed $HOME/Projects/$PROJECT" | |
sudo rm /etc/nginx/sites-enabled/$PROJECT | |
sudo rm /etc/nginx/sites-available/$PROJECT | |
echo "removed /etc/nginx/sites-available/$PROJECT" | |
sudo sed -i "/$HOSTNAME/ d" /etc/hosts | |
sudo service nginx restart | |
echo "removed $PROJECT" | |
exit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment