Saya sedang dalam proses menginstal ulang OS pada mesin yang akan digunakan untuk meng-host beberapa aplikasi untuk bisnis kami. Aplikasi hanya akan bersifat lokal; akses dari klien eksternal hanya akan melalui VPN.
Pengaturan sebelumnya menggunakan panel kontrol hosting (Plesk) untuk sebagian besar admin, dan saya sedang melihat menggunakan perangkat lunak lain yang serupa untuk menginstal ulang - tetapi saya pikir saya akhirnya harus belajar bagaimana semuanya bekerja. Saya dapat melakukan sebagian besar hal yang akan dilakukan oleh perangkat lunak untuk saya, tetapi saya tidak jelas tentang simbiosis dari semuanya. Ini semua adalah upaya untuk menjauhkan diri dari tanah Programmer / Programmer Konfigurasi , jika memungkinkan.
Saya tidak dapat menemukan langkah-langkah lengkap di mana pun untuk apa yang saya cari, jadi saya pikir saya akan mengajukan pertanyaan ini, dan jika orang dapat membantu saya dalam perjalanan saya akan mengedit ini dengan jawaban, dan mendokumentasikan kemajuan saya / perangkap. Semoga suatu hari nanti ini akan membantu seseorang di telepon.
Rinciannya:
- CentOS 5.5 x86_64
- httpd: Apache / 2.2.3
- MySQL: 5.0.77 (akan ditingkatkan)
- PHP: 5.1 (akan ditingkatkan)
Persyaratan:
- KEAMANAN!!
- Transfer file aman
- Akses klien aman (Sertifikat SSL dan CA)
- Penyimpanan data yang aman
- Koneksi aman ke mesin lokal lain (MySQL)
- Virtualhosts / beberapa subdomain
- Email lokal akan baik, tetapi tidak kritis
Langkah langkah:
Ketika sedang menginstal, saya memeriksa opsi Server Components dengan berpikir saya akan menggunakan admin lain yang mirip Plesk. Kalau dipikir-pikir, mengingat saya telah memutuskan untuk mencoba menempuh jalan saya sendiri, ini mungkin bukan ide terbaik.
Pengaturan pengguna, jaringan / alamat IP, dll. Pembaruan / peningkatan Yum.
Untuk meningkatkan PHP dan MySQL ke versi terbaru, saya harus melihat repo lain di luar CentOS. IUS terlihat hebat dan saya senang saya menemukannya!
Tambahkan repositori IUS ke manajer paket kami
cd /tmp
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm
rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm
yum list | grep -w \.ius\. # list all the packages in the IUS repository; use this to find PHP/MySQL version and libraries you want to install
Hapus versi lama PHP dan instal versi yang lebih baru dari IUS
rpm -qa | grep php # to list all of the installed php packages we want to remove
yum shell # open an interactive yum shell
remove php-common php-mysql php-cli #remove installed PHP components
install php53 php53-mysql php53-cli php53-common #add packages you want
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
php -v
PHP 5.3.2 (cli) (built: Apr 6 2010 18:13:45)
Tingkatkan MySQL dari repositori IUS
/etc/init.d/mysqld stop
rpm -qa | grep mysql # to see installed mysql packages
yum shell
remove mysql mysql-server #remove installed MySQL components
install mysql51 mysql51-server mysql51-devel
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
service mysqld start
mysql -v
Server version: 5.1.42-ius Distributed by The IUS Community Project
Tingkatkan instruksi milik IUS wiki: http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
dan sftp
mengakses, tanpa mengizinkan ssh
masukcd /tmp
wget http://dag.wieers.com/rpm/packages/rssh/rssh-2.3.2-1.2.el5.rf.x86_64.rpm
rpm -ivh rssh-2.3.2-1.2.el5.rf.x86_64.rpm
useradd -m -d /home/dev -s /usr/bin/rssh dev
passwd dev
Edit /etc/rssh.conf
untuk memberikan akses ke SFTP kepada pengguna rssh.
vi /etc/rssh.conf
Batalkan komentar atau tambahkan:
allowscp
allowsftp
Ini memungkinkan saya untuk terhubung ke mesin melalui protokol SFTP di Transmit (program FTP pilihan saya; saya yakin itu mirip dengan aplikasi FTP lainnya).
instruksi rssh disesuaikan (dengan apresiasi!) dari http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html .
ifconfig eth1:1 192.168.1.3 up #start up the virtual interface
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth1 ifcfg-eth1:1 #copy default script and match name to our virtual interface
vi ifcfg-eth1:1 #modify eth1:1 script
# ifcfg-eth1: 1 | ubah sehingga terlihat seperti ini:
PERANGKAT = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = yes
NAME = eth1: 1
Tambahkan lebih banyak antarmuka virtual sesuai kebutuhan dengan mengulangi. Karena ONBOOT=yes
baris dalam file ifcfg-eth1: 1, antarmuka ini akan muncul ketika sistem melakukan boot, atau jaringan memulai / me-restart.
service network restart
Mematikan antarmuka eth0: [OK]
Mematikan antarmuka eth1: [OK]
Mematikan antarmuka loopback: [OK]
Memunculkan antarmuka loopback: [OK]
Memunculkan antarmuka eth0: [OK]
Memunculkan antarmuka eth1: [OK] Memunculkan antarmuka eth1: [OK]
ping 192.168.1.3
64 byte dari 192.168.1.3: icmp_seq = 1 ttl = 64 waktu = 0,105 ms
Di bagian rssh di atas saya menambahkan pengguna untuk digunakan untuk SFTP. Di direktori home pengguna ini, saya membuat folder bernama 'https'. Di sinilah dokumen untuk situs ini akan hidup, jadi saya perlu menambahkan virtualhost yang akan menunjukkannya. Saya akan menggunakan antarmuka virtual di atas untuk situs ini (di sini disebut dev.site.local).
vi /etc/http/conf/httpd.conf
Tambahkan berikut ini ke akhir httpd.conf:
<VirtualHost 192.168.1.3:80>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Saya meletakkan file index.html dummy di direktori https hanya untuk memeriksa semuanya. Saya mencoba menjelajahinya, dan mendapat izin yang ditolak kesalahannya. Log hanya memberikan referensi yang tidak jelas tentang apa yang sedang terjadi:
[Senin 17 Mei 14:57:11 2010] [kesalahan] [klien 192.168.1.100] (13) Izin ditolak: akses ke /index.html ditolak
Saya mencoba chmod 777 et. al., tetapi tidak berhasil. Ternyata, saya perlu chmod + x direktori https dan direktori induknya.
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
Ini menyelesaikan masalah itu.
Saya menangani DNS melalui kotak Windows Server 2003 lokal kami. Namun, dokumentasi CentOS untuk BIND dapat ditemukan di sini: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
Agar SSL berfungsi, saya mengubah yang berikut di httpd.conf:
NameVirtualHost 192.168.1.3:443 #make sure this line is in httpd.conf
<VirtualHost 192.168.1.3:443> #change port to 443
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Sayangnya, saya terus mendapatkan kesalahan (Kode galat: ssl_error_rx_record_too_long) ketika mencoba mengakses halaman dengan SSL. Seperti yang ditunjukkan oleh James Hannah dengan anggun di bawah ini , saya belum mengatur lokasi sertifikat di httpd.conf, dan dengan demikian mendapatkan halaman yang dilemparkan ke bros sebagai sertifikat membuat browser menolak.
Jadi pertama-tama, saya perlu mengatur CA dan membuat file sertifikat. Saya menemukan langkah-langkah (jika tua) yang hebat pada proses di sini: http://www.debian-administration.org/articles/284 .
Berikut langkah-langkah relevan yang saya ambil dari artikel itu:
mkdir /home/CA
cd /home/CA/
mkdir newcerts private
echo '01' > serial
touch index.txt #this and the above command are for the database that will keep track of certs
Buat openssl.cnf
file di /home/CA/
dir dan edit per walkthrough yang ditautkan di atas. (Untuk referensi, file openssl.cnf saya yang sudah selesai tampak seperti ini: http://pastebin.com/raw.php?i=hnZDij4T )
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf #this creates the cacert.pem which gets distributed and imported to the browser(s)
Dimodifikasi openssl.cnf
lagi per petunjuk langkah-langkah.
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
Dimodifikasi openssl.cnf
lagi per petunjuk langkah-langkah.
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
PENTING!
Pindahkan file dan rujuk dari httpd.conf di lokasi baru
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
Saya memperbarui httpd.conf untuk mencerminkan sertifikat dan mengaktifkan SSLEngine pada:
NameVirtualHost 192.168.1.3:443
<VirtualHost 192.168.1.3:443>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
SSLEngine on
SSLCertificateFile /home/dev/certs/cert.pem
SSLCertificateKeyFile /home/dev/certs/key.pem
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Masukkan CA cert.pem di tempat yang dapat diakses web, dan unduh / impor ke browser saya. Sekarang saya dapat mengunjungi https: //dev.site.local tanpa kesalahan atau peringatan.
Dan inilah tempat saya berada. Saya akan terus mengedit ini saat saya membuat kemajuan. Setiap tips tentang cara mengkonfigurasi email SSL, dan / atau mengkonfigurasi koneksi aman ke Box lain yang akan menjadi server MySQL akan dihargai.