创建一个LAMP环境(Debian 9 + PHP 7.1 + Apache 2.4 + MariaDB 10.1)

有一天,GCE实例突然停止工作了,并且无法恢复,考虑到重新创建实例比排查原因更加快捷,所以我们选择了重新创建实例。而且,Jessie的支持也已经终止了。

由于我打算在另一篇文章中仔细阐述原因,所以这次我将只写关于在GCE上搭建WordPress环境的步骤。
这可以被视为之前博客中内容的最新版本。

由于本文将个人言论等内容放在了脚注中,所以基本上可以不必阅读脚注。

连接到GCE实例的SSH

由于作业机器是Windows,首先将其配置为可以使用PuTTY进行操作。

    PuTTYで公開鍵認証方式でのSSH接続を行う手順まとめ

更改端口号

    • 簡単に管理できるufwを使う

ufwを使って簡単にファイアウォールを設定する
UbuntuでSSHとSSHに関するファイアウォールの設定をする

まず他のポートを開けて、接続できる事を確認してから22番を閉じる

セッション閉じずに複数セッションで確認するとより安全

– ファイアウォールだけでなくSSHの設定も変更する

80番、443番も開ける

GCEの場合はWebの管理画面からもファイアウォール ルールの変更が必要なので注意

RDPなど使わない物は閉じてOK

sudo apt install ufw
sudo ufw allow 22/tcp <- 後で消す
sudo ufw allow XXX/tcp <- 変更したいポート番号
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo vi /etc/ssh/sshd_config <- ポート番号を書き換える
sudo service sshd restart

交换领域的形成

调优可以稍后进行,但是(在f1-micro情况下)创建swap需要在编译PHP之前完成,所以最好先进行创建。
如果是f1-micro,大约需要2GB的空间就可以了。

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo mkswap /swapfile
sudo swapon /swapfile
sudo vi /etc/fstab
/swapfile none swap sw 0 0

提前准备好是个不错的选择

sudo apt install git
sudo apt install unzip
sudo apt install xsel

其他根据你的喜好来选择。3 4

安装MariaDB

    Google Compute Engine で MySQL をセットアップする方法

不要忘记运行sudo mysql_secure_installation命令。基本上,您需要全部回答yes。
root的初始密码为空。

将已备份的SQL文件加载进来

从MariaDB开始,似乎必须使用sudo才能登录。

sudo mysql -u root -p
create database wordpress;
exit
sudo mysql -u root -p wordpress < filename.sql

创建WordPress用户

create user username@localhost identified by 'password';
grant all on wordpress.* to username@localhost;
select Host, User, Password from mysql.user; # 確認

安装Apache

    基本的な Apache ウェブサーバーの実行
sudo apt update && sudo apt install apache2 -y
sudo apt install apache2-dev # PHP動かすのに必要(と思う)

激活所需的模块。

在WordPress中,必须使用mod_rewrite。

sudo a2enmod rewrite
sudo a2enmod expires
sudo a2enmod headers

SSL的配置

sudo a2enmod ssl

请参阅Google Cloud Platform上的独特域名相关总结以获取更详细信息。

如果使用SSL,需要在配置文件中指定证书,所以请注意。
可以使用sudo apachectl configtest对Apache配置文件进行语法检查。

完成后,请使用SSL服务器测试进行检查。

如果在使用Chrome查看网站时被强制重定向到HTTPS而感到困扰,可以删除HSTS设置。

    Chromeでhttpからhttpsへ強制リダイレクトされる場合の対処法

安装PHP

如果不使用MPM事件。

只需要一个选项,以下是用中文原生的方式改写:
安装这个包是最好的选择。
https://packages.debian.org/sid/php7.1

在源列表中,添加离服务器位置较近的镜像。

deb http://ftp.us.debian.org/debian sid main
sudo apt install php7.1
sudo apt install php7.1-mysql php7.1-xml php7.1-curl # 必要なものは適宜

如果使用MPM事件的话

需要自己编译线程安全的PHP。

    PHP7.1を関連ライブラリと共にインストール(ソースからコンパイル)for Apache2.4+CentOS7.4

如果你的内存较少或需要加快速度,MPM Event是必需的吗?

如果您可以检查以前的环境,您可以使用 php -i | grep configure 或 php -m 进行查询。

请安装必要的库文件。

sudo apt install libbz2-dev
sudo apt install libxml2-dev
sudo apt install libc-client-dev
sudo apt install libcurl4-openssl-dev
sudo apt install libjpeg-dev
sudo apt install libpng-dev
sudo apt install libfreetype6-dev
sudo apt install libxpm-dev
sudo apt install libgd-dev #GD
sudo apt install libkrb5-dev # Kerberos
sudo apt install libmcrypt-dev
sudo apt install libgmp-dev
sudo apt install libpspell-dev
sudo apt install libreadline-dev

编译和安装

wget --trust-server-names http://jp2.php.net/get/php-7.1.16.tar.gz/from/this/mirror
tar xvzf php-7.1.16.tar.gz
cd php-7.1.16

