GNU/Linux >> Belajar Linux >  >> Cent OS

Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL Pada CentOS 6.4

Nginx (diucapkan "engine x") adalah server HTTP gratis, open-source, berkinerja tinggi. Nginx dikenal dengan stabilitasnya, rangkaian fitur yang kaya, konfigurasi sederhana, dan konsumsi sumber daya yang rendah. Tutorial ini menunjukkan bagaimana Anda dapat menginstal Nginx di server CentOS 6.4 dengan dukungan PHP5 (melalui PHP-FPM) dan dukungan MySQL.

Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!

1 Catatan Awal

Dalam tutorial ini saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

2 Mengaktifkan Repositori Tambahan

php-fpm tidak tersedia dari repositori CentOS resmi, tetapi dari repositori Remi RPM yang bergantung pada repositori EPEL; kita dapat mengaktifkan kedua repositori sebagai berikut:

rpm --import https://fedoraproject.org/static/0608B895.txt 
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6 -8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install yum-priorities

Edit /etc/yum.repos.d/epel.repo...

vi /etc/yum.repos.d/epel.repo

... dan tambahkan baris priority=10 ke bagian [epel]:

[epel]name=Paket Ekstra untuk Enterprise Linux 6 - $basearch#baseurl=http://download.fedoraproject.org/pub/epel/ 6/$basearchmirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearchfailovermethod=priorityenabled=1priority=10gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG -KEY-EPEL-6[...]

Kemudian lakukan hal yang sama untuk bagian [remi] di /etc/yum.repos.d/remi.repo, ditambah ubah menjadi 1:

vi /etc/yum.repos.d/remi.repo
[remi]name=Les RPM de remi tuangkan Enterprise Linux $releasever - $basearch#baseurl=http://rpms.famillecollet.com/enterprise /$releasever/remi/$basearch/mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirrorenabled=1priority=10gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM -GPG-KEY-remifailovermethod=priority[remi-test]name=Les RPM de remi en test tuangkan Enterprise Linux $releasever - $basearch#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$ basearch/mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirrorenabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

3 Menginstal MySQL 5

Pertama kita install MySQL 5 seperti ini:

yum install mysql mysql-server

Kemudian kita membuat link startup sistem untuk MySQL (sehingga MySQL mulai secara otomatis setiap kali sistem boot) dan memulai server MySQL:

chkconfig --levels 235 mysqld aktif
/etc/init.d/mysqld start

Sekarang periksa apakah jaringan diaktifkan. Jalankan

netstat -ketuk | grep mysql

Seharusnya menunjukkan sesuatu seperti ini:

[[email protected] ~]# netstat -tap | grep mysql
tcp       0      0 *:mysql                  *:*                    DENGARKAN     1799 //[mysql>~dilindungi]

Jika tidak, edit /etc/my.cnf dan beri komentar pada opsi lewati jaringan:

vi /etc/my.cnf
[...]#skip-networking[...]

dan restart server MySQL Anda:

/etc/init.d/mysqld restart

Jalankan

mysql_secure_installation

untuk menetapkan kata sandi untuk root pengguna (jika tidak, siapa pun dapat mengakses database MySQL Anda!):

[[email protected] ~]# mysql_secure_installation




CATATAN: MENJALANKAN SEMUA BAGIAN SKRIP INI DIREKOMENDASIKAN UNTUK SEMUA MySQL
     PENGGUNAAN SERVER DI PRODUKSI ! HARAP BACA SETIAP LANGKAH DENGAN SEKSAMA!


Untuk masuk ke MySQL guna mengamankannya, kami memerlukan kata sandi
saat ini untuk pengguna root. Jika Anda baru menginstal MySQL, dan
belum menyetel sandi root, sandi akan kosong,
jadi Anda cukup tekan enter di sini.

Enter sandi saat ini untuk root (masukkan untuk none): <-- ENTER
Oke, sandi berhasil digunakan, lanjutkan...

Menyetel sandi root memastikan bahwa tidak ada yang dapat masuk ke MySQL
root pengguna tanpa otorisasi yang benar.

