====== Moving web from hostgator to DigitalOcean ====== ===== 1. Install missing components on DigitalOcean ===== ==== install basic packages ==== yum install vim mc man telnet ==== create swap file for your linux server ==== Most **cloud virtual machine providers do not set up swapfiles** as part of their server provisioning. If you are running the recommended 2 GB of memory for Discourse, a swap file is technically not required, but can be helpful just **in case your server experiences memory pressure.** With a swap file, rather than **randomly terminating processes with an out of memory error**, things will slow down instead. This can be done at any time from the command line on your server. Set up a 1 GB swap file Adding a swap file gives Discourse some extra breathing room during memory-intensive operations. 1GB swap should suffice, though if you are attempting the minimum memory configuration you should set up a 2GB swap. In the shell you have opened to your droplet, do the following: - Step1: Check your swap on swapon -s - Step2: Create an empty swapfile sudo install -o root -g root -m 0600 /dev/null /swapfile - Step3: write out a 1 GB file named 'swapfile' dd if=/dev/zero of=/swapfile bs=1k count=1024k - Step4: tell linux this is the swap file: mkswap /swapfile - Step5: Activate it swapon /swapfile - Step6: Add it to the file system table so its there after reboot: echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab - Step7: Set the swappiness to 10 so its only uses as an emergency buffer sudo sysctl -w vm.swappiness=10 echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf ==== mysqld ==== * setup: yum install mysql-server.x86_64 * start: /etc/init.d/mysql start ==== httpd ==== * setup: yum install httpd.x86_64 * start: /etc/init.d/httpd start ==== php ==== * setup: yum install php.x86_64 yum install php-mysql.x86_64 ===== 2. Copy data from hostgator to Digitalocean ===== ==== create backup file for web and database on Hostgator ==== === backup web === cd ~/public_html/ tar czf babyshopvn.tar.gz babyshopvn/ === backup database === mysqldump -u'anhvc_babies' -p anhvc_babyshopvn > babyshopvn.sql ==== copy data to Digitalocean with scp ==== (To run scp, you must install openssh-clients both client and server) * check ssh connect: ssh -p 2222 anhvc@192.232.218.215 * scp scp -P 2222 anhvc@192.232.218.215:~/public_html/babyshopvn.tar.gz . scp -P 2222 anhvc@192.232.218.215:~/babyshopvn.sql . ===== 3.Import database and config to run web on DigitalOcean ===== ==== Import database ==== * create database: mysqladmin create babyshopvn; * Import database: mysql -f --default-character-set=utf8 -uroot babyshopvn < babyshopvn.sql ==== config httpd ==== === check location of httpd config file === cat /etc/init.d/httpd | grep conf => Output: # chkconfig: - 85 15 # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd if [ -f /etc/sysconfig/httpd ]; then . /etc/sysconfig/httpd # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server echo $"not reloading due to configuration syntax error" failure $"not reloading $httpd due to configuration syntax error" graceful|help|configtest|fullstatus) echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}" => config: /etc/httpd/conf/httpd.conf === check default DocumentRoot of web === cat /etc/httpd/conf/httpd.conf | grep -v '#' => DocumentRoot: DocumentRoot "/var/www/html" Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all === create Simple code in DocumentRoot to check === Create helloworld.php in /var/www/html => Check:http://128.199.236.122/helloworld.php === config Virtualhost for babies.vn === * Create babies.vn.conf in /etc/httpd/conf.d ServerName shop.babies.vn DocumentRoot "/data/www/babyshopvn" Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Allow from all ErrorLog logs/shop.babies.vn-error_log CustomLog logs/shop.babies.vn-access_log common * reload httpd: /etc/init.d/httpd reload * copy helloworld.php to /data/www/babyshopvn and check http://shop.babies.vn/helloworld.php === config source babies.vn(magento) === * change config connect to database [app/etc/local.xml] * On debug mode for magento: * [/etc/httpd/conf.d/babies.vn.conf]: SetEnv MAGE_IS_DEVELOPER_MODE "true" * index.php: ini_set('display_errors', 1); === chown the www directory === * check the user and group run Apache cat /etc/httpd/conf/httpd.conf | grep -v '#' => User apache Group apache * chown the www directory chown -R apache.apache /data/www ===== 4. Other changes ===== ==== config httpd and mysqld auto start when server reboot ==== chkconfig httpd on chkconfig mysqld on ==== Change pass of mysql ==== mysqladmin password 'newpassword' ==== secure ssh in sshd_config ==== * Edit new port for ssh Port 1362 * Generate key ssh for login with key follow [[linux:services#ssh|ssh]]. And disale allow login with password via ssh PasswordAuthentication no * secure user: AllowUsers root anhvc * change usedns in sshd.conf UseDNS no ==== config php debug ==== Follow tutorial [[php:php#config_debug_mode_in_php]]\\ Check error log in: /var/log/httpd/shop.babies.vn-error_log ==== change timezone ==== Follow tutorial [[linux:shellcommands#change_timezone]] ===== 5. Debug and fix error ===== ==== PHP error log ==== === missing php-xml === * error log: PHP Fatal error: Class 'DOMDocument' not found * fix: yum install php-xml /etc/init.d/httpd restart