備忘録:Arch LinuxでLAMP&LEMPサーバを構築する。
2021年10月5日トピックス
Arch Linuxでサーバを作ったらどんな手順になるかやってみた。結果的にシンプルな設定インストールになっていることがわかった。Redhat系やUbuntu系だとパッケージインストールで設定ファイルの細かいところまで設置して尚且起動までしてくれるケースが多いので限りなく素の状態は新鮮。これはこれで手作り感が多くていいですね。
Apache Webサーバのインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sudo pacman -S apache $ sudo mkdir /etc/httpd $ sudo su - # cd /etc/httpd/conf # vi httpd.conf 省略 #編集でファイルに追記 ファイルの一番下側でOK。仮想サーバ定義のフォルダ追加 IncludeOptional conf.d/*.conf 省略 $ cd /etc/httpd/conf.d $ vi virt.conf <---この辺の仮想定義は省略します。 $ sudo systemctl enable httpd $ sudo systemctl start httpd |
php7.4&Fastcgi(FPM)のインストール
どうやら、これだけでmysqlのphpドライバーがインストールされていた。パッケージリストにないので焦ったがインストール後に検索してみたらpdo_mysql.soとmysqli.soが存在していた。extension=mysqli.so と extension=bz2.so extension=opcache.so を有効にしておきましょう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ $ pacman -S php7 php7-apcu php7-fpm php7-gd php7-intl phpmyadmin $ cd /etc/php7 $ vi php.ini <-- timezone , mbstring , memory_limit,upload_max_filesize,post_max_size の修正、extensionの追記(pacman -Ql php7でmoduleが何が入っているか確認する) $ cd php-fpm.d $ vi www.conf user = nginx or http (nginxならnginx,apacheならhttp) group = nginx or http(nginxならnginx,apacheならhttp) listen = /var/run/php-fpm7/php-fpm.sock <---デフォルトはこれ listen.owner = nginx or http(nginxならnginx,apacheならhttp) listen.group = nginx or http(nginxならnginx,apacheならhttp) #両方のWEBサーバ使うならhttpで統合すれば良い。つまりnginxもhttpのユーザで動作させる。その場合はここはhttpでOK $ sudo systemctl enable php-fpm7 $ sudo systemctl start php-fpm7 |
mariadbのインストール
1 2 3 4 5 6 |
$ sudo pacman -S mariadb $ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql $ sudo systemctl enable mariadb $ sudo systemctl start mariadb $ sudo mysql_secure_installation $ sudo mysql -u root |
NGINX Webサーバのインストール
インストールを行うと至ってシンプルなnginxの設定ファイルが設置されます。
1 2 3 4 5 |
$ sudo pacman -S nginx $ sudo mkdir /etc/nginx/conf.d $ vi nginx.conf <-- include /etc/nginx/conf.d/*.conf; 追記 $ sudo systemctl enable nginx $ sudo systemctl start nginx |
phpの設定やFastCGI(php-fpm)をnginxに設定
nginxのグローバル設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
user nginx; worker_processes 1; error_log /var/log/nginx-error.log notice; #pid /var/run/nginx.pid; events { worker_connections 100; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx-access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } |
nginxの仮想サーバ設定
/etc/nginx/conf.dへ移動してwp.confとして作成、php&WORDPRESS対応
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
server { listen 80; server_name localhost; root /srv/http/wpress; access_log /var/log/nginx-access.log; location / { index index.php index.html index.htm; autoindex on; autoindex_exact_size off; autoindex_localtime on; } # redirect server error pages to the static page /50x.html location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm7/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi.conf; } location ~ /\.ht { deny all; } } |
nginxのSSL設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
server { listen 443 ssl http2; server_name www.friendlist.info; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_prefer_server_ciphers on; ssl_ciphers ALL:!aNULL:!SSLv2:!EXP:!MD5:!RC4:!LOW:+HIGH:+MEDIUM; ssl_certificate /etc/nginx/cert/fullkey.pem; ssl_certificate_key /etc/nginx/cert/server.key; ssl_dhparam /etc/nginx/dhparam.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security max-age=15768000; location / { root /srv/vhosts/secure; index index.html index.htm; } } |
nginxのReverse Proxy設定
Reverse Proxyで簡単なロードバランシング設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
upstream backend { server 192.168.10.145:8080 weight=1; server 192.168.10.146:8080 weight=3; server 192.168.10.147:8080 weight=1; } server { listen 8000; server_name 202.xxx.xxx.xxx; <---外部からアクセスするグローバルIP location / { proxy_pass http://backend; } } |
phpmyadmin設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ cd /etc/webapps/phpmyadmin $ vi config.inc.php <---- 必要箇所を編集 $ cd /etc/nginx/conf.d $ vi phpadmin.conf server { listen 80; server_name phpadmin.net; root /usr/share/webapps/phpMyAdmin; index index.php; location / { index index.php; autoindex on; autoindex_exact_size off; autoindex_localtime on; } # redirect server error pages to the static page /50x.html location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm7/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi.conf; } } |