GCPのVMインスタンスにLAMPサーバを構築します。
インスタンスのメモリは1.6G、SWAPメモリとして4Gを割り当てています。
初めにデータベースサーバとしてMariaDBをインストール、その後Apache、PHPとPHPのApache関連モジュールをインストールします。
パッケージリストのアップデートとシステムアップデート
$ sudo apt update
$ sudo apt upgrade
MariaDBのインストール
$ sudo apt-get -y install mariadb-server mariadb-client
$ sudo mysql_secure_installation
Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
ApacheとApache機能拡張モジュール、PHP,PHP機能拡張モジュールのインストール
$ sudo apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap phpmyadmin php7.2-cli php7.2-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap
Apache機能拡張モジュールの有効化
$ sudo a2enmod suexec rewrite ssl actions include cgi
Apache httproxyモジュールの設定追加
$ sudo pico /etc/apache2/conf-available/httproxy.conf
<IfModule mod_headers.c>
RequestHeader unset Proxy early
</IfModule>
$ sudo a2enconf httproxy
$ sudo service apache2 restart
PHP機能拡張モジュールのインストール
$ sudo apt-get -y install php7.2-opcache php-apcu
$ sudo service apache2 restart
$ sudo apt-get -y install php7.2-fpm
$ sudo a2enmod actions proxy_fcgi alias
$ sudo service apache2 restart
MariaDB管理者ユーザの登録( 例)ユーザ名:admin、パスワード:howtoforge )
$ sudo mysql -u root -p
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
Letsencryptの導入(Let’s Encryptの導入記事参照)
$ sudo apt-get -y install python3-certbot-apache
$ sudo pico /etc/apache2/sites-enabled/000-default.conf
$ sudo certbot --apache -d ficusonline.myvnc.com
$ sudo certbot renew --dry-run
MariaDB Innodbの設定
$ cd /etc/mysql/mariadb.conf.d
$ sudo pico 50-server.cnf
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_large_prefix = 1
innodb_file_per_table = 1
$ sudo service mariadb restart
PHPの設定(メモリー容量など任意)
$ sudo pico /etc/php/7.2/apache2/php.ini
$ sudo service apache2 restart
php7.2におけるphpMyadminエラー対応
$ sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak
$ sudo mkdir /usr/share/phpmyadmin/
$ cd /usr/share/phpmyadmin/
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.tar.gz
$ sudo tar xzf phpMyAdmin-4.8.5-all-languages.tar.gz
$ sudo mv phpMyAdmin-4.8.5-all-languages/* /usr/share/phpmyadmin
以下ファイルの内容変更
$ sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');
define('CONFIG_DIR', '/etc/phpmyadmin/');
クリーンアップ
$ sudo rm /usr/share/phpmyadmin/phpMyAdmin-4.8.5-all-languages.tar.gz
$ sudo rm -rf /usr/share/phpmyadmin/phpMyAdmin-4.8.5-all-languages
$ sudo rm -rf /usr/share/phpmyadmin.bak
開発環境インストール
$ sudo apt-get install build-essential