Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gachiemchiep/8b47fb53402c6097655fdd15fea6251a to your computer and use it in GitHub Desktop.
Save gachiemchiep/8b47fb53402c6097655fdd15fea6251a to your computer and use it in GitHub Desktop.
Linux commands for setting up lamp on Ubuntu 16.04 and Mint 18
# More info:
# https://help.ubuntu.com/lts/serverguide/index.html
# http://do.co/2bwsv2X (Digital Ocean: How To Install LAMP stack on Ubuntu 16.04)
# fetch lists of updates
sudo apt-get update
######################
# ESSENTIAL UTILITIES
######################
sudo apt-get install curl
sudo apt-get install wget
#######################
# APACHE INSTALLATION
#######################
sudo apt install apache2
# Apache2 is configured by placing directives in plain text configuration files.
# These directives are separated between the following files and directories:
# 1. apache2.conf: the main Apache2 configuration file. Contains settings that are global to Apache2.
# 2. httpd.conf: historically the main Apache2 configuration file, named after the httpd daemon.
# Now the file does not exist. In older versions of Ubuntu the file might be present, but empty,
# as all configuration options have been moved to the below referenced directories.
# 3. conf-available: this directory contains available configuration files.
# All files that were previously in /etc/apache2/conf.d should be moved to /etc/apache2/conf-available.
# 4. conf-enabled: holds symlinks to the files in /etc/apache2/conf-available.
# When a configuration file is symlinked, it will be enabled the next time apache2 is restarted.
# 5. envvars: file where Apache2 environment variables are set.
# 6. mods-available: this directory contains configuration files to both load modules and configure them.
# Not all modules will have specific configuration files, however.
# 7. mods-enabled: holds symlinks to the files in /etc/apache2/mods-available.
# When a module configuration file is symlinked it will be enabled the next time apache2 is restarted.
# 8. ports.conf: houses the directives that determine which TCP ports Apache2 is listening on.
# 9. sites-available: this directory has configuration files for Apache2 Virtual Hosts.
# Virtual Hosts allow Apache2 to be configured for multiple sites that have separate
# configurations.
# 10. sites-enabled: like mods-enabled, sites-enabled contains symlinks to the
# /etc/apache2/sites-available directory. Similarly when a configuration file
# in sites-available is symlinked, the site configured by it will be active once
# Apache2 is restarted.
# 11. magic: instructions for determining MIME type based on the first few bytes of a file.
# In addition, other configuration files may be added using the Include directive, and
# wildcards can be used to include many configuration files. Any directive may be placed
# in any of these configuration files. Changes to the main configuration files are only
# recognised by Apache2 when it is started or restarted.
# The server also reads a file containing mime document types; the filename is set by the
# TypesConfig directive, typically via /etc/apache2/mods-available/mime.conf, which might
# also include additions and overrides, and is /etc/mime.types by default.
# MORE INFO FOR CONFIGURING APACHE CAN BE FOUND HERE:
# https://help.ubuntu.com/lts/serverguide/httpd.html
#####################
# MYSQL INSTALLATION
#####################
# Install mysql server on ubuntu 16.04 and Mint 18
sudo apt-get install mysql-server mysql-client
# You can edit the /etc/mysql/my.cnf file to configure the basic settings -- log file, port number, etc.
# Run mysql_secure_installation to secure your installation.
# Do this for all your production servers.
sudo mysql_secure_installation
# To test if mysql is running
sudo netstat -tap | grep mysql
# Should produce output like below:
# tcp 0 0 localhost:mysql *:* LISTEN 2556/mysqld
# OR
sudo systemctl status mysql.service
# OR
sudo systemctl status mysql
# If the server is not running correctly, you can type the following command to start it:
sudo systemctl restart mysql.service
# If you would like to change the MySQL root password, in a terminal enter:
sudo dpkg-reconfigure mysql-server-5.5
# OR
sudo dpkg-reconfigure mysql-server-5.6
# OR
sudo dpkg-reconfigure mysql-server-5.7
# Shut down MySQL:
sudo systemctl stop mysql.service
# OR
sudo systemctl stop mysql
# Start MySQL:
sudo systemctl start mysql.service
# OR
sudo systemctl start mysql
# Restart Mysql
sudo systemctl restart mysql.service
# OR
sudo systemctl restart mysql
# MySQL Tuner is a useful tool that will connect to a running MySQL instance
# and offer suggestions for how it can be best configured for your workload.
# The longer the server has been running for, the better the advice mysqltuner
# can provide. In a production environment, consider waiting for at least 24 hours
# before running the tool. You can get install mysqltuner from the Ubuntu repositories:
sudo apt install mysqltuner
# Then once its been installed, run it:
mysqltuner
# and wait for its final report.
# The top section provides general information about the database server,
# and the bottom section provides tuning suggestions to alter in your my.cnf.
# Most of these can be altered live on the server without restarting, look through
# the official MySQL documentation for the relevant variables to change in production.
####################
# PHP INSTALLATION
####################
# Installing PHP 5.5, 5.6 or 7.X on Ubuntu 16.04 LTS or Mint 18
# First, Remove all the stock php packages by
# listing all installed php packages with dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
# and then remove unneeded packages with sudo aptitude purge.
# Command below will remove all the currently installed stock php packages:
sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
# Add the ppa containing php5.5, 5.6 & 7.X packages.
# NOTE that ubuntu 16.04 and Mint 18 ship with only php 7.X
sudo add-apt-repository ppa:ondrej/php
# update the repositories
sudo apt-get update
# Make sure you run your software update manager tool
# if the php5.5 and 5.6 packages are not still available
##########################################################
# INSTALLING PHP AND LINKING IT TO THE APACHE WEBSERVER
##########################################################
# you can enter one of the following commands at a terminal prompt:
##########################################################################################
##########################################################################################
# The comand below installs the default PHP version for ubuntu 16.04 (Which is PHP 7)
# and links that version of PHP to the apache 2 webserver
# default php version for the ubuntu version; in this case PHP 7 for ubuntu 16.04
sudo apt install php libapache2-mod-php
# The command below installs PHP7.1 for ubuntu 16.04
# and links that version of PHP to the apache 2 webserver
# PHP 7.1 for ubuntu 16.04
sudo apt install php7.1 libapache2-mod-php7.1
# The comand below installs PHP7.0 for ubuntu 16.04
# and links that version of PHP to the apache 2 webserver
# PHP 7.0 for ubuntu 16.04
sudo apt install php7.0 libapache2-mod-php7.0
# The comand below installs PHP5.6 for ubuntu 16.04
# and links that version of PHP to the apache 2 webserver
# PHP 5.6 for ubuntu 16.04
sudo apt install php5.6 libapache2-mod-php5.6
# The comand below installs PHP5.5 for ubuntu 16.04
# and links that version of PHP to the apache 2 webserver
# PHP 5.5 for ubuntu 16.04
sudo apt install php5.5 libapache2-mod-php5.5
# You MUST run the following command at a terminal prompt to
# restart your web server to pickup the php changes:
sudo systemctl restart apache2.service
# OR
sudo systemctl restart apache2
# NOTE: To switch between PHP versions for your apache webserver
# remember to run the command below before running any of the
# above commands to install the desired version of PHP
sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
########################################################################################
########################################################################################
##########################################################
# INSTALLING PHP WITHOUT LINKING TO THE APACHE WEBSERVER
##########################################################
# First, Remove all the stock php packages by
# listing all installed php packages with dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
# and then remove unneeded packages with sudo aptitude purge.
# Command below will remove all the currently installed stock php packages:
sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
# install php5.5
sudo apt-get install php5.5
# install php5.6
sudo apt-get install php5.6
# install php7.0
sudo apt-get install php7.0
# install php7.1
sudo apt-get install php7.1
################################################################
# AFTER INSTALLING PHP WITH/WITHOUT libapache2-mod-php or
# libapache2-mod-php#.#, YOU CAN INSTALL OTHER OPTIONAL
# PHP MODULES. JUST REMEMBER TO INSTALL THE PACKAGE FOR
# THE SPECIFIC VERSION OF PHP THAT YOU INSTALLED EARLIER.
# E.G. php5.6-mysql for PHP 5.6, php5.5-mysql for PHP 5.5, etc.
################################################################
# Some PHP modules like xdebug don't have a version specific package
# but rather their packages are named without a php version number
# (e.g. php-xdebug).
# Below are some popular php modules that wil most likely be useful for most scenarios
sudo apt-get install php5.6-intl php5.6-mysql php5.6-sqlite3 php5.6-xsl php5.6-bcmath \
php5.6-curl php5.6-gd php5.6-json php5.6-readline php5.6-zip \
php5.6-bz2 php5.6-gmp php5.6-ldap php5.6-opcache php5.6-mbstring \
php5.6-pgsql php5.6-xml php5.6-cli php5.6-mcrypt php5.6-soap php5.6-xmlrpc php-xdebug
# Configure PHP to Use Xdebug
# add the following line to php.ini excluding the first # character:
#zend_extension="/wherever/you/put/it/xdebug.so"
# For example: /usr/lib/php/20151012/xdebug.so
#
# Note that php.ini is usually located in
# /etc/php/[5.5|5.6|7.0|7.1]/cli/php.ini for the cli version of php
# /etc/php/[5.5|5.6|7.0|7.1]/apache2/php.ini for the libapache2-mod-php version of php
#
# Be sure to only add the entry to ONLY ONE of the php.ini files; either the one for the
# cli version of php or the one for the libapache2-mod-php version of php.
#
# Finally Restart your webserver.
# Write a PHP page that calls 'phpinfo()' Load it in a browser and look for the info
# on the Xdebug module. If you see it next to the Zend logo, you have been successful!
# You can also use 'php -m' if you have a command line version of PHP, it lists all
# loaded modules. Xdebug should appear twice there (once under 'PHP Modules' and
# once under 'Zend Modules').
# You can run the following command at a terminal prompt
# to restart your web server to pickup the php changes:
sudo systemctl restart apache2.service
# OR
sudo systemctl restart apache2
# to get a list of all installable php packages run the command below:
apt-cache search ^php- | cat
# To find out what a php module does,
# you can run the command below with the desired php module's name
# For example, to find out what the php-cli module does, we could type this:
apt-cache show php-cli
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment