Wiki » 履歴 » リビジョン 2
リビジョン 1 (廣瀬 僚一, 2024/01/30 19:05) → リビジョン 2/3 (廣瀬 僚一, 2024/09/12 11:04)
# サーバー情報 - [[サーバー情報]] ホスティング会社:xserver vps - IP:162.43.32.188 - OS:Rocky Linux 9.2 - ログイン:root / clear!3831# 初期設定の段階で2GBのスワップ領域あり(xserver vpsの仕様?) # 構築手順 ## アップデート ```bash yum update -y ``` ## ユーザー作成 ```bash useradd webadmin passwd webadmin cld3831# ``` ## 全体設定 SELinuxの無効化 ```bash vi /etc/selinux/config ``` ```conf:config #SELINUX=enforcing ``` ## NGINX設定 ### NGINXインストール ```bash dnf install nginx -y systemctl start nginx && systemctl enable nginx ``` ### confファイル 公式を参考に記載 ```conf:80.conf server { listen 80; listen [::]:80; server_name sys.globalgenetics.jp; root /var/www/hmtl/sys.globalgenetics.jp/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } ``` ## PHP設定 インストールできるphpを確認 php8.1などをインストールする ```bash dnf module list php #利用できるphpを検索 dnf module install php -y dnf install php-bcmath php-pdo php-mysql php-gd -y ``` ### confファイル ```bash:www.conf user=nginx group=nginx pm = static pm.max_children = 3 pm.max_requests = 1000 ``` ## php.ini設定 ```bash:php.ini max_execution_time = 300 memory_limit = 256M upload_max_filesize = 20M post_max_size = 128M ``` ## データベース設定 ### mysqlインストール ```bash dnf install mysql -y dnf install mysql-server -y ``` データベース名:globalgenetics | User | Pass | | -------- | ---------- | | root | Clear.3831 | | db_admin | Cld3831# | ```bash mysql -u root -p{DB_ROOT_PASS} -h ${DB_HOST} ``` ```sql CREATE DATABASE [DB_NAME] DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER '[DB_USER]'@'[DB_HOST]' identified by '[DB_PASS]'; GRANT ALL ON [DB_NAME].*TO '[DB_USER]'@'[DB_HOST]'; FLUSH PRIVILEGES; ``` ## composerインストール ```bash cd ~ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" mv composer.phar /usr/local/bin/composer composer -V ``` ## Node.jsインストール バージョン指定してインストール(16.x) ```bash yum install https://rpm.nodesource.com/pub_16.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y yum install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1 node -v npm -v ``` ## サイトデータ配置 ディレクトリを作成 ```bash mkdir -p /var/www/html/sys.globalgenetics.jp/ cd /var/www/html/sys.globalgenetics.jp/ chmod -R 777 ./storage ``` envファイルの書き換え - APP_URL - DB_HOST - DB_USERNAME - DB_PASSWORD ```bash chown -R nginx:nginx /var/www/html/sys.globalgenetics.jp/storage/app/public/uploads/ ``` HTTPでアクセスして、アクセスできることを確認 ## SSL設定 ### epelリポジトリインストール ```bash yum install epel-release.noarch -y ``` ### certbotインストールとSSL化 ```bash dnf install certbot -y certbot certonly --webroot -w /var/www/html/sys.globalgenetics.jp/public -d sys.globalgenetics.jp --email wp@clear-design.jp --debug ``` ### nginx confファイルの作成と書き換え ```bash vi /etc/nginx/conf.d/80.conf ``` ```conf:80.conf server { listen 80; listen [::]:80; server_name sys.globalgenetics.jp; return 301 https://$host$request_uri; } ``` ```bash vi /etc/nginx/conf.d/sys_global.conf ``` ```conf:sys_global.conf server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name sys.globalgenetics.jp; root /var/www/html/sys.globalgenetics.jp/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; ssl_certificate /etc/letsencrypt/live/sys.globalgenetics.jp/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sys.globalgenetics.jp/privkey.pem; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } # location ~ /\.(?!well-known).* { # deny all; # } } ``` ## メール設定 XSERVERにリレーし、メールを配信する ### メールアドレスの作成 XSERVER(cld01)で、グローバルジェネティクスドメインでメールアドレスを作成する。 noreply@globalgenetics.jp パスワードも設定する ### postfixインストール ```bash dnf install postfix -y systemctl start postfix.service && systemctl enable postfix.service ``` その他、必要なものをインストール ```bash dnf install cyrus-sasl-plain cyrus-sasl-lib cyrus-sasl-md5 ``` ### postfix設定(補足) ```bash vi /etc/postfix/main.cf ``` 以下を書き換え ```bash:main.cf myhostname = globalgenetics.jp mydomain = globalgenetics.jp ``` 以下を末尾に追記 ```bash:main.cf milter_default_action = accept non_smtpd_milters = $smtpd_milters smtpd_milters = inet:127.0.0.1:8891 relayhost = [sv1116.xserver.jp]:587 smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_use_tls = yes smtp_tls_note_starttls_offer = yes ``` ```bash vi /etc/postfix/sasl_passwd #メール認証情報の記載 ``` ```bash:sasl_passwd [sv1116.xserver.jp]:587 作成したメールアドレス:パスワード ``` ```bash chmod 600 /etc/postfix/sasl_passwd postmap /etc/postfix/sasl_passwd #認証情報のハッシュ化・登録 systemctl restart postfix.service ``` 下記コマンドでテストメールの送信 迷惑メールに入らずに受信できていれば完了 ```bash sendmail -t << EOL From: 送信元メールアドレス To: 送信先メールアドレス Subject: メールタイトル 本文 EOL ``` ## rootログイン禁止 ```bash PermitRootLogin no ``` --- ## zabbix-agentインストール ```bash dnf install zabbix-agent.x86_64 -y ``` ## PHPキャッシュ ```bash dnf install php-opcache php-pecl-apcu -y ``` 負荷テスト ```bash ab -n 100 -c 100 https://sys.globalgenetics.jp/ ``` 結果 before ``` Total transferred: 162500 bytes HTML transferred: 38600 bytes Requests per second: 27.75 [#/sec] (mean) Time per request: 3603.657 [ms] (mean) Time per request: 36.037 [ms] (mean, across all concurrent requests) Transfer rate: 44.04 [Kbytes/sec] received ``` after ``` Total transferred: 162500 bytes HTML transferred: 38600 bytes Requests per second: 128.77 [#/sec] (mean) Time per request: 776.571 [ms] (mean) Time per request: 7.766 [ms] (mean, across all concurrent requests) Transfer rate: 204.35 [Kbytes/sec] received ```