Tetapkan sandi root? [Y/n] <-- ENTER
Sandi baru: <-- yourrootsqlpassword
Masukkan kembali sandi baru: <-- yourrootsqlpassword
Sandi berhasil diperbarui!
Memuat ulang tabel hak istimewa. .
 ... Berhasil!


Secara default, penginstalan MySQL memiliki pengguna anonim yang memungkinkan siapa saja
masuk ke MySQL tanpa harus memiliki akun pengguna dibuat untuk
mereka. Ini dimaksudkan hanya untuk pengujian, dan untuk membuat pemasangan
menjadi sedikit lebih lancar. Anda harus menghapusnya sebelum berpindah ke 
lingkungan produksi.

Hapus pengguna anonim? [Y/n] <-- ENTER
 ... Berhasil!

Biasanya, root hanya diizinkan untuk terhubung dari 'localhost'. Ini
memastikan bahwa seseorang tidak dapat menebak kata sandi root dari jaringan.

Larang login root dari jarak jauh? [Y/n] <-- ENTER
 ... Berhasil!

Secara default, MySQL dilengkapi dengan database bernama 'test' yang dapat
akses siapa saja. Ini juga dimaksudkan hanya untuk pengujian, dan harus dihapus
sebelum dipindahkan ke lingkungan produksi.

Hapus database pengujian dan akses ke sana? [Y/n] <-- MASUKKAN
 - Menghapus basis data pengujian...
 ... Berhasil!
 - Menghapus hak istimewa pada basis data pengujian...
 ... Berhasil !

Memuat ulang tabel hak istimewa akan memastikan bahwa semua perubahan yang dibuat sejauh ini
akan segera berlaku.

Muat ulang tabel hak istimewa sekarang? [Y/n] <-- ENTER
 ... Berhasil!

Membersihkan...



Selesai! Jika Anda telah menyelesaikan semua langkah di atas, penginstalan MySQL
Anda seharusnya sekarang aman.

Terima kasih telah menggunakan MySQL!


[[ email dilindungi] ~]#

4 Menginstal Nginx

Nginx tersedia sebagai paket untuk CentOS 6.4 (dari EPEL) yang dapat kita instal sebagai berikut:

yum install nginx

Kemudian kami membuat tautan startup sistem untuk nginx dan memulainya:

chkconfig --level 235 nginx aktif
/etc/init.d/nginx mulai