./configure --disable-dba --disable-rpath --enable-calendar --enable-cgi --enable-exif --enable-ftp --enable-gd-native-ttf --enable-gd-jis-conv --enable-huge-code-pages --enable-maintainer-zts --enable-debug --enable-mbstring --enable-mbregex --enable-fpm --enable-bcmath --enable-opcache --enable-pcntl --enable-inline-optimization --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-wddx --enable-zip --with-apxs2=/usr/bin/apxs2 --with-bz2 --with-curl=/usr/local --with-gmp --with-mhash --with-pcre-regex --with-fpm-user=www-data --with-fpm-group=www-data --with-gd=/usr/include --with-freetype-dir=/usr/local/src/phpmodule/freetype-2.7 --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local --with-iconv-dir=/usr/local --with-libxml-dir=/usr/local --with-mcrypt=/usr/local --with-tsrm-pthreads --with-openssl --with-pspell --with-readline --with-xpm-dir=/usr --with-gettext --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-kerberos --with-zlib --with-zlib-dir=/usr --without-pear

sudo make
sudo make install

在中文中,apxs2的位置可以通过whereis apxs2来查找。其他库也可以类似地进行查找。

如果出现类似于 [Makefile:297: sapi/cli/php] Error 1 的错误,请先运行 sudo make clean 再重新执行。

最后在/usr/local/lib目录下创建php.ini文件。

sudo cp php.ini-production /usr/local/lib/php.ini

将PHP配置到Apache上。

如果保持这样,配置文件将不完整,PHP将无法在服务器上运行。
复制(或重命名)可以作为软件包安装的PHP7.1配置文件.

sudo a2dismod php7
sudo a2enmod php7

请将其加载。

<FilesMatch ".+\.ph(ar|p|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    Require all denied
</FilesMatch>
<FilesMatch "^\.ph(ar|p|ps|tml)$">
    Require all denied
</FilesMatch>
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

mbstring的配置

如果你不自己组建的话,就安装它。

sudo apt install php7.1-mbstring

无论哪种情况,都需要在php.ini中设置mbstring。

    日本語環境の設定 – mbstring

调音

MySQL的调优

鉴于目前使用较多的是MyISAM,建议增加缓冲区大小,根据需要还可能需要考虑缓存等。

set global key_buffer_size = 256 * 1024 * 1024;
set global query_cache_limit = 16 * 1024 * 1024;

聽說在MySQL 8中不能使用查詢快取。

调整PHP的内存限制

memory_limit = 256M
realpath_cache_size = 8192k
realpath_cache_ttl = 300
define('WP_MEMORY_LIMIT', '128M');
define('WP_MAX_MEMORY_LIMIT', '256M');

PHP-FPM和FastCGI

※根据我的环境,启用FPM

您的服务器上的 PHP 看来无法使用 WordPress 所需的 MySQL 扩展。

由于WordPress出现了这个错误,所以我暂时只使用FastCGI(CGI/FastCGI)来运行。


    FastCGI PHP の設定方法 と mod_php とのパフォーマンスの比較(Apache httpd)

安装mod_fcgid。

sudo apt install libapache2-mod-fcgid

创建脚本。

sudo vi /usr/local/bin/php-wrapper
#!/bin/sh
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=0
exec /usr/local/bin/php-cgi

权限更改。

sudo chown www-data /usr/local/bin/php-wrapper
sudo chmod u+x /usr/local/bin/php-wrapper

禁用模块版。

sudo a2dismod php7

编辑Apache的配置文件。

Options に ExecCGI を追加

AddHandler を指定

FcgidWrapper を指定

FcgidMaxRequestsPerProcess を指定

请参考以下链接以获取更详细信息。

安装并启用PHP-FPM。

sudo apt install php7.1-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.1-fpm

若以 phpinfo() 函数查看到的 Server API 为FPM/FastCGI,则表示正常。

MPM 活动

我有很多煩惱,但是我自己寫了一篇文章(完全忘記了…)。

    GCEにWordPress乗っけたらメモリが足りなかった件(解決済み)
<IfModule mpm_event_module>
        StartServers             1
        ServerLimit              8
        ThreadLimit              4
        ThreadsPerChild          4
        MinSpareThreads          4
        MaxSpareThreads          16
        MaxRequestWorkers        32
        MaxConnectionsPerChild   0
</IfModule>

OPcache 原生的中文解释为”操作代码缓存”。

    OPcache導入してみた!(速さ検証もあるよ!)

如果不加载opcache.so,则无法启用。
为什么不从一开始就将它写入文件呢?

zend_extension=opcache.so

我喜欢使用opcache-gui这个工具来进行GUI检查。

内存缓存

设置中。

    PHPでmemcachedを使うときのモジュールパフォーマンス比較
sudo apt install memcached
sudo service memcached start
sudo apt install php-memcached
ession.save_handler = memcache

WordPress的设置

    • WPのフォルダの所有権をApacheに変えておく

wp-config.phpなどはアクセス権もチェックする

Googleなどのログイン認証はやり直しになる

自動バックアップ等の設定は要見直し

由于无法登陆实例,所以这个实例似乎会变成黑匣子。而且这个博客是另一个CMS,所以还没有恢复…。

尽管我更换了启动磁盘,但不知何故Linux用户(想使用不同于Google帐号名称的用户名)和身份验证信息仍然存在。如果在同一项目中,即使在其他实例中也可以共享吗?但是我在快照中没有找到其他用户,这真是个谜。

在关于git方面,在GCP的存储库中无法进行推送,可能需要重新构建。尽管没有使用自签名证书之类的东西…

在推进其他工作的同时,我推测这可能只是暂时的问题,因为后来可以进行推送。

广告
将在 10 秒后关闭
bannerAds