Last active
January 27, 2021 10:38
-
-
Save isc30/aa80d81df44de8a91dc0a82d55806381 to your computer and use it in GitHub Desktop.
Raspberry Pi Install PHP7 + Nginx + MySQL + PhpMyAdmin (last versions)
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
#!/bin/bash | |
# Thanks to https://gist.github.com/Lewiscowles1986/ce14296e3f5222082dbaa088ca1954f7 | |
if [ "$(whoami)" != "root" ]; then | |
echo "Run script as ROOT please. (sudo !!)" | |
exit | |
fi | |
echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi" > /etc/apt/sources.list.d/stretch.list | |
echo "APT::Default-Release \"jessie\";" > /etc/apt/apt.conf.d/99-default-release | |
apt-get update -y | |
apt-get upgrade -y | |
apt-get dist-upgrade -y | |
apt-get install -y rpi-update | |
apt-get install -t stretch -y php7.0 php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-curl php7.0-xml php7.0-gd php7.0-mysql | |
apt-get install -t stretch -y nginx | |
update-rc.d nginx defaults | |
update-rc.d php7.0-fpm defaults | |
sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.0/fpm/php.ini | |
sed -i 's/# server_names_hash_bucket_size/server_names_hash_bucket_size/' /etc/nginx/nginx.conf | |
cat > /etc/nginx/sites-enabled/default << "EOF" | |
# Default server | |
server { | |
listen 80 default_server; | |
listen [::]:80 default_server; | |
server_name _; | |
root /var/www/default/public; | |
index index.php index.html index.htm default.html; | |
location / { | |
try_files $uri $uri/ =404; | |
} | |
# pass the PHP scripts to FastCGI server | |
location ~ \.php$ { | |
include snippets/fastcgi-php.conf; | |
fastcgi_pass unix:/run/php/php7.0-fpm.sock; | |
} | |
# optimize static file serving | |
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { | |
access_log off; | |
log_not_found off; | |
expires 30d; | |
} | |
# deny access to .htaccess files, should an Apache document root conflict with nginx | |
location ~ /\.ht { | |
deny all; | |
} | |
} | |
# Zonaisc.com server configuration | |
server { | |
listen 80; | |
listen [::]:80; | |
server_name zonaisc.com www.zonaisc.com; | |
root /var/www/zonaisc.com/public; | |
index index.php index.html index.htm default.html; | |
location / { | |
try_files $uri $uri/ =404; | |
} | |
# pass the PHP scripts to FastCGI server | |
location ~ \.php$ { | |
include snippets/fastcgi-php.conf; | |
fastcgi_pass unix:/run/php/php7.0-fpm.sock; | |
} | |
# optimize static file serving | |
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { | |
access_log off; | |
log_not_found off; | |
expires 30d; | |
} | |
# deny access to .htaccess files, should an Apache document root conflict with nginx | |
location ~ /\.ht { | |
deny all; | |
} | |
} | |
EOF | |
mkdir -p /var/www/default/public | |
cat > /var/www/default/public/index.php << "EOF" | |
<?php | |
class Application | |
{ | |
public function __construct() | |
{ | |
phpinfo(); | |
} | |
} | |
$application = new Application(); | |
EOF | |
mkdir -p /var/www/zonaisc.com/public | |
cat > /var/www/zonaisc.com/public/index.php << "EOF" | |
<?php | |
class Application | |
{ | |
public function __construct() | |
{ | |
echo 'Hi ZonaIsc.com'; | |
} | |
} | |
$application = new Application(); | |
EOF | |
rm -rf /var/www/html | |
usermod -a -G www-data pi | |
chown -R pi:www-data /var/www | |
chgrp -R www-data /var/www | |
chmod -R g+rw /var/www | |
setfacl -d -R -m g::rw /var/www | |
apt-get -y autoremove | |
service nginx restart | |
service php7.0-fpm restart | |
# MySQL | |
apt-get -t stretch -y install mysql-server | |
read -s -p "Type the password you just entered (MySQL): " mysqlPass | |
mysql --user="root" --password="$mysqlPass" --database="mysql" --execute="GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$mysqlPass'; FLUSH PRIVILEGES;" | |
sed -i 's/^bind-address/#bind-address/' /etc/mysql/mysql.conf.d/mysqld.cnf | |
sed -i 's/^skip-networking/#skip-networking/' /etc/mysql/mysql.conf.d/mysqld.cnf | |
service mysql restart | |
# PhpMyAdmin | |
read -p "Do you want to install PhpMyAdmin? <y/N> " prompt | |
if [ "$prompt" = "y" ]; then | |
apt-get install -t stretch -y phpmyadmin | |
ln -s /usr/share/phpmyadmin /var/www/default/public | |
echo "http://192.168.XXX.XXX/phpmyadmin to enter PhpMyAdmin" | |
fi | |
apt-get -y autoremove |
I found an error when I execute the script on RPI3:
It may could be changed from as following 2 lines:
sed -i 's/^bind-address/#bind-address/' /etc/mysql/mysql.conf.d/mysqld.cnf
sed -i 's/^skip-networking/#skip-networking/' /etc/mysql/mysql.conf.d/mysqld.cnf
To:
sed -i 's/^bind-address/#bind-address/' /etc/mysql/mariadb.conf.d/50-server.cnf
sed -i 's/^skip-networking/#skip-networking/' /etc/mysql/mariadb.conf.d/50-server.cnf
And save as the new script.
thank you very much!
After an update from ¨raspberry jessie¨ mpa did not work properly anymore.A fresh image did all I needed and this script worked flawlessly!
great
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Solved for my Raspbian (Debian 9) Stretch
Written by install.bash, script line 10:
echo "APT::Default-Release "jessie";" > /etc/apt/apt.conf.d/99-default-release
After script execution:
folder opened: /etc/apt/apt.conf.d
and file of this folder: 99-default-release modified:
sudo nano /etc/apt/apt.conf.d/99-default-release
Text modified:
APT::Default-Release "jessie";
New:
APT::Default-Release "stretch";