Ketik alamat IP atau nama host server web Anda ke dalam browser (mis. http://192.168.0.100), dan Anda akan melihat halaman selamat datang nginx:

5 Menginstal PHP5

Kita dapat membuat PHP5 bekerja di nginx melalui PHP-FPM (PHP-FPM (FastCGI Process Manager) adalah implementasi PHP FastCGI alternatif dengan beberapa fitur tambahan yang berguna untuk situs dari berbagai ukuran, terutama situs yang lebih sibuk). Kita dapat menginstal php-fpm bersama dengan php-cli dan beberapa modul PHP5 seperti php-mysql yang Anda perlukan jika Anda ingin menggunakan MySQL dari skrip PHP Anda sebagai berikut:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

APC adalah cacher opcode PHP gratis dan terbuka untuk menyimpan dan mengoptimalkan kode perantara PHP. Ini mirip dengan cacher opcode PHP lainnya, seperti eAccelerator dan Xcache. Sangat disarankan untuk menginstal salah satu dari ini untuk mempercepat halaman PHP Anda.

APC dapat diinstal sebagai berikut:

yum install php-pecl-apc

Kemudian buka /etc/php.ini dan atur cgi.fix_pathinfo=0:

vi /etc/php.ini
[...]; cgi.fix_pathinfo memberikan dukungan *real* PATH_INFO/PATH_TRANSLATED untuk CGI. PHP; perilaku sebelumnya adalah menyetel PATH_TRANSLATED ke SCRIPT_FILENAME, dan bukan grok; apa PATH_INFO itu. Untuk informasi lebih lanjut tentang PATH_INFO, lihat spesifikasi cgi. Pengaturan; ini ke 1 akan menyebabkan PHP CGI memperbaiki jalurnya agar sesuai dengan spesifikasi. Sebuah pengaturan; dari nol menyebabkan PHP berperilaku seperti sebelumnya. Standarnya adalah 1. Anda harus memperbaiki skrip Anda; untuk menggunakan SCRIPT_FILENAME daripada PATH_TRANSLATED.; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfocgi.fix_pathinfo=0[...]

(Silakan baca http://wiki.nginx.org/Pitfalls untuk mengetahui mengapa Anda harus melakukan ini.)

Selain itu, untuk menghindari kesalahan seperti

[08-Aug-2011 18:07:08] PHP Peringatan:phpinfo():Tidak aman untuk mengandalkan pengaturan zona waktu sistem. Anda *diwajibkan* untuk menggunakan pengaturan date.timezone atau fungsi date_default_timezone_set(). Jika Anda menggunakan salah satu metode tersebut dan Anda masih mendapatkan peringatan ini, kemungkinan besar Anda salah mengeja pengidentifikasi zona waktu. Kami memilih 'Europe/Berlin' untuk 'CEST/2.0/DST' sebagai gantinya di /usr/share/nginx/html/info.php on line 2

... di /var/log/php-fpm/www-error.log ketika Anda memanggil skrip PHP di browser Anda, Anda harus mengatur date.timezone di /etc/php.ini:

[...][Tanggal]; Mendefinisikan zona waktu default yang digunakan oleh fungsi tanggal; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezonedate.timezone ="Europe/Berlin"[...]

Anda dapat mengetahui zona waktu yang tepat untuk sistem Anda dengan menjalankan:

cat /etc/sysconfig/clock
[[email protected] nginx]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[[email protected] nginx]#

Selanjutnya buat tautan startup sistem untuk php-fpm dan mulai:

chkconfig --levels 235 php-fpm aktif
/etc/init.d/php-fpm start

PHP-FPM adalah proses daemon (dengan skrip init /etc/init.d/php-fpm) yang menjalankan server FastCGI pada port 9000.

6 Konfigurasi nginx

Konfigurasi nginx ada di /etc/nginx/nginx.conf yang kita buka sekarang:

vi /etc/nginx/nginx.conf

Konfigurasinya mudah dipahami (Anda dapat mempelajarinya lebih lanjut di sini:http://wiki.codemongers.com/NginxFullExample dan di sini:http://wiki.codemongers.com/NginxFullExample2)

Pertama (ini opsional) Anda dapat menambah jumlah proses pekerja dan menyetel keepalive_timeout ke nilai yang wajar:

[...]worker_processes 4;[...] keepalive_timeout 2;[...]

Host virtual didefinisikan dalam wadah {} server di direktori /etc/nginx/conf.d. Mari kita ubah vhost default (di /etc/nginx/conf.d/default.conf) sebagai berikut:

vi /etc/nginx/conf.d/default.conf
[...]server { mendengarkan 80; nama server _; #charset koi8-r; #access_log logs/host.access.log utama; lokasi / { root /usr/share/nginx/html; indeks index.php index.html index.htm; } error_page 404 /404.html; lokasi =/404.html { root /usr/share/nginx/html; } # redirect halaman error server ke halaman statis /50x.html # error_page 500 502 503 504 /50x.html; lokasi =/50x.html { root /usr/share/nginx/html; } # proxy skrip PHP untuk mendengarkan Apache di 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # meneruskan skrip PHP ke server FastCGI yang mendengarkan di 127.0.0.1:9000 # lokasi ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; termasuk fastcgi_params; } # menolak akses ke file .htaccess, jika root dokumen Apache # setuju dengan salah satu # lokasi nginx ~ /\.ht { tolak semua; }}

nama server _; menjadikannya vhost catchall default (tentu saja, Anda juga dapat menentukan nama host di sini seperti www.example.com).

Di lokasi / bagian, saya telah menambahkan index.php ke baris indeks. root /usr/share/nginx/html; berarti root dokumen adalah direktori /usr/share/nginx/html.

Bagian penting untuk PHP adalah lokasi ~ \.php$ {} bait. Batalkan komentar untuk mengaktifkannya. Ubah baris root ke root dokumen situs web (mis. root /usr/share/nginx/html;). Harap perhatikan bahwa saya telah menambahkan baris try_files $uri =404; untuk mencegah eksploitasi zero-day (lihat http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP dan http://forum.nginx.org/read.php?2,88845,page=3). Harap pastikan bahwa Anda mengubah baris fastcgi_param menjadi fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; karena jika tidak, interpreter PHP tidak akan menemukan skrip PHP yang Anda panggil di browser Anda ($document_root diterjemahkan menjadi /usr/share/nginx/html karena itulah yang telah kami tetapkan sebagai root dokumen kami).

PHP-FPM mendengarkan pada port 9000 pada 127.0.0.1 secara default, oleh karena itu kami memberi tahu nginx untuk terhubung ke 127.0.0.1:9000 dengan baris fastcgi_pass 127.0.0.1:9000;. Hal ini juga memungkinkan untuk membuat PHP-FPM menggunakan soket Unix - saya akan menjelaskan ini di bab 7.

Sekarang simpan file dan muat ulang nginx:

/etc/init.d/nginx memuat ulang

Sekarang buat file PHP berikut di root dokumen /usr/share/nginx/html...

vi /usr/share/nginx/html/info.php

Sekarang kita memanggil file itu di browser (mis. http://192.168.0.100/info.php):

Seperti yang Anda lihat, PHP5 bekerja, dan bekerja melalui FPM/FastCGI, seperti yang ditunjukkan pada baris Server API. Jika Anda menggulir lebih jauh ke bawah, Anda akan melihat semua modul yang sudah diaktifkan di PHP5, termasuk modul MySQL:

7 Membuat PHP-FPM Menggunakan Socket Unix

Secara default PHP-FPM mendengarkan pada port 9000 pada 127.0.0.1. Dimungkinkan juga untuk membuat PHP-FPM menggunakan soket Unix yang menghindari overhead TCP. Untuk melakukannya, buka /etc/php-fpm.d/www.conf...

vi /etc/php-fpm.d/www.conf

... dan buat garis dengar terlihat sebagai berikut:

[...];listen =127.0.0.1:9000listen =/tmp/php5-fpm.sock[...]

Kemudian muat ulang PHP-FPM:

/etc/init.d/php-fpm reload

Selanjutnya buka konfigurasi nginx Anda dan semua vhost Anda dan ubah baris fastcgi_pass 127.0.0.1:9000; ke fastcgi_pass unix:/tmp/php5-fpm.sock;, mis. seperti ini:

vi /etc/nginx/conf.d/default.conf
[...] lokasi ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; termasuk fastcgi_params; }[...]

Akhirnya muat ulang nginx:

/etc/init.d/nginx memuat ulang

  • nginx:http://nginx.org/
  • nginx Wiki:http://wiki.nginx.org/
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • CentOS:http://www.centos.org/

Tentang Penulis

Falko Timme adalah pemilik dari Timme Hosting (hosting web nginx ultra-cepat). Dia adalah pengelola utama HowtoForge (sejak 2005) dan salah satu pengembang inti ISPConfig (sejak 2000). Dia juga berkontribusi pada buku O'Reilly "Linux System Administration".


Cent OS
  1. Cara Menginstal Laravel 5.x dengan Nginx dan PHP-FPM 7.1 di CentOS 7

  2. Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Ubuntu 14.04 LTS

  3. Menginstal Lighttpd Dengan PHP5 (PHP-FPM) Dan Dukungan MySQL Di Ubuntu 14.04LTS

  1. Menginstal Apache2 Dengan PHP5 Dan Dukungan MySQL Pada OpenSUSE 13.1 (LAMP)

  2. Menginstal Lighttpd Dengan PHP5 Dan Dukungan MySQL Di Ubuntu 10.04

  3. Menginstal Lighttpd Dengan PHP5 (PHP-FPM) Dan Dukungan MySQL Di Ubuntu 12.04

  1. Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Ubuntu 12.04 LTS

  2. Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Ubuntu 13.04

  3. Menginstal Nginx Dengan PHP5 Dan Dukungan MySQL Di Ubuntu 8.10