GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengonfigurasi NGINX di Server CentOS 7

Mobil NGINX oleh Walker Cahall

Pengantar

Cara ini akan membantu Anda menginstal dan mengonfigurasi NGINX sehingga Anda dapat menjalankan situs web dengan lalu lintas tinggi sambil mempertahankan kinerja tingkat tinggi yang diharapkan pelanggan Anda. Kami juga akan menginstal perangkat lunak tambahan untuk mendapatkan hasil maksimal dari NGINX, jadi panduan ini juga akan menyertakan instalasi dan konfigurasi MySQL, PHP-APC, dan PHP-FPM.

Mengapa NGINX? Ada perdebatan panjang tentang apakah Anda harus menggunakan Apache atau NGINX, dan sementara kinerja keseluruhan dari dua platform server web kira-kira sama, model pemrosesan berbasis peristiwa NGINX bersinar dengan menjadi sederhana, ringan, dan lebih baik dalam menangani besar jumlah klik serentak untuk konten statis tanpa membebani perangkat keras server Anda secara berlebihan.

Apa yang Anda Butuhkan?

– Anda memerlukan server CentOS 7 yang dikonfigurasi dengan alamat IP statis. Jika Anda belum memiliki server, Anda dapat mengunjungi halaman Hosting VPS kami dan menjalankan server baru dalam waktu kurang dari 30 detik.

Persiapan Server

Untuk memulai, login ke server CentOS Anda melalui SSH. Server Atlantic.Net Cloud diatur sebagai instalasi minimal untuk menghindari paket yang tidak perlu diinstal dan tidak pernah digunakan. Karena itu, kita akan memulai dengan menginstal beberapa paket yang tidak ada secara default.

yum install wget
yum install nano

Setelah Anda masuk, pastikan server Anda benar-benar mutakhir.

pembaruan enak

Dengan server yang terbaru, kami dapat melanjutkan proses dan menginstal NGINX. Karena NGINX tidak termasuk dalam repositori CentOS default, kami akan menggunakan repo Paket Ekstra untuk Enterprise Linux (EPEL). Kami juga akan menggunakan paket dari repositori REMI lebih lanjut dalam prosesnya, jadi mari unduh dan instal juga.

Anda dapat menginstal EPEL versi terbaru menggunakan perintah berikut:

yum install epel-release -y

Sebelum kita melanjutkan, kita juga akan membuat user dan group baru yang akan digunakan oleh NGINX dan PHP-FPM. Jika Anda membiarkan pengguna dan grup menggunakan setelan default, semuanya akan tetap berfungsi untuk Anda, tetapi untuk membantu memberikan sedikit keamanan ekstra, kami akan membuat perubahan.

groupadd www-datauseradd -g www-data www-data

Sementara kita sedang mengerjakan persiapan server, mari kita lanjutkan dan menyiapkan direktori baru untuk server web kita. Biasanya orang menggunakan /var/www/html untuk situs mereka, tetapi saya selalu merasa lebih nyaman memiliki file situs di /home/domainname.tld/html , jadi itulah yang akan kita gunakan. Untuk panduannya, kami akan menggunakan example.tld sebagai domain kami — pastikan untuk memperbarui entri yang dicetak tebal agar cocok dengan domain yang Anda konfigurasikan.

mkdir -p /home/example.tld/htmlchown -R www-data:www-data /home/example.tld/chmod -R 0755 /home/example.tld/html

Sekarang setelah kita selesai menyiapkan server, kita dapat melanjutkan ke instalasi paket perangkat lunak kita.

Instal dan Konfigurasi MariaDB di CentOS 7

Pertama, instal paket server MariaDB dengan perintah berikut:

yum install mariadb-server -y

Setelah menginstal MariaDB, mulai layanan MariaDB dan aktifkan untuk memulai saat reboot sistem:

systemctl start mariadbsystemctl aktifkan mariadb

Selanjutnya, amankan instalasi MariaDB dengan perintah berikut:

mysql_secure_installation

Proses Instalasi Aman MySQL akan memandu Anda melalui perubahan keamanan awal yang harus diterapkan untuk instans MySQL baru Anda.

Catatan:Pilih kata sandi yang aman dan batasi akses root hanya untuk localhost.

mysql_secure_installation

Edit /etc/my.cf file agar sesuai dengan yang berikut, membatasi server hanya untuk mendengarkan koneksi lokal:

[mysqld]bind-address =127.0.0.1datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Menonaktifkan tautan simbolik disarankan untuk mencegah berbagai macam risiko keamanansymbolic-links=0 [mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mariadb/mariadb.pid

Kami akan memulai ulang semua layanan di akhir, jadi mari kita lanjutkan.

Instal dan Konfigurasi NGINX di CentOS 7

yum install nginx

Setelah terinstal, kita perlu memeriksa untuk melihat berapa banyak inti logis CPU yang tersedia di server Anda. Untuk melakukannya, jalankan perintah berikut:

grep -c 'nama model' /proc/cpuinfo

Catat hasilnya karena ini juga yang akan Anda lihat pada pengaturan worker_processes. Buka /etc/nginx/nginx.conf dan ganti konten saat ini dengan yang berikut:

user    www-data;worker_processes  2;pid       /var/run/nginx.pid;events {       worker_connections  1024;}http {        include       /etc/nginx/mime.types; default_type  aplikasi/octet-stream; server_names_hash_bucket_size 64; error_log  /var/log/nginx/error_log; log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '              '$status $body_bytes_sent "$http_referer" '              '"$http_user sendfile        aktif; keepalive_timeout  30; server_token nonaktif; gzip aktif; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; gzip_http_versi 1.1; gzip_vary aktif; gzip_proksi apa saja; gzip_comp_level 6; gzip_buffers 16 8k; gzip_types teks/teks biasa/aplikasi css/aplikasi json/teks x-javascript/aplikasi xml/aplikasi xml/xml+teks rss/aplikasi javascript/teks javascript/x-js; # situs yang diaktifkan        termasuk /etc/nginx/conf.d/*.conf;}

Selanjutnya, kita perlu mengatur file konfigurasi domain kita. Ini dilakukan dengan membuat file baru bernama /etc/nginx/conf.d/example.conf . Sekali lagi, pastikan untuk memperbarui entri yang dicetak tebal agar sesuai dengan domain yang Anda tambahkan.

server {        mendengarkan  80; nama_server     contoh.tld; client_max_body_size 5m; client_body_timeout 60; access_log /var/log/nginx/example.tld_access; error_log  /var/log/nginx/example.tld_error error; root /home/example.tld/html/; index  index.html index.php; ### Peta situs SEO ###        tulis ulang ^/sitemap_index\.xml$ /index.php?sitemap=1 last; tulis ulang ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last; ### direktori www ###        lokasi / {              try_files $uri $uri/ /index.php?$args; }        ### keamanan ###        error_page 403 =404; lokasi ~ /\. { access_log off; log_not_ditemukan mati; menyangkal semua; }        lokasi ~ ~$ { access_log off; log_not_ditemukan mati; menyangkal semua; }        lokasi ~* wp-admin/include { tolak semua; }        lokasi ~* wp-includes/theme-compat/ { tolak semua; }        lokasi ~* wp-includes/js/tinymce/langs/.*\.php { tolak semua; }        lokasi /wp-content/ { internal; }        lokasi /wp-includes/ { internal; }        lokasi ~* wp-config.php { tolak semua; }        ### nonaktifkan logging ###        location =/robots.txt { access_log off; log_not_ditemukan mati; }        location =/favicon.ico { access_log off; log_not_ditemukan mati; }        ### cache ###        lokasi ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; kedaluwarsa maks; }        lokasi ~* \.(woff|svg)$ { access_log off; log_not_ditemukan mati; berakhir 30 hari; }        ### php block ###        location ~ \.php?$ {              try_files $uri =404; termasuk fastcgi_params; fastcgi_pass unix:/var/run/php-www.socket; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors aktif; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_hide_header X-Diberdayakan-Oleh; }}

Karena kami mengubah pengguna yang menjalankan NGINX, kami perlu mengubah izin kepemilikan untuk file sementara NGINX.

chown -R www-data:www-data /var/lib/nginx/
chmod 700 /var/lib/nginx/

Sekali lagi, kami akan memulai kembali semua layanan di akhir. Selanjutnya, alih-alih menginstal versi lengkap PHP di server, kita akan beralih ke PHP-FPM – implementasi PHP FastCGI alternatif.

Instal dan Konfigurasi PHP-FPM di CentOS 7

Catatan:Setelah penginstalan, kami perlu memperbarui setelan “cgi.fix_pathinfo” untuk menonaktifkan potensi kerentanan yang memungkinkan pihak ketiga mengeksekusi kode PHP mereka sendiri di server baru Anda.

Pertama, instal repositori Remi dengan perintah berikut:

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Selanjutnya, instal PHP-FPM dengan ekstensi lain yang diperlukan menggunakan perintah berikut:

yum --enablerepo=remi-php74 install php-fpm php-mysql
nano /etc/php.ini

Ubah

;cgi.fix_pathinfo=1

untuk

cgi.fix_pathinfo=0

Buka /etc/php-fpm.d/www.conf dan ubah konfigurasi menjadi berikut:

[www]listen =/var/run/php-www.socketuser =www-datagroup =www-datalisten.owner =www-datalisten.group =www-datalisten.mode =0660listen =/var/run/php- www.socketrequest_slowlog_timeout =5sslowlog =/var/log/php-fpm/blogcms_loglisten.allowed_clients =127.0.0.1pm =dynamicpm.max_children =10pm.start_servers =3pm.min_spare_servers =2pm.max_spare_servers =4pm.max_listenquestslog =4pm. .status_path =/statusrequest_terminate_timeout =120srlimit_files =131072rlimit_core =unlimitedcatch_workers_output =yesphp_value[session.save_handler] =filesphp_value[session.save_path] =/var/lib/php/sessionphp_admin_value[error_log] =/flag/log [log_errors] =aktif

Simpan perubahan Anda.

Instal dan Konfigurasi PHP-APC di CentOS 7

Bagian terakhir dari teka-teki ini adalah menginstal akselerator PHP untuk lebih meningkatkan waktu pemuatan file statis.

yum --enablerepo=remi-php74 install php-pecl-apc

Setelah instalasi selesai, buka /etc/php.d/50-apc.ini dan ganti isinya dengan yang berikut ini:

ekstensi =apc.soapc.enabled=1apc.shm_segments=1apc.shm_size=128Mapc.num_files_hint=1024apc.user_entries_hint=4096apc.ttl=7200apc.use_request_time=1apc.user_ttl=3600_tapc. .mmap_file_mask=/tmp/apc.XXXXXXapc.file_update_protection=2apc.enable_cli=0apc.max_file_size=1Mapc.stat=1apc.stat_ctime=0apc.canonicalize=0apc.write_lock=1apc.report_autofilter=0pc. rfc1867_name=APC_UPLOAD_PROGRESSapc.rfc1867_freq=0apc.rfc1867_ttl=3600apc.include_once_override=0apc.lazy_classes=0apc.lazy_functions=0apc.coredump_unmap=0apc.

Sentuhan Akhir

Sekarang setelah semuanya selesai, kami dapat memverifikasi konfigurasi NGINX kami dengan menjalankan:

nginx -t

Jika konfigurasi kembali dengan “nginx:file konfigurasi /etc/nginx/nginx.conf test is success”, kita dapat memulai (atau me-restart) semua layanan dan memastikan bahwa semua layanan diatur untuk memulai pada startup sistem.

systemctl start mariadb; systemctl aktifkan mariadbsystemctl start nginx; systemctl aktifkan mariadbsystemctl start php-fpm; systemctl aktifkan php-fpm

Sebagai langkah terakhir kami, kami akan memverifikasi bahwa konfigurasi berfungsi dengan membuat halaman pengujian info.php, dan memindahkan salinan index.html default ke direktori home situs kami. Seperti sebelumnya, pastikan untuk memperbarui entri yang dicetak tebal dengan domain yang Anda siapkan.

cp -R /usr/share/nginx/html/* /home/example.tld/html/
nano /home/example.tld/html/info.php

Menguji Semuanya

Mengunjungi http://example.tld harus menampilkan file index.html default. Mengunjungi http://example.tld /info.php harus menampilkan informasi tentang PHP.

Dengan itu, Anda sekarang memiliki server yang menjalankan semua komponen yang diperlukan untuk menjalankan situs web Anda!

Harap periksa kembali di sini untuk pembaruan lebih lanjut, dan untuk mempertimbangkan server pribadi virtual terdepan di pasar dari Atlantic.Net.


Linux
  1. CentOS / RHEL :Cara mengkonfigurasi server DHCP

  2. CentOS / RHEL 5:Cara menginstal dan mengkonfigurasi server vsftpd

  3. Centos 7:Konfigurasi Server DNS

  1. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 8

  2. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 7

  3. Konfigurasikan server MariaDB di CentOS

  1. Cara Mengatur Blok Server Nginx di CentOS 7

  2. Cara Menginstal Nginx di CentOS 8

  3. Bagaimana Cara Mengkonfigurasi server SFTP di CentOS?